20 #ifndef OMPI_OSC_RDMA_SENDREQ_H
21 #define OMPI_OSC_RDMA_SENDREQ_H
24 #include "osc_rdma_longreq.h"
27 #include "ompi/datatype/ompi_datatype.h"
28 #include "opal/datatype/opal_convertor.h"
29 #include "ompi/communicator/communicator.h"
31 #include "ompi/memchecker.h"
37 } ompi_osc_rdma_req_type_t;
82 ompi_osc_rdma_sendreq_alloc_init(ompi_osc_rdma_req_type_t
req_type,
83 void *origin_addr,
int origin_count,
85 int target, OPAL_PTRDIFF_TYPE target_disp,
101 if (NULL == proc)
return OMPI_ERR_OUT_OF_RESOURCE;
103 OPAL_FREE_LIST_GET(&mca_osc_rdma_component.
c_sendreqs,
105 if (OMPI_SUCCESS != ret)
return ret;
108 (*sendreq)->req_module = module;
109 (*sendreq)->req_target_rank = target_rank;
110 (*sendreq)->req_target_proc = proc;
111 (*sendreq)->req_refcount = 1;
128 if (req_type != OMPI_OSC_RDMA_GET) {
154 OPAL_PTRDIFF_TYPE target_disp,
171 if (0 == (--sendreq->req_refcount)) {
173 memchecker_convertor_call(&opal_memchecker_base_mem_defined,
181 OPAL_FREE_LIST_RETURN(&mca_osc_rdma_component.
c_sendreqs,
opal_free_list_t c_sendreqs
free list of ompi_osc_rdma_sendreq_t structures
Definition: osc_rdma.h:64
struct ompi_datatype_t * req_origin_datatype
Datatype for the origin side of the operation.
Definition: osc_rdma_sendreq.h:51
Definition: osc_rdma.h:111
int req_target_count
datatype count on target
Definition: osc_rdma_sendreq.h:66
ompi_osc_rdma_module_t * req_module
pointer to the module that created the sendreq
Definition: osc_rdma_sendreq.h:48
Definition: ompi_datatype.h:68
The opal_list_t interface is used to provide a generic doubly-linked list container for Open MPI...
Process identification structure interface.
Remote Open MPI process structure.
Definition: proc.h:56
#define OBJ_RETAIN(object)
Retain an object (by incrementing its reference count)
Definition: opal_object.h:278
Definition: opal_list.h:98
#define OBJ_RELEASE(object)
Release an object (by decrementing its reference count).
Definition: opal_object.h:324
size_t req_origin_bytes_packed
packed size of message on the origin side
Definition: osc_rdma_sendreq.h:56
Definition: opal_free_list.h:47
int req_target_rank
rank in module's communicator for target of operation
Definition: osc_rdma_sendreq.h:59
opal_datatype_t super
Base opal_datatype_t superclass.
Definition: ompi_datatype.h:69
struct ompi_datatype_t * req_target_datatype
datatype on target
Definition: osc_rdma_sendreq.h:68
Definition: opal_convertor.h:90
Definition: osc_rdma_sendreq.h:40
ompi_proc_t * req_target_proc
pointer to the proc structure for the target of the operation
Definition: osc_rdma_sendreq.h:61
struct opal_convertor_t * proc_convertor
Base convertor for the proc described by this process.
Definition: proc.h:70
ompi_osc_rdma_req_type_t req_type
type of sendreq (from ompi_osc_rdma_req_type_t)
Definition: osc_rdma_sendreq.h:46
OPAL_PTRDIFF_TYPE req_target_disp
displacement on target
Definition: osc_rdma_sendreq.h:64
opal_convertor_t req_origin_convertor
Convertor for the origin side of the operation.
Definition: osc_rdma_sendreq.h:54
int req_op_id
op index on the target
Definition: osc_rdma_sendreq.h:71
Main top-level request struct definition.
Definition: request.h:100
ompi_communicator_t * m_comm
communicator created with this window
Definition: osc_rdma.h:130
Describes a region/segment of memory that is addressable by an BTL.
Definition: btl.h:236
#define OBJ_CLASS_DECLARATION(NAME)
Declaration for class descriptor.
Definition: opal_object.h:236