24 #ifndef MCA_PML_OB1_RECVFRAG_H
25 #define MCA_PML_OB1_RECVFRAG_H
46 unsigned char addr[1];
53 #define MCA_PML_OB1_RECV_FRAG_ALLOC(frag,rc) \
55 ompi_free_list_item_t* item; \
56 OMPI_FREE_LIST_WAIT(&mca_pml_ob1.recv_frags, item, rc); \
57 frag = (mca_pml_ob1_recv_frag_t*)item; \
61 #define MCA_PML_OB1_RECV_FRAG_INIT(frag, hdr, segs, cnt, btl ) \
64 mca_btl_base_segment_t* macro_segments = frag->segments; \
65 mca_pml_ob1_buffer_t* buffers = frag->buffers; \
66 unsigned char* _ptr = (unsigned char*)frag->addr; \
69 frag->hdr = *(mca_pml_ob1_hdr_t*)hdr; \
70 frag->num_segments = 1; \
71 _size = segs[0].seg_len; \
72 for( i = 1; i < cnt; i++ ) { \
73 _size += segs[i].seg_len; \
76 if(_size <= mca_pml_ob1.unexpected_limit ) { \
77 macro_segments[0].seg_addr.pval = frag->addr; \
79 buffers[0].len = _size; \
80 buffers[0].addr = (char*) \
81 mca_pml_ob1.allocator->alc_alloc( mca_pml_ob1.allocator, \
84 _ptr = (unsigned char*)(buffers[0].addr); \
85 macro_segments[0].seg_addr.pval = buffers[0].addr; \
87 macro_segments[0].seg_len = _size; \
88 for( i = 0; i < cnt; i++ ) { \
89 memcpy( _ptr, segs[i].seg_addr.pval, segs[i].seg_len); \
90 _ptr += segs[i].seg_len; \
95 #define MCA_PML_OB1_RECV_FRAG_RETURN(frag) \
97 if( frag->segments[0].seg_len > mca_pml_ob1.unexpected_limit ) { \
99 mca_pml_ob1.allocator->alc_free( mca_pml_ob1.allocator, \
100 frag->buffers[0].addr ); \
102 frag->num_segments = 0; \
105 OMPI_FREE_LIST_RETURN(&mca_pml_ob1.recv_frags, \
106 (ompi_free_list_item_t*)frag); \
115 mca_btl_base_tag_t tag,
124 mca_btl_base_tag_t tag,
132 mca_btl_base_tag_t tag,
141 mca_btl_base_tag_t tag,
149 mca_btl_base_tag_t tag,
157 mca_btl_base_tag_t tag,
165 mca_btl_base_tag_t tag,
A descriptor that holds the parameters to a send/put/get operation along w/ a callback routine that i...
Definition: btl.h:275
Definition: pml_ob1_recvfrag.h:39
#define MCA_BTL_DES_MAX_SEGMENTS
Maximum number of allowed segments in src/dst fields of a descriptor.
Definition: btl.h:316
Union of defined hdr types.
Definition: pml_ob1_hdr.h:359
void mca_pml_ob1_recv_frag_callback_ack(mca_btl_base_module_t *btl, mca_btl_base_tag_t tag, mca_btl_base_descriptor_t *descriptor, void *cbdata)
Callback from BTL on receipt of a recv_frag (ack).
Definition: pml_ob1_recvfrag.c:286
Byte Transfer Layer (BTL)
Definition: ompi_free_list.h:62
void mca_pml_ob1_recv_frag_callback_put(mca_btl_base_module_t *btl, mca_btl_base_tag_t tag, mca_btl_base_descriptor_t *descriptor, void *cbdata)
Callback from BTL on receipt of a recv_frag (put).
Definition: pml_ob1_recvfrag.c:351
void mca_pml_ob1_recv_frag_callback_match(mca_btl_base_module_t *btl, mca_btl_base_tag_t tag, mca_btl_base_descriptor_t *descriptor, void *cbdata)
Callback from BTL on receipt of a recv_frag (match).
Definition: pml_ob1_recvfrag.c:102
void mca_pml_ob1_recv_frag_callback_fin(mca_btl_base_module_t *btl, mca_btl_base_tag_t tag, mca_btl_base_descriptor_t *descriptor, void *cbdata)
Callback from BTL on receipt of a recv_frag (fin).
Definition: pml_ob1_recvfrag.c:371
void mca_pml_ob1_recv_frag_callback_rndv(mca_btl_base_module_t *btl, mca_btl_base_tag_t tag, mca_btl_base_descriptor_t *descriptor, void *cbdata)
Callback from BTL on receipt of a recv_frag (rndv).
Definition: pml_ob1_recvfrag.c:250
Definition: pml_ob1_recvfrag.h:32
BTL module interface functions and attributes.
Definition: btl.h:786
void mca_pml_ob1_recv_frag_callback_frag(mca_btl_base_module_t *btl, mca_btl_base_tag_t tag, mca_btl_base_descriptor_t *descriptor, void *cbdata)
Callback from BTL on receipt of a recv_frag (frag).
Definition: pml_ob1_recvfrag.c:332
void mca_pml_ob1_recv_frag_callback_rget(mca_btl_base_module_t *btl, mca_btl_base_tag_t tag, mca_btl_base_descriptor_t *descriptor, void *cbdata)
Callback from BTL on receipt of a recv_frag (rget).
Definition: pml_ob1_recvfrag.c:267
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