1
1

* implement iprobe for the MX MTL

This commit was SVN r11211.
Этот коммит содержится в:
Brian Barrett 2006-08-15 22:16:50 +00:00
родитель 259b9f04b9
Коммит dc74a6a8e1

Просмотреть файл

@ -17,16 +17,55 @@
*/
#include "ompi_config.h"
#include "ompi/request/request.h"
#include "ompi/communicator/communicator.h"
#include "mtl_mx.h"
#include "mtl_mx_types.h"
#include "mtl_mx_request.h"
int ompi_mtl_mx_iprobe(struct mca_mtl_base_module_t* mtl,
struct ompi_communicator_t *comm,
int src,
int tag,
int *flag,
struct ompi_status_public_t *status)
int
ompi_mtl_mx_iprobe(struct mca_mtl_base_module_t* mtl,
struct ompi_communicator_t *comm,
int src,
int tag,
int *flag,
struct ompi_status_public_t *status)
{
return OMPI_ERR_NOT_IMPLEMENTED;
uint32_t result;
mx_return_t ret;
mx_status_t mx_status;
uint64_t match_bits;
uint64_t mask_bits;
MX_SET_RECV_BITS(match_bits,
mask_bits,
comm->c_contextid,
src,
tag);
ret = mx_iprobe(ompi_mtl_mx.mx_endpoint,
match_bits,
mask_bits,
&mx_status,
&result);
if (MX_SUCCESS != ret) {
opal_output(0, "Error in mx_iprobe (error %s)\n", mx_strerror(ret));
return OMPI_ERROR;
}
if (result) {
status->MPI_ERROR = OMPI_SUCCESS;
MX_GET_SRC(mx_status.match_info, status->MPI_SOURCE);
MX_GET_TAG(mx_status.match_info, status->MPI_TAG);
status->_count = mx_status.msg_length;
*flag = 1;
} else {
*flag = 0;
}
return OMPI_SUCCESS;
}