OpenMPI  0.1.1
pml_base_recvreq.h File Reference
#include "ompi_config.h"
#include "ompi/mca/pml/base/pml_base_request.h"
#include "opal/datatype/opal_convertor.h"
#include "ompi/peruse/peruse-internal.h"

Go to the source code of this file.

Data Structures

struct  mca_pml_base_recv_request_t
 Base type for receive requests. More...
 

Macros

#define MCA_PML_BASE_RECV_REQUEST_INIT(request,addr,count,datatype,src,tag,comm,persistent)
 Initialize a receive request with call parameters. More...
 
#define MCA_PML_BASE_RECV_START(request)
 
#define MCA_PML_BASE_RECV_REQUEST_FINI(request)
 Return a receive request. More...
 

Typedefs

typedef struct
mca_pml_base_recv_request_t 
mca_pml_base_recv_request_t
 

Functions

OMPI_DECLSPEC OBJ_CLASS_DECLARATION (mca_pml_base_recv_request_t)
 

Macro Definition Documentation

#define MCA_PML_BASE_RECV_REQUEST_FINI (   request)
Value:
do { \
OMPI_REQUEST_FINI(&(request)->req_base.req_ompi); \
OBJ_RELEASE( (request)->req_base.req_comm); \
OBJ_RELEASE( (request)->req_base.req_datatype ); \
opal_convertor_cleanup( &((request)->req_base.req_convertor) ); \
} while (0)
#define OBJ_RELEASE(object)
Release an object (by decrementing its reference count).
Definition: opal_object.h:324
#define OMPI_REQUEST_FINI(request)
Finalize a request.
Definition: request.h:169
Definition: evdns.c:158

Return a receive request.

Handle the release of the communicator and the attached datatype.

Parameters
request(IN) Receive request.
#define MCA_PML_BASE_RECV_REQUEST_INIT (   request,
  addr,
  count,
  datatype,
  src,
  tag,
  comm,
  persistent 
)
Value:
{ \
/* increment reference count on communicator */ \
OBJ_RETAIN(comm); \
OBJ_RETAIN(datatype); \
OMPI_REQUEST_INIT(&(request)->req_base.req_ompi, persistent); \
(request)->req_base.req_ompi.req_mpi_object.comm = comm; \
(request)->req_base.req_ompi.req_peer = src; \
(request)->req_base.req_ompi.req_tag = tag; \
(request)->req_bytes_packed = 0; \
(request)->req_base.req_addr = addr; \
(request)->req_base.req_count = count; \
(request)->req_base.req_peer = src; \
(request)->req_base.req_tag = tag; \
(request)->req_base.req_comm = comm; \
(request)->req_base.req_proc = NULL; \
(request)->req_base.req_sequence = 0; \
(request)->req_base.req_datatype = datatype; \
/* What about req_type ? */ \
(request)->req_base.req_pml_complete = OPAL_INT_TO_BOOL(persistent); \
(request)->req_base.req_free_called = false; \
}
#define OBJ_RETAIN(object)
Retain an object (by incrementing its reference count)
Definition: opal_object.h:278
#define OMPI_REQUEST_INIT(request, persistent)
Initialize a request.
Definition: request.h:147
Definition: evdns.c:158

Initialize a receive request with call parameters.

Parameters
request(IN) Receive request.
addr(IN) User buffer.
count(IN) Number of elements of indicated datatype.
datatype(IN) User defined datatype.
src(IN) Source rank w/in the communicator.
tag(IN) User defined tag.
comm(IN) Communicator.
persistent(IN) Is this a persistent request.
#define MCA_PML_BASE_RECV_START (   request)
Value:
do { \
(request)->req_pml_complete = false; \
\
/* always set the req_status.MPI_TAG to ANY_TAG before starting the \
* request. This field is used if cancelled to find out if the request \
* has been matched or not. \
*/ \
(request)->req_ompi.req_status.MPI_SOURCE = OMPI_ANY_SOURCE; \
(request)->req_ompi.req_status.MPI_TAG = OMPI_ANY_TAG; \
(request)->req_ompi.req_status.MPI_ERROR = OMPI_SUCCESS; \
(request)->req_ompi.req_status._ucount = 0; \
(request)->req_ompi.req_status._cancelled = 0; \
(request)->req_ompi.req_mpi_object.comm = (request)->req_comm; \
(request)->req_ompi.req_peer = (request)->req_peer; \
\
(request)->req_ompi.req_complete = false; \
(request)->req_ompi.req_state = OMPI_REQUEST_ACTIVE; \
} while (0)
Definition: evdns.c:158