1dat_ep_post_send(3DADTi)rect Access Transport Library Functidoants_ep_post_send(3DAT)
2
3
4
6 dat_ep_post_send - transfer data to the remote side
7
9 cc [ flag... ] file... -ldat [ library... ]
10 #include <dat/udat.h>
11
12 DAT_RETURN
13 dat_ep_post_send (
14 IN DAT_EP_HANDLE ep_handle,
15 IN DAT_COUNT num_segments,
16 IN DAT_LMR_TRIPLET *local_iov,
17 IN DAT_DTO_COOKIE user_cookie,
18 IN DAT_COMPLETION_FLAGS completion_flags
19 )
20
21
23 ep_handle Handle for an instance of the Endpoint.
24
25
26 num_segments Number of lmr_triplets in local_iov. Can be 0 for 0
27 size message.
28
29
30 local_iov I/O Vector that specifies the local buffer that
31 contains data to be transferred. Can be NULL for 0
32 size message.
33
34
35 user_cookie: User-provided cookie that is returned to the Con‐
36 sumer at the completion of the send. Can be NULL.
37
38
39 completion_flags Flags for posted Send. The default DAT_COMPLE‐
40 TION_DEFAULT_FLAG is 0x00. Other values are as fol‐
41 lows:
42
43 Completion Suppression DAT_COMPLETION_SUP‐
44 PRESS_FLAG
45
46 0x01 Suppress suc‐
47 cessful Com‐
48 pletion.
49
50
51
52 Solicited Wait DAT_COMPLE‐
53 TION_SOLICITED_WAIT_FLAG
54
55 0x02 Request for
56 notification
57 completion
58 for matching
59 receive on
60 the other
61 side of the
62 connection.
63
64
65
66 Notification of Completion DAT_COMPLE‐
67 TION_UNSIGNALLED_FLAG
68
69 0x04 Non-notifica‐
70 tion comple‐
71 tion. Local
72 Endpoint must
73 be configured
74 for Notifica‐
75 tion Suppres‐
76 sion.
77
78
79
80 Barrier Fence DAT_COMPLETION_BAR‐
81 RIER_FENCE_FLAG
82
83 0x08 Request for
84 Barrier
85 Fence.
86
87
88
89
91 The dat_ep_post_send() function requests a transfer of all the data
92 from the local_iov over the connection of the ep_handle Endpoint to the
93 remote side.
94
95
96 The num_segments parameter specifies the number of segments in the
97 local_iov. The local_iov segments are traversed in the I/O Vector order
98 until all the data is transferred.
99
100
101 A Consumer cannot modify the local_iov or its content until the DTO is
102 completed. When a Consumer does not adhere to this rule, the behavior
103 of the Provider and the underlying Transport is not defined. Providers
104 that allow Consumers to get ownership of the local_iov back after the
105 dat_ep_post_send() returns should document this behavior and also spec‐
106 ify its support in Provider attributes. This behavior allows Consumers
107 full control of the local_iov, but not the memory it specifies after
108 dat_ep_post_send() returns. Because this behavior is not guaranteed by
109 all Providers, portable Consumers should not rely on this behavior.
110 Consumers should not rely on the Provider copying local_iov informa‐
111 tion.
112
113
114 The DAT_SUCCESS return of the dat_ep_post_send() is at least the equiv‐
115 alent of posting a Send operation directly by native Transport.
116 Providers should avoid resource allocation as part of
117 dat_ep_post_send() to ensure that this operation is nonblocking and
118 thread safe for an UpCall.
119
120
121 The completion of the posted Send is reported to the Consumer asyn‐
122 chronously through a DTO Completion event based on the specified com‐
123 pletion_flags value. The value of DAT_COMPLETION _UNSIGNALLED_FLAG is
124 only valid if the Endpoint Request Completion Flags DAT_COMPLE‐
125 TION_UNSIGNALLED_FLAG. Otherwise, DAT_INVALID_PARAMETER is returned.
126
127
128 The user_cookie allows Consumers to have unique identifiers for each
129 DTO. These identifiers are completely under user control and are opaque
130 to the Provider. There is no requirement on the Consumer that the value
131 user_cookie should be unique for each DTO. The user_cookie is returned
132 to the Consumer in the Completion event for the posted Send.
133
134
135 The operation is valid for the Endpoint in the DAT_EP_STATE_CONNECTED
136 and DAT_EP_STATE_DISCONNECTED states. If the operation returns success‐
137 fully for the Endpoint in the DAT_EP_STATE_DISCONNECTED state, the
138 posted Send is immediately flushed to request_evd_handle.
139
141 DAT_SUCCESS The operation was successful.
142
143
144 DAT_INSUFFICIENT_RESOURCES The operation failed due to resource lim‐
145 itations.
146
147
148 DAT_INVALID_PARAMETER Invalid parameter. For example, one of
149 the IOV segments pointed to a memory out‐
150 side its LMR.
151
152
153 DAT_INVALID_HANDLE The ep_handle parameter is invalid.
154
155
156 DAT_INVALID_STATE A parameter is in an invalid state. End‐
157 point was not in the DAT_EP_STATE_CON‐
158 NECTED or DAT_EP_STATE_DISCONNECTED
159 state.
160
161
162 DAT_PROTECTION_VIOLATION Protection violation for local or remote
163 memory access. Protection Zone mismatch
164 between an LMR of one of the local_iov
165 segments and the local Endpoint.
166
167
168 DAT_PRIVILEGES_VIOLATION Privileges violation for local or remote
169 memory access. One of the LMRs used in
170 local_iov was either invalid or did not
171 have the local read privileges.
172
173
175 For best Send operation performance, the Consumer should align each
176 buffer segment of local_iov to the Optimal Buffer Alignment attribute
177 of the Provider. For portable applications, the Consumer should align
178 each buffer segment of local_iov to the DAT_OPTIMAL_ALIGNMENT.
179
181 See attributes(5) for descriptions of the following attributes:
182
183
184
185
186 ┌─────────────────────────────┬─────────────────────────────┐
187 │ ATTRIBUTE TYPE │ ATTRIBUTE VALUE │
188 ├─────────────────────────────┼─────────────────────────────┤
189 │Interface Stability │Standard: uDAPL, 1.1, 1.2 │
190 ├─────────────────────────────┼─────────────────────────────┤
191 │MT-Level │Unsafe │
192 └─────────────────────────────┴─────────────────────────────┘
193
195 libdat(3LIB), attributes(5)
196
197
198
199SunOS 5.11 16 Jul 2004 dat_ep_post_send(3DAT)