/*
* CDDL HEADER START
*
* 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
* 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]
*
* CDDL HEADER END
*/
/*
* Copyright (c) 2002-2004, Network Appliance, Inc. All rights reserved.
*/
/*
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _UDAT_H_
#define _UDAT_H_
/*
*
* HEADER: udat.h
*
* PURPOSE: defines the user DAT API
*
* Description: Header file for "uDAPL: User Direct Access Programming
* Library, Version: 1.2"
*
* Mapping rules:
* All global symbols are prepended with "DAT_" or "dat_"
* All DAT objects have an 'api' tag which, such as 'ep' or 'lmr'
* The method table is in the provider definition structure.
*
*
*/
#ifdef __cplusplus
extern "C" {
#endif
#include <dat/udat_config.h>
#include <dat/dat_platform_specific.h>
typedef enum dat_mem_type
{
/* Shared between udat and kdat */
/* udat specific */
} DAT_MEM_TYPE;
/* dat handle types */
typedef enum dat_handle_type
{
/*
* EVD state consists of 3 orthogonal substates. One for
* enabled/disabled, one for waitable/unwaitable, and one
* for configuration. Within each substates the values are
* mutually exclusive.
*/
typedef enum dat_evd_state
{
typedef enum dat_evd_param_mask
{
struct dat_evd_param
{
};
/* Format for OS wait proxy agent function */
typedef void (*DAT_AGENT_FUNC)(
DAT_PVOID, /* instance data */
DAT_EVD_HANDLE /* Event Dispatcher*/);
/* Definition */
typedef struct dat_os_wait_proxy_agent
{
/* Define NULL Proxy agent */
#define DAT_OS_WAIT_PROXY_AGENT_NULL \
(DAT_OS_WAIT_PROXY_AGENT) { \
(DAT_AGENT_FUNC) NULL }
/* Flags */
/*
* The value specified by the uDAPL Consumer for dat_ia_open to indicate
* that not async EVD should be created for the opening instance of an IA.
* The same IA have been open before that has the only async EVD to
* handle async errors for all open instances of the IA.
*/
/*
* The value return by the dat_ia_query for the case when there is no
* async EVD for the IA instance. Consumer had specified the value of
* DAT_EVD_ASYNC_EXISTS for the async_evd_handle for dat_ia_open.
*/
/*
* Memory types
*
* Specifing memory type for LMR create. A consumer must use a single
* value when registering memory. The union of any of these
* flags is used in the provider parameters to indicate what memory
* type provider supports for LMR memory creation.
*/
/* For udapl only */
typedef struct dat_shared_memory
{
typedef union dat_region_description
{
/* LMR Arguments */
struct dat_lmr_param
{
};
typedef struct dat_cno_param
{
typedef enum dat_cno_param_mask
{
/* General Provider attributes. udat specific. */
typedef enum dat_pz_support
{
/*
* Provider should support merging of all event stream types. Provider
* attribute specify support for merging different event stream types.
* It is a 2D binary matrix where each row and column represents an event
* stream type. Each binary entry is 1 if the event streams of its raw
* and column can fed the same EVD, and 0 otherwise. The order of event
* streams in row and column is the same as in the definition of
* DAT_EVD_FLAGS: index 0 - Software Event, 1- Connection Request,
* 2 - DTO Completion, 3 - Connection event, 4 - RMR Bind Completion,
* 5 - Asynchronous event. By definition each diagonal entry is 1.
* Consumer allocates an array for it and passes it IN as a pointer
* for the array that Provider fills. Provider must fill the array
* that Consumer passes.
*/
struct dat_provider_attr
{
};
UINT64_C(0x0040000)
#include <dat/udat_vendor_specific.h>
/* ************************************************************************ */
/*
* User DAT functions definitions.
*/
extern DAT_RETURN dat_lmr_create(
/* Event Functions */
extern DAT_RETURN dat_evd_create(
extern DAT_RETURN dat_evd_modify_cno(
extern DAT_RETURN dat_cno_create(
extern DAT_RETURN dat_cno_modify_agent(
extern DAT_RETURN dat_cno_query(
extern DAT_RETURN dat_cno_free(
extern DAT_RETURN dat_cno_wait(
extern DAT_RETURN dat_evd_enable(
extern DAT_RETURN dat_evd_wait(
extern DAT_RETURN dat_evd_disable(
extern DAT_RETURN dat_evd_set_unwaitable(
extern DAT_RETURN dat_evd_clear_unwaitable(
#ifdef __cplusplus
}
#endif
#endif /* _UDAT_H_ */