⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch3u_init_sock.c

📁 fortran并行计算包
💻 C
字号:
/* -*- Mode: C; c-basic-offset:4 ; -*- *//* *  (C) 2001 by Argonne National Laboratory. *      See COPYRIGHT in top-level directory. */#include "ch3usockconf.h"#include "mpidi_ch3_impl.h"#include "pmi.h"#include "mpidu_sock.h"#ifdef HAVE_UNISTD_H#include <unistd.h>#endif#ifdef HAVE_SYS_PARAM_H#include <sys/param.h>#endif/*  MPIDI_CH3U_Init_sock - does socket specific channel initialization *     publish_bc_p - if non-NULL, will be a pointer to the original position  *                    of the bc_val and should *                    do KVS Put/Commit/Barrier on business card before  *                    returning *     bc_key_p     - business card key buffer pointer.   *     bc_val_p     - business card value buffer pointer, updated to the next *                    available location or freed if published. *     val_max_sz_p - ptr to maximum value buffer size reduced by the number  *                    of characters written *                                */#undef FUNCNAME#define FUNCNAME MPIDI_CH3U_Init_sock#undef FCNAME#define FCNAME MPIDI_QUOTE(FUNCNAME)int MPIDI_CH3U_Init_sock(int has_parent, MPIDI_PG_t *pg_p, int pg_rank,			 char **bc_val_p, int *val_max_sz_p){    int mpi_errno = MPI_SUCCESS;    int pmi_errno;    int pg_size;    int p;    /* FIXME: Why are these unused? */    MPIU_UNREFERENCED_ARG(has_parent);    MPIU_UNREFERENCED_ARG(pg_rank);    /*     * Initialize the VCs associated with this process group (and thus      * MPI_COMM_WORLD)     */    /* FIXME: Get the size from the process group */    pmi_errno = PMI_Get_size(&pg_size);    if (pmi_errno != 0) {	MPIU_ERR_SETANDJUMP1(mpi_errno,MPI_ERR_OTHER, "**pmi_get_size",			     "**pmi_get_size %d", pmi_errno);    }    /* FIXME: This should probably be the same as MPIDI_VC_InitSock.  If       not, why not? */    /* FIXME: Note that MPIDI_CH3_VC_Init sets state, sendq_head and tail.       so this should be MPIDI_CH3_VC_Init( &pg_p->vct[p] );       followed by MPIDI_VC_InitSock( ditto );         In fact, there should be a single VC_Init call here */    /* FIXME: Why isn't this MPIDI_VC_Init( vc, NULL, 0 )? */    for (p = 0; p < pg_size; p++)    {	MPIDI_CH3I_VC *vcch = (MPIDI_CH3I_VC *)pg_p->vct[p].channel_private;	vcch->sendq_head = NULL;	vcch->sendq_tail = NULL;	vcch->state      = MPIDI_CH3I_VC_STATE_UNCONNECTED;	vcch->sock       = MPIDU_SOCK_INVALID_SOCK;	vcch->conn       = NULL;    }        mpi_errno = MPIDI_CH3U_Get_business_card_sock(pg_rank, 						  bc_val_p, val_max_sz_p);    if (mpi_errno != MPI_SUCCESS) {	MPIU_ERR_SETANDJUMP(mpi_errno,MPI_ERR_OTHER, "**init_buscard");    } fn_exit:        return mpi_errno;     fn_fail:    /* FIXME: This doesn't belong here, since the pg is not created in        this routine */    /* --BEGIN ERROR HANDLING-- */    if (pg_p != NULL)     {	MPIDI_PG_Destroy(pg_p);    }    goto fn_exit;    /* --END ERROR HANDLING-- */}/* This routine initializes Sock-specific elements of the VC */int MPIDI_VC_InitSock( MPIDI_VC_t *vc ) {    MPIDI_CH3I_VC *vcch = (MPIDI_CH3I_VC *)vc->channel_private;    vcch->sock               = MPIDU_SOCK_INVALID_SOCK;    vcch->conn               = NULL;    return 0;}#ifdef USE_DBG_LOGGINGconst char * MPIDI_Conn_GetStateString(int state) {    const char *name = "unknown";    switch (state) {    case CONN_STATE_UNCONNECTED:     name = "CONN_STATE_UNCONNECTED"; break;    case CONN_STATE_LISTENING:       name = "CONN_STATE_LISTENING"; break;    case CONN_STATE_CONNECTING:      name = "CONN_STATE_CONNECTING"; break;    case CONN_STATE_CONNECT_ACCEPT:  name = "CONN_STATE_CONNECT_ACCEPT"; break;     case CONN_STATE_OPEN_CSEND:      name = "CONN_STATE_OPEN_CSEND"; break;    case CONN_STATE_OPEN_CRECV:      name = "CONN_STATE_OPEN_CRECV"; break;    case CONN_STATE_OPEN_LRECV_PKT:  name = "CONN_STATE_OPEN_LRECV_PKT"; break;    case CONN_STATE_OPEN_LRECV_DATA: name = "CONN_STATE_OPEN_LRECV_DATA"; break;    case CONN_STATE_OPEN_LSEND:      name = "CONN_STATE_OPEN_LSEND"; break;    case CONN_STATE_CONNECTED:       name = "CONN_STATE_CONNECTED"; break;    case CONN_STATE_CLOSING:         name = "CONN_STATE_CLOSING"; break;    case CONN_STATE_CLOSED:          name = "CONN_STATE_CLOSED"; break;    case CONN_STATE_FAILED:          name = "CONN_STATE_FAILE"; break;    }    return name;}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -