10 #ifndef MCA_BTL_WV_EAGER_RDMA_BUF_H
11 #define MCA_BTL_WV_EAGER_RDMA_BUF_H
13 #include "ompi_config.h"
45 #define MCA_BTL_WV_RDMA_FRAG(F) \
46 (wv_frag_type(F) == MCA_BTL_WV_FRAG_EAGER_RDMA)
48 #define EAGER_RDMA_BUFFER_REMOTE (0)
49 #define EAGER_RDMA_BUFFER_LOCAL (0xff)
51 #ifdef WORDS_BIGENDIAN
52 #define MCA_BTL_WV_RDMA_FRAG_GET_SIZE(F) ((F)->u.size >> 8)
53 #define MCA_BTL_WV_RDMA_FRAG_SET_SIZE(F, S) \
54 ((F)->u.size = (S) << 8)
56 #define MCA_BTL_WV_RDMA_FRAG_GET_SIZE(F) ((F)->u.size & 0x00ffffff)
57 #define MCA_BTL_WV_RDMA_FRAG_SET_SIZE(F, S) \
58 ((F)->u.size = (S) & 0x00ffffff)
61 #define MCA_BTL_WV_RDMA_FRAG_LOCAL(F) \
62 (((volatile uint8_t*)(F)->ftr->u.buf)[3] != EAGER_RDMA_BUFFER_REMOTE)
64 #define MCA_BTL_WV_RDMA_FRAG_REMOTE(F) \
65 (!MCA_BTL_WV_RDMA_FRAG_LOCAL(F))
67 #define MCA_BTL_WV_RDMA_MAKE_REMOTE(F) do { \
68 ((volatile uint8_t*)(F)->u.buf)[3] = EAGER_RDMA_BUFFER_REMOTE; \
71 #define MCA_BTL_WV_RDMA_MAKE_LOCAL(F) do { \
72 ((volatile uint8_t*)(F)->u.buf)[3] = EAGER_RDMA_BUFFER_LOCAL; \
75 #define MCA_BTL_WV_GET_LOCAL_RDMA_FRAG(E, I) \
76 (&(E)->eager_rdma_local.frags[(I)])
78 #define MCA_BTL_WV_RDMA_NEXT_INDEX(I) do { \
81 mca_btl_wv_component.eager_rdma_num) \
84 #define MCA_BTL_WV_RDMA_MOVE_INDEX(HEAD, OLD_HEAD) \
89 new_head = OLD_HEAD + 1; \
90 if(new_head == mca_btl_wv_component.eager_rdma_num) \
92 } while(!OPAL_ATOMIC_CMPSET_32(&HEAD, OLD_HEAD, new_head)); \
uint32_t rkey
RKey for accessing remote buffer.
Definition: btl_wv_eager_rdma.h:36
ompi_ptr_t base
address of remote buffer
Definition: btl_wv_eager_rdma.h:35
Definition: mutex_unix.h:53
uint16_t head
RDMA buffer to poll.
Definition: btl_wv_eager_rdma.h:22
Definition: btl_wv_eager_rdma.h:18
Definition: btl_wv_frag.h:259
Definition: btl_wv_eager_rdma.h:34
opal_mutex_t lock
guard access to RDMA buffer
Definition: btl_wv_eager_rdma.h:29
int32_t credits
number of RDMA credits
Definition: btl_wv_eager_rdma.h:24
int32_t head
RDMA buffer to post to.
Definition: btl_wv_eager_rdma.h:37
ompi_ptr_t base
buffer for RDMAing eager messages
Definition: btl_wv_eager_rdma.h:19
int32_t tokens
number of rdam tokens
Definition: btl_wv_eager_rdma.h:38
uint16_t tail
Needed for credit managment.
Definition: btl_wv_eager_rdma.h:23