1
2
3
4
5
6
7
8
9
10
11
12
13 #ifndef MCA_SPML_BASE_ATOMIC_REQUEST_H
14 #define MCA_SPML_BASE_ATOMIC_REQUEST_H
15
16 #include "oshmem_config.h"
17 #include "oshmem/mca/spml/base/spml_base_request.h"
18 #include "ompi/peruse/peruse-internal.h"
19
20 BEGIN_C_DECLS
21
22
23
24
25 struct mca_spml_base_atomic_request_t {
26 mca_spml_base_request_t req_base;
27 size_t req_bytes_packed;
28 };
29 typedef struct mca_spml_base_atomic_request_t mca_spml_base_atomic_request_t;
30
31 OSHMEM_DECLSPEC OBJ_CLASS_DECLARATION(mca_spml_base_atomic_request_t);
32
33
34
35
36
37
38
39
40
41
42
43
44 #define MCA_SPML_BASE_ATOMIC_REQUEST_INIT( \
45 request, \
46 addr, \
47 count, \
48 src, \
49 comm, \
50 persistent) \
51 { \
52 \
53 OBJ_RETAIN(comm); \
54 \
55 OSHMEM_REQUEST_INIT(&(request)->req_base.req_oshmem, persistent); \
56 (request)->req_base.req_oshmem.req_shmem_object.comm = comm; \
57 (request)->req_bytes_packed = 0; \
58 (request)->req_base.req_addr = addr; \
59 (request)->req_base.req_count = count; \
60 (request)->req_base.req_peer = src; \
61 (request)->req_base.req_comm = comm; \
62 (request)->req_base.req_proc = NULL; \
63 (request)->req_base.req_sequence = 0; \
64 \
65 (request)->req_base.req_spml_complete = OPAL_INT_TO_BOOL(persistent); \
66 (request)->req_base.req_free_called = false; \
67 }
68
69
70
71
72 #define MCA_SPML_BASE_ATOMIC_START( request ) \
73 do { \
74 (request)->req_spml_complete = false; \
75 \
76 (request)->req_oshmem.req_status.SHMEM_SOURCE = SHMEM_ANY_SOURCE; \
77 (request)->req_oshmem.req_status.SHMEM_ERROR = OSHMEM_SUCCESS; \
78 (request)->req_oshmem.req_status._count = 0; \
79 (request)->req_oshmem.req_status._cancelled = 0; \
80 \
81 (request)->req_oshmem.req_complete = false; \
82 (request)->req_oshmem.req_state = OSHMEM_REQUEST_ACTIVE; \
83 } while (0)
84
85
86
87
88
89
90
91 #define MCA_SPML_BASE_ATOMIC_REQUEST_FINI( request ) \
92 do { \
93 OSHMEM_REQUEST_FINI(&(request)->req_base.req_oshmem); \
94 OBJ_RELEASE( (request)->req_base.req_comm); \
95 opal_convertor_cleanup( &((request)->req_base.req_convertor) ); \
96 } while (0)
97
98 END_C_DECLS
99
100 #endif
101