#####: 28:{
-: 29: /* FIXME: This "unreferenced_arg" is an example of a problem with the
-: 30: API (unneeded level argument) or the code (failure to check the
-: 31: level argument). Inserting these "unreference_arg" macros erroneously
-: 32: suggests that the code is correct with this ununsed argument, and thus
-: 33: commits the grave harm of obscuring a real problem */
-: 34: MPIU_UNREFERENCED_ARG(level);
-: 35: {
-: 36: va_list list;
-: 37:
#####: 38: if (MPIR_Process.comm_world)
-: 39: {
#####: 40: MPIU_dbglog_printf("[%d] %s(): ", MPIR_Process.comm_world->rank, func);
-: 41: }
-: 42: else
-: 43: {
#####: 44: MPIU_dbglog_printf("[-1] %s(): ", func);
-: 45: }
#####: 46: va_start(list, fmt);
#####: 47: MPIU_dbglog_vprintf(fmt, list);
#####: 48: va_end(list);
#####: 49: MPIU_dbglog_printf("\n");
#####: 50: fflush(stdout);
-: 51: }
#####: 52:}
-: 53:
-: 54:#undef MPIDI_err_printf
-: 55:void MPIDI_err_printf(char * func, char * fmt, ...)
#####: 56:{
-: 57: {
-: 58: va_list list;
-: 59:
#####: 60: if (MPIR_Process.comm_world)
-: 61: {
#####: 62: printf("[%d] ERROR - %s(): ", MPIR_Process.comm_world->rank, func);
-: 63: }
-: 64: else
-: 65: {
#####: 66: printf("[-1] ERROR - %s(): ", func);
-: 67: }
#####: 68: va_start(list, fmt);
#####: 69: vprintf(fmt, list);
#####: 70: va_end(list);
#####: 71: printf("\n");
#####: 72: fflush(stdout);
-: 73: }
#####: 74:}
-: 75:
-: 76:/* FIXME: It would be much better if the routine to print packets used
-: 77: routines defined by packet type, making it easier to modify the handling
-: 78: of packet types (and allowing channels to customize the printing
-: 79: of packets). For example, an array of function pointers, indexed by
-: 80: packet type, could be used.
-: 81: Also, these routines should not use MPIU_DBG_PRINTF, instead they should
-: 82: us a simple fprintf with a style allowance (so that the style checker
-: 83: won't flag the use as a possible problem).
-: 84:
-: 85: This should switch to using a table of functions
-: 86:
-: 87: MPIDI_PktPrintFunctions[pkt->type](stdout,pkt);
-: 88:
-: 89:*/
-: 90:
-: 91:#ifdef MPICH_DBG_OUTPUT
-: 92:void MPIDI_DBG_Print_packet(MPIDI_CH3_Pkt_t *pkt)
-: 93:{
-: 94: {
-: 95: MPIU_DBG_PRINTF(("MPIDI_CH3_Pkt_t:\n"));
-: 96: switch(pkt->type)
-: 97: {
-: 98: case MPIDI_CH3_PKT_EAGER_SEND:
-: 99: MPIDI_CH3_PktPrint_EagerSend( stdout, pkt );
-: 100: break;
-: 101: case MPIDI_CH3_PKT_READY_SEND:
-: 102: MPIDI_CH3_PktPrint_ReadySend( stdout, pkt );
-: 103: break;
-: 104:
-: 105: case MPIDI_CH3_PKT_EAGER_SYNC_SEND:
-: 106: MPIDI_CH3_PktPrint_EagerSyncSend( stdout, pkt );
-: 107: break;
-: 108: case MPIDI_CH3_PKT_EAGER_SYNC_ACK:
-: 109: MPIDI_CH3_PktPrint_EagerSyncAck( stdout, pkt );
-: 110: break;
-: 111:
-: 112: case MPIDI_CH3_PKT_RNDV_REQ_TO_SEND:
-: 113: MPIDI_CH3_PktPrint_RndvReqToSend( stdout, pkt );
-: 114: break;
-: 115: case MPIDI_CH3_PKT_RNDV_CLR_TO_SEND:
-: 116: MPIDI_CH3_PktPrint_RndvClrToSend( stdout, pkt );
-: 117: break;
-: 118: case MPIDI_CH3_PKT_RNDV_SEND:
-: 119: MPIDI_CH3_PktPrint_RndvSend( stdout, pkt );
-: 120: break;
-: 121:
-: 122: case MPIDI_CH3_PKT_CANCEL_SEND_REQ:
-: 123: MPIDI_CH3_PktPrint_CancelSendReq( stdout, pkt );
-: 124: break;
-: 125: case MPIDI_CH3_PKT_CANCEL_SEND_RESP:
-: 126: MPIDI_CH3_PktPrint_CancelSendResp( stdout, pkt );
-: 127: break;
-: 128:
-: 129: /* FIXME: Move these RMA descriptions into the RMA code files */
-: 130: case MPIDI_CH3_PKT_PUT:
-: 131: MPIDI_CH3_PktPrint_Put( stdout, pkt );
-: 132: break;
-: 133: case MPIDI_CH3_PKT_GET:
-: 134: MPIDI_CH3_PktPrint_Get( stdout, pkt );
-: 135: break;
-: 136: case MPIDI_CH3_PKT_GET_RESP:
-: 137: MPIDI_CH3_PktPrint_GetResp( stdout, pkt );
-: 138: break;
-: 139: case MPIDI_CH3_PKT_ACCUMULATE:
-: 140: MPIDI_CH3_PktPrint_Accumulate( stdout, pkt );
-: 141: break;
-: 142: case MPIDI_CH3_PKT_LOCK:
-: 143: MPIDI_CH3_PktPrint_Lock( stdout, pkt );
-: 144: break;
-: 145: case MPIDI_CH3_PKT_LOCK_PUT_UNLOCK:
-: 146: MPIDI_CH3_PktPrint_LockPutUnlock( stdout, pkt );
-: 147: break;
-: 148: case MPIDI_CH3_PKT_LOCK_ACCUM_UNLOCK:
-: 149: MPIDI_CH3_PktPrint_LockAccumUnlock( stdout, pkt );
-: 150: break;
-: 151: case MPIDI_CH3_PKT_LOCK_GET_UNLOCK:
-: 152: MPIDI_CH3_PktPrint_LockGetUnlock( stdout, pkt );
-: 153: break;
-: 154: case MPIDI_CH3_PKT_PT_RMA_DONE:
-: 155: MPIDI_CH3_PktPrint_PtRMADone( stdout, pkt );
-: 156: break;
-: 157: case MPIDI_CH3_PKT_LOCK_GRANTED:
-: 158: MPIDI_CH3_PktPrint_LockGranted( stdout, pkt );
-: 159: break;
-: 160: /*
-: 161: case MPIDI_CH3_PKT_SHARED_LOCK_OPS_DONE:
-: 162: MPIU_DBG_PRINTF((" type ......... MPIDI_CH3_PKT_SHARED_LOCK_OPS_DONE\n"));
-: 163: MPIU_DBG_PRINTF((" source ....... 0x%08X\n", pkt->shared_lock_ops_done.source_win_handle));
-: 164: break;
-: 165: */
-: 166: case MPIDI_CH3_PKT_FLOW_CNTL_UPDATE:
-: 167: MPIU_DBG_PRINTF((" FLOW_CNTRL_UPDATE\n"));
-: 168: break;
-: 169:
-: 170: case MPIDI_CH3_PKT_CLOSE:
-: 171: MPIDI_CH3_PktPrint_Close( stdout, pkt );
-: 172: break;
-: 173:
-: 174: default:
-: 175: MPIU_DBG_PRINTF((" INVALID PACKET\n"));
-: 176: MPIU_DBG_PRINTF((" unknown type ... %d\n", pkt->type));
-: 177: MPIU_DBG_PRINTF((" type .......... EAGER_SEND\n"));
-: 178: MPIU_DBG_PRINTF((" sender_reqid . 0x%08X\n", pkt->eager_send.sender_req_id));
-: 179: MPIU_DBG_PRINTF((" context_id ... %d\n", pkt->eager_send.match.parts.context_id));
-: 180: MPIU_DBG_PRINTF((" data_sz ...... %d\n", pkt->eager_send.data_sz));
-: 181: MPIU_DBG_PRINTF((" tag .......... %d\n", pkt->eager_send.match.parts.tag));
-: 182: MPIU_DBG_PRINTF((" rank ......... %d\n", pkt->eager_send.match.parts.rank));
-: 183:#ifdef MPID_USE_SEQUENCE_NUMBERS
-: 184: MPIU_DBG_PRINTF((" seqnum ....... %d\n", pkt->eager_send.seqnum));
-: 185:#endif
-: 186: MPIU_DBG_PRINTF((" type .......... REQ_TO_SEND\n"));
-: 187: MPIU_DBG_PRINTF((" sender_reqid . 0x%08X\n", pkt->rndv_req_to_send.sender_req_id));
-: 188: MPIU_DBG_PRINTF((" context_id ... %d\n", pkt->rndv_req_to_send.match.parts.context_id));
-: 189: MPIU_DBG_PRINTF((" data_sz ...... %d\n", pkt->rndv_req_to_send.data_sz));
-: 190: MPIU_DBG_PRINTF((" tag .......... %d\n", pkt->rndv_req_to_send.match.parts.tag));
-: 191: MPIU_DBG_PRINTF((" rank ......... %d\n", pkt->rndv_req_to_send.match.parts.rank));
-: 192:#ifdef MPID_USE_SEQUENCE_NUMBERS
-: 193: MPIU_DBG_PRINTF((" seqnum ....... %d\n", pkt->rndv_req_to_send.seqnum));
-: 194:#endif
-: 195: MPIU_DBG_PRINTF((" type .......... CLR_TO_SEND\n"));
-: 196: MPIU_DBG_PRINTF((" sender_reqid . 0x%08X\n", pkt->rndv_clr_to_send.sender_req_id));
-: 197: MPIU_DBG_PRINTF((" recvr_reqid .. 0x%08X\n", pkt->rndv_clr_to_send.receiver_req_id));
-: 198: MPIU_DBG_PRINTF((" type .......... RNDV_SEND\n"));
-: 199: MPIU_DBG_PRINTF((" recvr_reqid .. 0x%08X\n", pkt->rndv_send.receiver_req_id));
-: 200: MPIU_DBG_PRINTF((" type .......... CANCEL_SEND\n"));
-: 201: MPIU_DBG_PRINTF((" context_id ... %d\n", pkt->cancel_send_req.match.parts.context_id));
-: 202: MPIU_DBG_PRINTF((" tag .......... %d\n", pkt->cancel_send_req.match.parts.tag));
-: 203: MPIU_DBG_PRINTF((" rank ......... %d\n", pkt->cancel_send_req.match.parts.rank));
-: 204: MPIU_DBG_PRINTF((" sender_reqid . 0x%08X\n", pkt->cancel_send_req.sender_req_id));
-: 205: MPIU_DBG_PRINTF((" type .......... CANCEL_SEND_RESP\n"));
-: 206: MPIU_DBG_PRINTF((" sender_reqid . 0x%08X\n", pkt->cancel_send_resp.sender_req_id));
-: 207: MPIU_DBG_PRINTF((" ack .......... %d\n", pkt->cancel_send_resp.ack));
-: 208: break;
-: 209: }
-: 210: }
-: 211:}
-: 212:#endif
-: 213:
-: 214:
-: 215:const char * MPIDI_VC_GetStateString(int state)
#####: 216:{
#####: 217: switch (state)
-: 218: {
-: 219: case MPIDI_VC_STATE_INACTIVE:
#####: 220: return "MPIDI_VC_STATE_INACTIVE";
-: 221: case MPIDI_VC_STATE_ACTIVE:
#####: 222: return "MPIDI_VC_STATE_ACTIVE";
-: 223: case MPIDI_VC_STATE_LOCAL_CLOSE:
#####: 224: return "MPIDI_VC_STATE_LOCAL_CLOSE";
-: 225: case MPIDI_VC_STATE_REMOTE_CLOSE:
#####: 226: return "MPIDI_VC_STATE_REMOTE_CLOSE";
-: 227: case MPIDI_VC_STATE_CLOSE_ACKED:
#####: 228: return "MPIDI_VC_STATE_CLOSE_ACKED";
-: 229: default:
#####: 230: return "unknown";
-: 231: }
-: 232:}
-: 233:
-: 234:/* This routine is not thread safe and should only be used while
-: 235: debugging. It is used to encode a brief description of a message
-: 236: packet into a string to make it easy to include in the message log
-: 237: output (with no newlines to simplify extracting info from the log file)
-: 238:*/
-: 239:const char *MPIDI_Pkt_GetDescString( MPIDI_CH3_Pkt_t *pkt )
#####: 240:{
-: 241: static char pktmsg[256];
-: 242:
-: 243: /* For data messages, the string (...) is (context,tag,rank,size) */
#####: 244: switch(pkt->type) {
-: 245: case MPIDI_CH3_PKT_EAGER_SEND:
#####: 246: MPIU_Snprintf( pktmsg, sizeof(pktmsg),
-: 247: "EAGER_SEND - (%d,%d,%d,)" MPIDI_MSG_SZ_FMT,
-: 248: pkt->eager_send.match.parts.context_id,
-: 249: (int)pkt->eager_send.match.parts.tag,
-: 250: pkt->eager_send.match.parts.rank,
-: 251: pkt->eager_send.data_sz );
#####: 252: break;
-: 253: case MPIDI_CH3_PKT_EAGER_SYNC_SEND:
#####: 254: MPIU_Snprintf( pktmsg, sizeof(pktmsg),
-: 255: "EAGER_SYNC_SEND - (%d,%d,%d,)" MPIDI_MSG_SZ_FMT " req=%d",
-: 256: pkt->eager_sync_send.match.parts.context_id,
-: 257: (int)pkt->eager_sync_send.match.parts.tag,
-: 258: pkt->eager_sync_send.match.parts.rank,
-: 259: pkt->eager_sync_send.data_sz,
-: 260: pkt->eager_sync_send.sender_req_id );
#####: 261: break;
-: 262: case MPIDI_CH3_PKT_EAGER_SYNC_ACK:
#####: 263: MPIU_Snprintf( pktmsg, sizeof(pktmsg),
-: 264: "EAGER_SYNC_ACK - req=%d",
-: 265: pkt->eager_sync_ack.sender_req_id );
#####: 266: break;
-: 267: case MPIDI_CH3_PKT_READY_SEND:
#####: 268: MPIU_Snprintf( pktmsg, sizeof(pktmsg),
-: 269: "READY_SEND - (%d,%d,%d,)" MPIDI_MSG_SZ_FMT,
-: 270: pkt->ready_send.match.parts.context_id,
-: 271: (int)pkt->ready_send.match.parts.tag,
-: 272: pkt->ready_send.match.parts.rank,
-: 273: pkt->ready_send.data_sz );
#####: 274: break;
-: 275: case MPIDI_CH3_PKT_RNDV_REQ_TO_SEND:
#####: 276: MPIU_Snprintf( pktmsg, sizeof(pktmsg),
-: 277: "RNDV_REQ_TO_SEND - (%d,%d,%d,)" MPIDI_MSG_SZ_FMT " req=%d",
-: 278: pkt->rndv_req_to_send.match.parts.context_id,
-: 279: (int)pkt->rndv_req_to_send.match.parts.tag,
-: 280: pkt->rndv_req_to_send.match.parts.rank,
-: 281: pkt->rndv_req_to_send.data_sz,
-: 282: pkt->rndv_req_to_send.sender_req_id );
#####: 283: break;
-: 284: case MPIDI_CH3_PKT_RNDV_CLR_TO_SEND:
#####: 285: MPIU_Snprintf( pktmsg, sizeof(pktmsg),
-: 286: "RNDV_CLRTO_SEND - req=%d, recv req=%d",
-: 287: pkt->rndv_clr_to_send.sender_req_id,
-: 288: pkt->rndv_clr_to_send.receiver_req_id );
#####: 289: break;
-: 290: case MPIDI_CH3_PKT_RNDV_SEND:
#####: 291: MPIU_Snprintf( pktmsg, sizeof(pktmsg),
-: 292: "RNDV_SEND - recv req=%d",
-: 293: pkt->rndv_send.receiver_req_id );
#####: 294: break;
-: 295: case MPIDI_CH3_PKT_CANCEL_SEND_REQ:
#####: 296: MPIU_Snprintf( pktmsg, sizeof(pktmsg),
-: 297: "CANCEL_SEND_REQ - req=%d",
-: 298: pkt->cancel_send_req.sender_req_id );
#####: 299: break;
-: 300: case MPIDI_CH3_PKT_CANCEL_SEND_RESP:
#####: 301: MPIU_Snprintf( pktmsg, sizeof(pktmsg),
-: 302: "CANCEL_SEND_RESP - req=%d ack=%d",
-: 303: pkt->cancel_send_resp.sender_req_id,
-: 304: pkt->cancel_send_resp.ack );
#####: 305: break;
-: 306: case MPIDI_CH3_PKT_PUT:
#####: 307: MPIU_Snprintf( pktmsg, sizeof(pktmsg),
-: 308: "PUT - (%p,%d,0x%08X)",
-: 309: pkt->put.addr,
-: 310: pkt->put.count,
-: 311: pkt->put.target_win_handle );
#####: 312: break;
-: 313: case MPIDI_CH3_PKT_GET:
#####: 314: MPIU_Snprintf( pktmsg, sizeof(pktmsg),
-: 315: "GET - (%p,%d,0x%08X) req=%d",
-: 316: pkt->get.addr,
-: 317: pkt->get.count,
-: 318: pkt->get.target_win_handle,
-: 319: pkt->get.request_handle );
#####: 320: break;
-: 321: case MPIDI_CH3_PKT_GET_RESP:
#####: 322: MPIU_Snprintf( pktmsg, sizeof(pktmsg),
-: 323: "GET_RESP - req=%d",
-: 324: pkt->get_resp.request_handle );
#####: 325: break;
-: 326: case MPIDI_CH3_PKT_ACCUMULATE:
#####: 327: MPIU_Snprintf( pktmsg, sizeof(pktmsg),
-: 328: "ACCUMULATE - (%p,%d,0x%08X)",
-: 329: pkt->accum.addr,
-: 330: pkt->accum.count,
-: 331: pkt->accum.target_win_handle );
#####: 332: break;
-: 333: case MPIDI_CH3_PKT_LOCK:
#####: 334: MPIU_Snprintf( pktmsg, sizeof(pktmsg),
-: 335: "LOCK - %d",
-: 336: pkt->lock.target_win_handle );
#####: 337: break;
-: 338: case MPIDI_CH3_PKT_LOCK_PUT_UNLOCK:
#####: 339: MPIU_Snprintf( pktmsg, sizeof(pktmsg),
-: 340: "PUT_UNLOCK - (%p,%d,0x%08X)",
-: 341: pkt->lock_put_unlock.addr,
-: 342: pkt->lock_put_unlock.count,
-: 343: pkt->lock_put_unlock.target_win_handle );
#####: 344: break;
-: 345: case MPIDI_CH3_PKT_LOCK_ACCUM_UNLOCK:
#####: 346: MPIU_Snprintf( pktmsg, sizeof(pktmsg),
-: 347: "LOCK_ACCUM_UNLOCK - (%p,%d,0x%08X)",
-: 348: pkt->lock_accum_unlock.addr,
-: 349: pkt->lock_accum_unlock.count,
-: 350: pkt->lock_accum_unlock.target_win_handle );
#####: 351: break;
-: 352: case MPIDI_CH3_PKT_LOCK_GET_UNLOCK:
#####: 353: MPIU_Snprintf( pktmsg, sizeof(pktmsg),
-: 354: "LOCK_GET_UNLOCK - (%p,%d,0x%08X) req=%d",
-: 355: pkt->lock_get_unlock.addr,
-: 356: pkt->lock_get_unlock.count,
-: 357: pkt->lock_get_unlock.target_win_handle,
-: 358: pkt->lock_get_unlock.request_handle );
#####: 359: break;
-: 360: case MPIDI_CH3_PKT_PT_RMA_DONE:
-: 361: /* There is no rma_done packet type */
#####: 362: MPIU_Snprintf( pktmsg, sizeof(pktmsg),
-: 363: "RMA_DONE - 0x%08X",
-: 364: pkt->lock_accum_unlock.source_win_handle );
#####: 365: break;
-: 366: case MPIDI_CH3_PKT_LOCK_GRANTED:
#####: 367: MPIU_Snprintf( pktmsg, sizeof(pktmsg),
-: 368: "LOCK_GRANTED - 0x%08X",
-: 369: pkt->lock_granted.source_win_handle );
#####: 370: break;
-: 371: case MPIDI_CH3_PKT_FLOW_CNTL_UPDATE:
#####: 372: MPIU_Snprintf( pktmsg, sizeof(pktmsg),
-: 373: "FLOW_CNTL_UPDATE" );
#####: 374: break;
-: 375: case MPIDI_CH3_PKT_CLOSE:
#####: 376: MPIU_Snprintf( pktmsg, sizeof(pktmsg),
-: 377: "CLOSE ack=%d",
-: 378: pkt->close.ack );
#####: 379: break;
-: 380:
-: 381: default:
#####: 382: MPIU_Snprintf( pktmsg, sizeof(pktmsg),
-: 383: "INVALID PACKET type=%d", pkt->type );
-: 384: break;
-: 385: }
-: 386:
#####: 387: return pktmsg;
-: 388:}
|