2 .\" This manual page is derived from the DAT/uDAPL 1.2 specification.
3 .\" Portions Copyright (c) 2007, Sun Microsystems, Inc. All Rights Reserved.
4 .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
5 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
6 .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
7 .TH DAT_SRQ_CREATE 3DAT "Sep 11, 2006"
9 dat_srq_create \- create an instance of a shared receive queue
13 cc [ \fIflag\fR\&.\|.\|. ] \fIfile\fR\&.\|.\|. \fB-ldat\fR [ \fIlibrary\fR\&.\|.\|. ]
14 #include <\fBdat/udat.h\fR>
18 IN DAT_IA_HANDLE ia_handle,
19 IN DAT_PZ_HANDLE pz_handle,
20 IN DAT_SRQ_ATTR *srq_attr,
21 OUT DAT_SRQ_HANDLE *srq_handle
32 A handle for an open instance of the IA to which the created SRQ belongs.
41 A handle for an instance of the Protection Zone.
50 A pointer to a structure that contains Consumer-requested SRQ attributes.
56 \fB\fIsrq_handle\fR\fR
59 A handle for the created instance of a Shared Receive Queue.
65 The \fBdat_srq_create()\fR function creates an instance of a Shared Receive
66 Queue (SRQ) that is provided to the Consumer as \fIsrq_handle\fR. If the value
67 of \fBDAT_RETURN\fR is not \fBDAT_SUCCESS\fR, the value of \fIsrq_handle\fR is
71 The created SRQ is unattached to any Endpoints.
74 The Protection Zone \fIpz_handle\fR allows Consumers to control what local
75 memory can be used for the Recv DTO buffers posted to the SRQ. Only memory
76 referred to by LMRs of the posted Recv buffers that match the SRQ Protection
77 Zone can be accessed by the SRQ.
80 The \fIsrq_attributes\fR argument specifies the initial attributes of the
81 created SRQ. If the operation is successful, the created SRQ will have the
82 queue size at least \fImax_recv_dtos\fR and the number of entries on the posted
83 Recv scatter list of at lease \fImax_recv_iov\fR. The created SRQ can have the
84 queue size and support number of entries on post Recv buffers larger than
85 requested. Consumer can query SRQ to find out the actual supported queue size
89 The Consumer must set \fIlow_watermark\fR to \fBDAT_SRQ_LW_DEFAULT\fR to ensure
90 that an asynchronous event will not be generated immediately, since there are
91 no buffers in the created SRQ. The Consumer should set the Maximum Receive DTO
92 attribute and the Maximum number of elements in IOV for posted buffers as
96 When an associated EP tries to get a buffer from SRQ and there are no buffers
97 available, the behavior of the EP is the same as when there are no buffers on
98 the EP Recv Work Queue.
103 \fB\fBDAT_SUCCESS\fR\fR
106 The operation was successful.
112 \fB\fBDAT_INSUFFICIENT_RESOURCES\fR\fR
115 The operation failed due to resource limitations.
121 \fB\fBDAT_INVALID_HANDLE\fR\fR
124 Either \fIia_handle\fR or \fIpz_handle\fR is an invalid DAT handle.
130 \fB\fBDAT_INVALID_PARAMETER\fR\fR
133 One of the parameters is invalid. Either one of the requested SRQ attributes
134 was invalid or a combination of attributes is invalid.
140 \fB\fBDAT_MODEL_NOT_SUPPORTED\fR\fR
143 The requested Model was not supported by the Provider.
149 SRQ is created by the Consumer prior to creation of the EPs that will be using
150 it. Some Providers might restrict whether multiple EPs that share a SRQ can
151 have different Protection Zones. Check the \fIsrq_ep_pz_difference_support\fR
152 Provider attribute. The EPs that use SRQ might or might not use the same
156 Since a Recv buffer of SRQ can be used by any EP that is using SRQ, the
157 Consumer should ensure that the posted Recv buffers are large enough to receive
158 an incoming message on any of the EPs.
161 If Consumers do not want to receive an asynchronous event when the number of
162 buffers in SRQ falls below the Low Watermark, they should leave its value as
163 \fBDAT_SRQ_LW_DEFAULT\fR. If Consumers do want to receive a notification, they
164 can set the value to the desired one by calling \fBdat_srq_set_lw\fR(3DAT).
167 SRQ allows the Consumer to use fewer Recv buffers then posting the maximum
168 number of buffers for each connection. If the Consumer can upper bound the
169 number of incoming messages over all connections whose local EP is using SRQ,
170 then instead of posting this maximum for each connection the Consumer can post
171 them for all connections on SRQ. For example, the maximum utilized link
172 bandwidth divided over the message size can be used for an upper bound.
175 Depending on the underlying Transport, one or more messages can arrive
176 simultaneously on an EP that is using SRQ. Thus, the same EP can have multiple
177 Recv buffers in its possession without these buffers being on SRQ or
181 Since Recv buffers can be used by multiple connections of the local EPs that
182 are using SRQ, the completion order of the Recv buffers is no longer guaranteed
183 even when they use of the same \fIrecv_evd\fR. For each connection the Recv
184 buffers completion order is guaranteed to be in the order of the posted
185 matching Sends to the other end of the connection. There is no ordering
186 guarantee that Receive buffers will be returned in the order they were posted
187 even if there is only a single connection (Endpoint) associated with the SRQ.
188 There is no ordering guarantee between different connections or between
189 different \fIrecv_evd\fRs.
193 See \fBattributes\fR(5) for descriptions of the following attributes:
201 ATTRIBUTE TYPE ATTRIBUTE VALUE
203 Interface Stability Standard: uDAPL, 1.2
211 \fBdat_srq_free\fR(3DAT), \fBdat_srq_post_recv\fR(3DAT),
212 \fBdat_srq_query\fR(3DAT), \fBdat_srq_resize\fR(3DAT),
213 \fBdat_srq_set_lw\fR(3DAT), \fBlibdat\fR(3LIB), \fBattributes\fR(5)