1dat_ep_post_send(3DADTi)rect Access Transport Library Functidoants_ep_post_send(3DAT)
2
3
4

NAME

6       dat_ep_post_send - transfer data to the remote side
7

SYNOPSIS

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

PARAMETERS

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

DESCRIPTION

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

RETURN VALUES

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

USAGE

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

ATTRIBUTES

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

SEE ALSO

195       libdat(3LIB), attributes(5)
196
197
198
199SunOS 5.11                        16 Jul 2004           dat_ep_post_send(3DAT)
Impressum