- /* Create 3 requests to cancel, plus one to use.
- Then receive one message and exit */
- for (i=0; i<4; i++) {
- bufs[i] = (char *) malloc( bufsizes[i] );
- MPI_Irecv( bufs[i], bufsizes[i], MPI_CHAR, source,
- i, MPI_COMM_WORLD, &req[i] );
- }
- /* Now, cancel them in a more interesting order, to ensure that the
- queue operation work properly */
- MPI_Cancel( &req[2] );
- MPI_Wait( &req[2], &status );
- MTestPrintfMsg( 1, "Completed wait on irecv[2]\n" );
- MPI_Test_cancelled( &status, &flag );
- if (!flag) {
- errs ++;
- printf( "Failed to cancel a Irecv[2] request\n" );
- fflush(stdout);
- }
- MPI_Cancel( &req[3] );
- MPI_Wait( &req[3], &status );
- MTestPrintfMsg( 1, "Completed wait on irecv[3]\n" );
- MPI_Test_cancelled( &status, &flag );
- if (!flag) {
- errs ++;
- printf( "Failed to cancel a Irecv[3] request\n" );
- fflush(stdout);
- }
- MPI_Cancel( &req[0] );
- MPI_Wait( &req[0], &status );
- MTestPrintfMsg( 1, "Completed wait on irecv[0]\n" );
- MPI_Test_cancelled( &status, &flag );
- if (!flag) {
- errs ++;
- printf( "Failed to cancel a Irecv[0] request\n" );
- fflush(stdout);
- }
- MPI_Wait( &req[1], &status );
- MPI_Test_cancelled( &status, &flag );
- if (flag) {
- errs ++;
- printf( "Incorrectly cancelled Irecv[1]\n" ); fflush(stdout);
- }
+ /* Create 3 requests to cancel, plus one to use.
+ * Then receive one message and exit */
+ for (i = 0; i < 4; i++) {
+ bufs[i] = (char *) malloc(bufsizes[i]);
+ MPI_Irecv(bufs[i], bufsizes[i], MPI_CHAR, source, i, MPI_COMM_WORLD, &req[i]);
+ }
+ /* Now, cancel them in a more interesting order, to ensure that the
+ * queue operation work properly */
+ MPI_Cancel(&req[2]);
+ MPI_Wait(&req[2], &status);
+ MTestPrintfMsg(1, "Completed wait on irecv[2]\n");
+ MPI_Test_cancelled(&status, &flag);
+ if (!flag) {
+ errs++;
+ printf("Failed to cancel a Irecv[2] request\n");
+ fflush(stdout);
+ }
+ MPI_Cancel(&req[3]);
+ MPI_Wait(&req[3], &status);
+ MTestPrintfMsg(1, "Completed wait on irecv[3]\n");
+ MPI_Test_cancelled(&status, &flag);
+ if (!flag) {
+ errs++;
+ printf("Failed to cancel a Irecv[3] request\n");
+ fflush(stdout);
+ }
+ MPI_Cancel(&req[0]);
+ MPI_Wait(&req[0], &status);
+ MTestPrintfMsg(1, "Completed wait on irecv[0]\n");
+ MPI_Test_cancelled(&status, &flag);
+ if (!flag) {
+ errs++;
+ printf("Failed to cancel a Irecv[0] request\n");
+ fflush(stdout);
+ }
+ MPI_Wait(&req[1], &status);
+ MPI_Test_cancelled(&status, &flag);
+ if (flag) {
+ errs++;
+ printf("Incorrectly cancelled Irecv[1]\n");
+ fflush(stdout);
+ }
+ for (i = 0; i < 4; i++) {
+ free(bufs[i]);
+ }