int MPI_Comm_free(MPI_Comm *comm) { pList sendlist, recvlist; int size; Comm *mycomm; mycomm=mpi_handle_to_ptr(*comm); /* (Comm *)(*comm) */ sendlist=mycomm->sendlist; recvlist=mycomm->recvlist; size=AP_list_size(sendlist); if (size!=0) fprintf(stderr,"MPI_Comm_free: warning: %d pending send reqs\n", size); AP_list_free(sendlist); size=AP_list_size(recvlist); if (size!=0) fprintf(stderr,"MPI_Comm_free: warning: %d pending receive reqs\n", size); AP_list_free(recvlist); mpi_free_handle(*comm); /* free(mycomm); */ *comm=MPI_COMM_NULL; return(MPI_SUCCESS); }
int MPI_Test(MPI_Request *request, int *flag, MPI_Status *status) { Req *req; if (*request==MPI_REQUEST_NULL) { status->MPI_TAG= MPI_ANY_TAG; status->MPI_SOURCE= MPI_ANY_SOURCE; *flag=1; return(MPI_SUCCESS); } req=mpi_handle_to_ptr(*request); *flag=req->complete; if (*flag) { status->MPI_SOURCE= req->source; status->MPI_TAG= req->tag; mpi_free_handle(*request); *request=MPI_REQUEST_NULL; } return(MPI_SUCCESS); }
int MPI_Request_free(MPI_Request * req) { mpi_free_handle(*req); *req = MPI_REQUEST_NULL; return (MPI_SUCCESS); }