xref: /illumos-gate/usr/src/man/man3dat/dat_srq_query.3dat (revision 2bbdd445a21f9d61f4a0ca0faf05d5ceb2bd91f3)
te
This manual page is derived from the DAT/uDAPL 1.2 specification.
Portions Copyright (c) 2007, Sun Microsystems, Inc. All Rights Reserved.
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.
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.
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]
DAT_SRQ_QUERY 3DAT "Jul 16, 2004"
NAME
dat_srq_query - provide parameters of the shared receive queue
SYNOPSIS

cc [ flag.\|.\|. ] file.\|.\|. -ldat [ library.\|.\|. ]
#include <dat/udat.h>

DAT_RETURN
 dat_srq_query (
 IN DAT_SRQ_HANDLE srq_handle,
 IN DAT_SRQ_PARAM_MASK srq_param_mask,
 OUT DAT_SRQ_PARAM *srq_param
 )
PARAMETERS
srq_handle

A handle for an instance of the SRQ.

srq_param_mask

The mask for SRQ parameters.

srq_param

A pointer to a Consumer-allocated structure that the Provider fills with SRQ parameters.

DESCRIPTION

The dat_srq_query() function provides to the Consumer SRQ parameters. The Consumer passes a pointer to the Consumer-allocated structures for SRQ parameters that the Provider fills.

The srq_param_mask argument allows Consumers to specify which parameters to query. The Provider returns values for the requested srq_param_mask parameters. The Provider can return values for any other parameters.

In addition to the elements in SRQ attribute, dat_srq_query() provides additional information in the srq_param structure if Consumer requests it with srq_param_mask settings. The two that are related to entry counts on SRQ are the number of Receive buffers (available_dto_count) available for EPs to dequeue and the number of occupied SRQ entries (outstanding_dto_count) not available for new Recv buffer postings.

RETURN VALUES
DAT_SUCCESS

The operation was successful.

DAT_INVALID_PARAMETER

The srq_param_mask argument is invalid.

DAT_INVALID_HANDLE

The srq_handle argument is an invalid DAT handle.

USAGE

The Provider might not be able to provide the number of outstanding Recv of SRQ or available Recvs of SRQ. The Provider attribute indicates if the Provider does not support the query for one or these values. Even when the Provider supports the query for one or both of these values, it might not be able to provide this value at this moment. In either case, the return value for the attribute that cannot be provided will be DAT_VALUE_UNKNOWN.

Example: Consumer created SRQ with 10 entries and associated 1 EP with it. 3 Recv buffers have been posted to it. The query will report:

max_recv_dtos=10,
available_dto_count=3,
outstanding_dto_count=3.

After a Send message arrival the query will report:

max_recv_dtos=10,
available_dto_count=2,
outstanding_dto_count=3.

After Consumer dequeues Recv completion the query will report:

max_recv_dtos=10,
available_dto_count=2,
outstanding_dto_count=2.

In general, each EP associated with SRQ can have multiple buffers in progress of receiving messages as well completed Recv on EVDs. The watermark setting helps to control how many Recv buffers posted to SRQ an Endpoint can own.

If the Provider cannot support the query for the number of outstanding Recv of SRQ or available Recvs of SRQ, the value return for that attribute should be DAT_VALUE_UNKNOWN.

ATTRIBUTES

See attributes(5) for descriptions of the following attributes:

ATTRIBUTE TYPE ATTRIBUTE VALUE
Interface Stability Standard: uDAPL, 1.2
MT-Level Unsafe
SEE ALSO

dat_srq_create(3DAT), dat_srq_free(3DAT), dat_srq_post_recv(3DAT), dat_srq_resize(3DAT), dat_srq_set_lw(3DAT), libdat(3LIB), attributes(5)