예제 #1
0
int handleRecvmsg( void* firsthandlerarg, uint64_t time, uint32_t receiver,
		uint32_t sender, uint32_t communicator, uint32_t msgtype, 
		uint32_t msglength, uint32_t scltoken ) {


	nodeT *nodesender = treehash_searchnode(
		((fcbT*) firsthandlerarg)->p_hashtab, sender);
	nodeT *nodereceiver = treehash_searchnode(
		((fcbT*) firsthandlerarg)->p_hashtab, receiver);

	if ( 0 == nodesender || 0 == nodereceiver ) {

		fprintf( stderr, "otf2vtf WARNING: undefined process %u or %u, record ignored\n",
			sender, receiver );
			
		return OTF_RETURN_OK;
	}

	FileIOEndQueue_check( &(((fcbT*) firsthandlerarg)->FileIOQueue), time, firsthandlerarg );
	

	return ( 0 == VTF3_WriteRecvmsg( ((fcbT*) firsthandlerarg)->fcb, time,
		nodereceiver->processi, nodesender->processi,
		communicator, msgtype, msglength, scltoken ) )
		? OTF_RETURN_ABORT : OTF_RETURN_OK;
}
예제 #2
0
void elg_readcb_GET_1TE(elg_ui4 lid, elg_d8 time, elg_ui4 slid, elg_ui4 rmaid,
       void* userdata) {
  lid = locmap[lid];
  slid = locmap[slid];
  wbytes += VTF3_WriteRecvmsg(fcb, time*1.0e+10, (unsigned int) lid,
                              (unsigned int) slid, -1,
                              (int) (rmatag+2), /*???*/ 0, VTF3_SCLNONE);
  lasttime = time;
}
예제 #3
0
void elg_readcb_MPI_RECV(elg_ui4 lid, elg_d8 time, elg_ui4 slid, elg_ui4 cid,
       elg_ui4 tag, void* userdata) {
  lid = locmap[lid];
  slid = locmap[slid];
  wbytes += VTF3_WriteRecvmsg(fcb, time*1.0e+10, (unsigned int) lid,
                              (unsigned int) slid, (int) cid,
                              (int) tag, /*???*/ 0, VTF3_SCLNONE);
  lasttime = time;
}