OpenMPI  0.1.1
pml_ob1_recvreq.h File Reference

Go to the source code of this file.

Data Structures

struct  mca_pml_ob1_recv_request_t
 

Macros

#define MCA_PML_OB1_RECV_REQUEST_ALLOC(recvreq, rc)
 Allocate a recv request from the modules free list. More...
 
#define MCA_PML_OB1_RECV_REQUEST_INIT(request,addr,count,datatype,src,tag,comm,persistent)
 Initialize a receive request with call parameters. More...
 
#define MCA_PML_OB1_RECV_REQUEST_MPI_COMPLETE(recvreq)
 Mark the request as completed at MPI level for internal purposes. More...
 
#define MCA_PML_OB1_RECV_REQUEST_RETURN(recvreq)
 
#define MCA_PML_OB1_RECV_REQUEST_START(r)   mca_pml_ob1_recv_req_start(r)
 
#define MCA_PML_OB1_RECV_REQUEST_MATCHED(request, hdr)   recv_req_matched(request, hdr)
 
#define MCA_PML_OB1_RECV_REQUEST_UNPACK(request,segments,num_segments,seg_offset,data_offset,bytes_received,bytes_delivered)
 
#define MCA_PML_OB1_ADD_ACK_TO_PENDING(P, S, D, O)
 

Typedefs

typedef struct
mca_pml_ob1_recv_request_t 
mca_pml_ob1_recv_request_t
 

Functions

 OBJ_CLASS_DECLARATION (mca_pml_ob1_recv_request_t)
 
static bool lock_recv_request (mca_pml_ob1_recv_request_t *recvreq)
 
static bool unlock_recv_request (mca_pml_ob1_recv_request_t *recvreq)
 
static void recv_request_pml_complete (mca_pml_ob1_recv_request_t *recvreq)
 Complete receive request. More...
 
static bool recv_request_pml_complete_check (mca_pml_ob1_recv_request_t *recvreq)
 
void mca_pml_ob1_recv_req_start (mca_pml_ob1_recv_request_t *req)
 
static void prepare_recv_req_converter (mca_pml_ob1_recv_request_t *req)
 
static void recv_req_matched (mca_pml_ob1_recv_request_t *req, mca_pml_ob1_match_hdr_t *hdr)
 
void mca_pml_ob1_recv_request_progress_match (mca_pml_ob1_recv_request_t *req, struct mca_btl_base_module_t *btl, mca_btl_base_segment_t *segments, size_t num_segments)
 
void mca_pml_ob1_recv_request_progress_frag (mca_pml_ob1_recv_request_t *req, struct mca_btl_base_module_t *btl, mca_btl_base_segment_t *segments, size_t num_segments)
 
void mca_pml_ob1_recv_request_progress_rndv (mca_pml_ob1_recv_request_t *req, struct mca_btl_base_module_t *btl, mca_btl_base_segment_t *segments, size_t num_segments)
 
void mca_pml_ob1_recv_request_progress_rget (mca_pml_ob1_recv_request_t *req, struct mca_btl_base_module_t *btl, mca_btl_base_segment_t *segments, size_t num_segments)
 
void mca_pml_ob1_recv_request_matched_probe (mca_pml_ob1_recv_request_t *req, struct mca_btl_base_module_t *btl, mca_btl_base_segment_t *segments, size_t num_segments)
 Handle completion of a probe request.
 
int mca_pml_ob1_recv_request_schedule_once (mca_pml_ob1_recv_request_t *req, mca_bml_base_btl_t *start_bml_btl)
 
static int mca_pml_ob1_recv_request_schedule_exclusive (mca_pml_ob1_recv_request_t *req, mca_bml_base_btl_t *start_bml_btl)
 
static void mca_pml_ob1_recv_request_schedule (mca_pml_ob1_recv_request_t *req, mca_bml_base_btl_t *start_bml_btl)
 
int mca_pml_ob1_recv_request_ack_send_btl (ompi_proc_t *proc, mca_bml_base_btl_t *bml_btl, uint64_t hdr_src_req, void *hdr_dst_req, uint64_t hdr_rdma_offset, bool nordma)
 
static int mca_pml_ob1_recv_request_ack_send (ompi_proc_t *proc, uint64_t hdr_src_req, void *hdr_dst_req, uint64_t hdr_send_offset, bool nordma)
 
int mca_pml_ob1_recv_request_get_frag (mca_pml_ob1_rdma_frag_t *frag)
 
void mca_pml_ob1_recv_request_process_pending (void)
 

Macro Definition Documentation

#define MCA_PML_OB1_ADD_ACK_TO_PENDING (   P,
  S,
  D,
 
)
Value:
do { \
mca_pml_ob1_pckt_pending_t *_pckt; \
int _rc; \
\
MCA_PML_OB1_PCKT_PENDING_ALLOC(_pckt,_rc); \
_pckt->hdr.hdr_common.hdr_type = MCA_PML_OB1_HDR_TYPE_ACK; \
_pckt->hdr.hdr_ack.hdr_src_req.lval = (S); \
_pckt->hdr.hdr_ack.hdr_dst_req.pval = (D); \
_pckt->hdr.hdr_ack.hdr_send_offset = (O); \
_pckt->proc = (P); \
_pckt->bml_btl = NULL; \
OPAL_THREAD_LOCK(&mca_pml_ob1.lock); \
opal_list_append(&mca_pml_ob1.pckt_pending, \
(opal_list_item_t*)_pckt); \
OPAL_THREAD_UNLOCK(&mca_pml_ob1.lock); \
(void)_rc; \
} while(0)
Definition: opal_list.h:98
#define OPAL_THREAD_LOCK(mutex)
Lock a mutex if opal_using_threads() says that multiple threads may be active in the process...
Definition: mutex.h:223
#define OPAL_THREAD_UNLOCK(mutex)
Unlock a mutex if opal_using_threads() says that multiple threads may be active in the process...
Definition: mutex.h:309
#define opal_list_append(l, i)
Append an item to the end of the list.
Definition: opal_list.h:410
#define MCA_PML_OB1_RECV_REQUEST_ALLOC (   recvreq,
  rc 
)
Value:
do { \
ompi_free_list_item_t* item; \
rc = OMPI_SUCCESS; \
OMPI_FREE_LIST_GET(&mca_pml_base_recv_requests, item, rc); \
recvreq = (mca_pml_ob1_recv_request_t*)item; \
} while(0)
Definition: pml_ob1_recvreq.h:35

Allocate a recv request from the modules free list.

Parameters
rc(OUT) OMPI_SUCCESS or error status on failure.
Returns
Receive request.
#define MCA_PML_OB1_RECV_REQUEST_INIT (   request,
  addr,
  count,
  datatype,
  src,
  tag,
  comm,
  persistent 
)
Value:
do { \
addr, \
count, \
datatype, \
src, \
tag, \
comm, \
persistent); \
} while(0)
#define MCA_PML_BASE_RECV_REQUEST_INIT(request,addr,count,datatype,src,tag,comm,persistent)
Initialize a receive request with call parameters.
Definition: pml_base_recvreq.h:56
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 ersistent request.
#define MCA_PML_OB1_RECV_REQUEST_MPI_COMPLETE (   recvreq)
Value:
do { \
PERUSE_TRACE_COMM_EVENT( PERUSE_COMM_REQ_COMPLETE, \
&(recvreq->req_recv.req_base), PERUSE_RECV ); \
ompi_request_complete( &(recvreq->req_recv.req_base.req_ompi), true ); \
} while (0)
static int ompi_request_complete(ompi_request_t *request, bool with_signal)
Signal or mark a request as complete.
Definition: request.h:399

Mark the request as completed at MPI level for internal purposes.

Parameters
recvreq(IN) Receive request.

Referenced by recv_request_pml_complete().

#define MCA_PML_OB1_RECV_REQUEST_RETURN (   recvreq)
Value:
{ \
MCA_PML_BASE_RECV_REQUEST_FINI(&(recvreq)->req_recv); \
OMPI_FREE_LIST_RETURN( &mca_pml_base_recv_requests, \
(ompi_free_list_item_t*)(recvreq)); \
}
#define MCA_PML_BASE_RECV_REQUEST_FINI(request)
Return a receive request.
Definition: pml_base_recvreq.h:117
Definition: ompi_free_list.h:62

Function Documentation