26 #ifndef MCA_PML_CSUM_RECVFRAG_H
27 #define MCA_PML_CSUM_RECVFRAG_H
48 unsigned char addr[1];
55 #define MCA_PML_CSUM_RECV_FRAG_ALLOC(frag,rc) \
57 ompi_free_list_item_t* item; \
58 OMPI_FREE_LIST_WAIT(&mca_pml_csum.recv_frags, item, rc); \
59 frag = (mca_pml_csum_recv_frag_t*)item; \
63 #define MCA_PML_CSUM_RECV_FRAG_INIT(frag, hdr, segs, cnt, btl ) \
66 mca_btl_base_segment_t* macro_segments = frag->segments; \
67 mca_pml_csum_buffer_t* buffers = frag->buffers; \
68 unsigned char* _ptr = (unsigned char*)frag->addr; \
71 frag->hdr = *(mca_pml_csum_hdr_t*)hdr; \
72 frag->num_segments = 1; \
73 _size = segs[0].seg_len; \
74 for( i = 1; i < cnt; i++ ) { \
75 _size += segs[i].seg_len; \
78 if(_size <= mca_pml_csum.unexpected_limit ) { \
79 macro_segments[0].seg_addr.pval = frag->addr; \
81 buffers[0].len = _size; \
82 buffers[0].addr = (char*) \
83 mca_pml_csum.allocator->alc_alloc( mca_pml_csum.allocator, \
86 _ptr = (unsigned char*)(buffers[0].addr); \
87 macro_segments[0].seg_addr.pval = buffers[0].addr; \
89 macro_segments[0].seg_len = _size; \
90 for( i = 0; i < cnt; i++ ) { \
91 memcpy( _ptr, segs[i].seg_addr.pval, segs[i].seg_len); \
92 _ptr += segs[i].seg_len; \
97 #define MCA_PML_CSUM_RECV_FRAG_RETURN(frag) \
99 if( frag->segments[0].seg_len > mca_pml_csum.unexpected_limit ) { \
101 mca_pml_csum.allocator->alc_free( mca_pml_csum.allocator, \
102 frag->buffers[0].addr ); \
104 frag->num_segments = 0; \
107 OMPI_FREE_LIST_RETURN(&mca_pml_csum.recv_frags, \
108 (ompi_free_list_item_t*)frag); \
117 mca_btl_base_tag_t tag,
126 mca_btl_base_tag_t tag,
134 mca_btl_base_tag_t tag,
143 mca_btl_base_tag_t tag,
151 mca_btl_base_tag_t tag,
159 mca_btl_base_tag_t tag,
167 mca_btl_base_tag_t tag,
void mca_pml_csum_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_csum_recvfrag.c:452
void mca_pml_csum_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_csum_recvfrag.c:365
A descriptor that holds the parameters to a send/put/get operation along w/ a callback routine that i...
Definition: btl.h:275
void mca_pml_csum_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_csum_recvfrag.c:533
void mca_pml_csum_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_csum_recvfrag.c:491
Union of defined hdr types.
Definition: pml_csum_hdr.h:298
#define MCA_BTL_DES_MAX_SEGMENTS
Maximum number of allowed segments in src/dst fields of a descriptor.
Definition: btl.h:316
void mca_pml_csum_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_csum_recvfrag.c:135
Byte Transfer Layer (BTL)
void mca_pml_csum_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_csum_recvfrag.c:384
Definition: ompi_free_list.h:62
void mca_pml_csum_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_csum_recvfrag.c:328
Definition: pml_csum_recvfrag.h:34
BTL module interface functions and attributes.
Definition: btl.h:786
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
Definition: pml_csum_recvfrag.h:41