static void response(void *msg) { char *r, *m; int size, ref; m = (char *) msg + CmiMsgHeaderSizeBytes; size = *((int *) m); m += sizeof(int); ref = *((int *) m); m += sizeof(int); r = (char *) malloc(size); memcpy(r, m, size); if (CpvAccess(consumerFunction) == 0) { CpvAccess(responses)[ref].ref = ref; CpvAccess(responses)[ref].response = r; } else { CpvAccess(consumerFunction) (r, ref); } if (--CpvAccess(counter) == 0) { CsdExitScheduler(); } }
extern "C" void exit_sched(void* msg) { // CmiPrintf("Exiting scheduler on %d\n",CmiMyPe()); CsdExitScheduler(); }
CmiHandler exitHandlerFunc(char *msg) { CmiFree(msg); CsdExitScheduler(); return 0; }
static void stopHandler(void *msg) { CsdExitScheduler(); ConverseExit(); }