void chksum_reph(gasnet_token_t token, void *buf, size_t nbytes, gasnet_handlerarg_t iter) { gasnett_atomic_increment(&chksum_received, 0); assert_always(iter < chksum_iters && iter >= 0); assert_always(nbytes == CHKSUM_TOTAL); monoseed_trace(iter, _mseed[iter].seed, &_mseed[iter].chksum, buf); if (memcmp(&_mseed[iter].chksum, buf, CHKSUM_LENGTH) == 0) gasnett_atomic_increment(&chksum_success, 0); else { printf("iter %3d failed! chksum_local=", (int)iter); CHKSUM_DUMP(&_mseed[iter].chksum); printf(" chksum_remote="); CHKSUM_DUMP(buf); printf("\n"); } return; }
/* * Format is * AMRequestShort2(dest, chksum_reqh, i, seed) * * chksum_reqh(i, seed) generates the checksum and replies with a Medium * * AMReplyMedium(token, chksum_reph, src, nbytes, i) * * chksum_reph(i, src, nbytes) compares src[nbytes] to its copy of the * checksum at i */ void chksum_reqh(gasnet_token_t token, gasnet_handlerarg_t iter, gasnet_handlerarg_t seed) { unsigned char chksum_reqbuf[CHKSUM_TOTAL]; gasnett_atomic_increment(&chksum_received, 0); chksum_gen(seed, &chksum_reqbuf); monoseed_trace(iter, seed, &chksum_reqbuf, NULL); GASNET_Safe( gasnet_AMReplyMedium1(token, 202, &chksum_reqbuf, CHKSUM_TOTAL, iter)); return; }
void pong_longhandler(gasnet_token_t token, void *buf, size_t nbytes, gasnet_handlerarg_t iter, gasnet_handlerarg_t chunkidx) { INIT_CHECKS(); validate_chunk("Long Reply", buf, nbytes, iter, chunkidx); gasnett_atomic_increment(&pong_recvd,0); }
void ping_longhandler(gasnet_token_t token, void *buf, size_t nbytes) { gasnett_atomic_increment(&amcount,0); }
void ping_shorthandler(gasnet_token_t token) { gasnett_atomic_increment(&amcount,0); }