static void ompi_mtl_mxm_send_completion_cb(void *context) { mca_mtl_mxm_request_t *mtl_mxm_request = context; if (mtl_mxm_request->free_after) { free(mtl_mxm_request->buf); } ompi_mtl_mxm_to_mpi_status(mtl_mxm_request->mxm.base.error, &mtl_mxm_request->super.ompi_req->req_status); mtl_mxm_request->super.completion_callback(&mtl_mxm_request->super); }
static void ompi_mtl_mxm_recv_completion_cb(void *context) { mca_mtl_mxm_request_t *req = (mca_mtl_mxm_request_t *) context; struct ompi_request_t *ompi_req = req->super.ompi_req; mxm_recv_req_t *mxm_recv_req = &req->mxm.recv; /* Set completion status and envelope */ ompi_mtl_mxm_to_mpi_status(mxm_recv_req->base.error, &ompi_req->req_status); ompi_req->req_status.MPI_TAG = mxm_recv_req->completion.sender_tag; ompi_req->req_status.MPI_SOURCE = mxm_recv_req->completion.sender_imm; ompi_req->req_status._ucount = mxm_recv_req->completion.actual_len; req->super.completion_callback(&req->super); }
static void ompi_mtl_mxm_recv_completion_cb(void *context) { mca_mtl_mxm_request_t *req = (mca_mtl_mxm_request_t *) context; struct ompi_request_t *ompi_req = req->super.ompi_req; mxm_recv_req_t *mxm_recv_req = &req->mxm.recv; /* Set completion status and envelope */ ompi_req->req_status.MPI_TAG = mxm_recv_req->completion.sender_tag; ompi_req->req_status.MPI_SOURCE = mxm_recv_req->completion.sender_imm; ompi_req->req_status.MPI_ERROR = ompi_mtl_mxm_to_mpi_status(mxm_recv_req->base.error); ompi_req->req_status._ucount = mxm_recv_req->completion.actual_len; /* Copy data */ ompi_mtl_datatype_unpack(req->convertor, req->buf, mxm_recv_req->completion.actual_len); if (req->free_after) { free(req->buf); } req->super.completion_callback(&req->super); }