1 /*
2 * Copyright (C) by Argonne National Laboratory
3 * See COPYRIGHT in top-level directory
4 */
5
6 #ifndef SHM_AM_H_INCLUDED
7 #define SHM_AM_H_INCLUDED
8
9 #include <shm.h>
10 #include "../posix/shm_inline.h"
11 #include "../ipc/src/shm_inline.h"
12
MPIDI_SHM_am_send_hdr(int rank,MPIR_Comm * comm,int handler_id,const void * am_hdr,size_t am_hdr_sz)13 MPL_STATIC_INLINE_PREFIX int MPIDI_SHM_am_send_hdr(int rank, MPIR_Comm * comm,
14 int handler_id, const void *am_hdr,
15 size_t am_hdr_sz)
16 {
17 int ret;
18
19 MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPIDI_SHM_AM_SEND_HDR);
20 MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPIDI_SHM_AM_SEND_HDR);
21
22 ret = MPIDI_POSIX_am_send_hdr(rank, comm, MPIDI_POSIX_AM_HDR_CH4,
23 handler_id, am_hdr, am_hdr_sz);
24
25 MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPIDI_SHM_AM_SEND_HDR);
26 return ret;
27 }
28
MPIDI_SHM_am_isend(int rank,MPIR_Comm * comm,int handler_id,const void * am_hdr,size_t am_hdr_sz,const void * data,MPI_Count count,MPI_Datatype datatype,MPIR_Request * sreq)29 MPL_STATIC_INLINE_PREFIX int MPIDI_SHM_am_isend(int rank, MPIR_Comm * comm, int handler_id,
30 const void *am_hdr, size_t am_hdr_sz,
31 const void *data, MPI_Count count,
32 MPI_Datatype datatype, MPIR_Request * sreq)
33 {
34 int ret;
35
36 MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPIDI_SHM_AM_ISEND);
37 MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPIDI_SHM_AM_ISEND);
38
39 ret = MPIDI_POSIX_am_isend(rank, comm, MPIDI_POSIX_AM_HDR_CH4, handler_id, am_hdr,
40 am_hdr_sz, data, count, datatype, sreq);
41
42 MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPIDI_SHM_AM_ISEND);
43 return ret;
44 }
45
MPIDI_SHM_am_isendv(int rank,MPIR_Comm * comm,int handler_id,struct iovec * am_hdrs,size_t iov_len,const void * data,MPI_Count count,MPI_Datatype datatype,MPIR_Request * sreq)46 MPL_STATIC_INLINE_PREFIX int MPIDI_SHM_am_isendv(int rank, MPIR_Comm * comm, int handler_id,
47 struct iovec *am_hdrs, size_t iov_len,
48 const void *data, MPI_Count count,
49 MPI_Datatype datatype, MPIR_Request * sreq)
50 {
51 int ret;
52
53 MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPIDI_SHM_AM_ISENDV);
54 MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPIDI_SHM_AM_ISENDV);
55
56 ret = MPIDI_POSIX_am_isendv(rank, comm, MPIDI_POSIX_AM_HDR_CH4, handler_id, am_hdrs,
57 iov_len, data, count, datatype, sreq);
58
59 MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPIDI_SHM_AM_ISENDV);
60 return ret;
61 }
62
MPIDI_SHM_am_send_hdr_reply(MPIR_Context_id_t context_id,int src_rank,int handler_id,const void * am_hdr,size_t am_hdr_sz)63 MPL_STATIC_INLINE_PREFIX int MPIDI_SHM_am_send_hdr_reply(MPIR_Context_id_t context_id,
64 int src_rank, int handler_id,
65 const void *am_hdr, size_t am_hdr_sz)
66 {
67 int ret;
68
69 MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPIDI_SHM_AM_SEND_HDR_REPLY);
70 MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPIDI_SHM_AM_SEND_HDR_REPLY);
71
72 ret = MPIDI_POSIX_am_send_hdr_reply(context_id, src_rank, MPIDI_POSIX_AM_HDR_CH4,
73 handler_id, am_hdr, am_hdr_sz);
74
75 MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPIDI_SHM_AM_SEND_HDR_REPLY);
76 return ret;
77 }
78
MPIDI_SHM_am_isend_reply(MPIR_Context_id_t context_id,int src_rank,int handler_id,const void * am_hdr,size_t am_hdr_sz,const void * data,MPI_Count count,MPI_Datatype datatype,MPIR_Request * sreq)79 MPL_STATIC_INLINE_PREFIX int MPIDI_SHM_am_isend_reply(MPIR_Context_id_t context_id,
80 int src_rank, int handler_id,
81 const void *am_hdr, size_t am_hdr_sz,
82 const void *data, MPI_Count count,
83 MPI_Datatype datatype, MPIR_Request * sreq)
84 {
85 int ret;
86
87 MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPIDI_SHM_AM_ISEND_REPLY);
88 MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPIDI_SHM_AM_ISEND_REPLY);
89
90 ret = MPIDI_POSIX_am_isend_reply(context_id, src_rank, MPIDI_POSIX_AM_HDR_CH4,
91 handler_id, am_hdr, am_hdr_sz, data, count, datatype, sreq);
92
93 MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPIDI_SHM_AM_ISEND_REPLY);
94 return ret;
95 }
96
MPIDI_SHM_am_hdr_max_sz(void)97 MPL_STATIC_INLINE_PREFIX size_t MPIDI_SHM_am_hdr_max_sz(void)
98 {
99 int ret;
100
101 MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPIDI_SHM_AM_HDR_MAX_SZ);
102 MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPIDI_SHM_AM_HDR_MAX_SZ);
103
104 ret = MPIDI_POSIX_am_hdr_max_sz();
105
106 MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPIDI_SHM_AM_HDR_MAX_SZ);
107 return ret;
108 }
109
MPIDI_SHM_am_eager_limit(void)110 MPL_STATIC_INLINE_PREFIX size_t MPIDI_SHM_am_eager_limit(void)
111 {
112 return MPIDI_POSIX_am_eager_limit();
113 }
114
MPIDI_SHM_am_eager_buf_limit(void)115 MPL_STATIC_INLINE_PREFIX size_t MPIDI_SHM_am_eager_buf_limit(void)
116 {
117 return MPIDI_POSIX_am_eager_buf_limit();
118 }
119
MPIDI_SHM_am_request_init(MPIR_Request * req)120 MPL_STATIC_INLINE_PREFIX void MPIDI_SHM_am_request_init(MPIR_Request * req)
121 {
122 MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPIDI_SHM_AM_REQUEST_INIT);
123 MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPIDI_SHM_AM_REQUEST_INIT);
124
125 MPIDI_SHM_REQUEST(req, status) = 0;
126 MPIDI_POSIX_am_request_init(req);
127
128 MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPIDI_SHM_AM_REQUEST_INIT);
129 }
130
MPIDI_SHM_am_request_finalize(MPIR_Request * req)131 MPL_STATIC_INLINE_PREFIX void MPIDI_SHM_am_request_finalize(MPIR_Request * req)
132 {
133 MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPIDI_SHM_AM_REQUEST_FINALIZE);
134 MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPIDI_SHM_AM_REQUEST_FINALIZE);
135
136 MPIDI_POSIX_am_request_finalize(req);
137
138 MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPIDI_SHM_AM_REQUEST_FINALIZE);
139 }
140
141 #endif /* SHM_AM_H_INCLUDED */
142