2N/A/*
2N/A * CDDL HEADER START
2N/A *
2N/A * The contents of this file are subject to the terms of the
2N/A * Common Development and Distribution License, Version 1.0 only
2N/A * (the "License"). You may not use this file except in compliance
2N/A * with the License.
2N/A *
2N/A * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2N/A * or http://www.opensolaris.org/os/licensing.
2N/A * See the License for the specific language governing permissions
2N/A * and limitations under the License.
2N/A *
2N/A * When distributing Covered Code, include this CDDL HEADER in each
2N/A * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2N/A * If applicable, add the following below this CDDL HEADER, with the
2N/A * fields enclosed by brackets "[]" replaced with your own identifying
2N/A * information: Portions Copyright [yyyy] [name of copyright owner]
2N/A *
2N/A * CDDL HEADER END
2N/A */
2N/A/*
2N/A * Copyright (c) 2002-2003, Network Appliance, Inc. All rights reserved.
2N/A */
2N/A
2N/A/*
2N/A * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
2N/A * Use is subject to license terms.
2N/A */
2N/A
2N/A#pragma ident "%Z%%M% %I% %E% SMI"
2N/A
2N/A
2N/A/*
2N/A *
2N/A * MODULE: udat_api.c
2N/A *
2N/A * PURPOSE: DAT Provider and Consumer registry functions.
2N/A *
2N/A */
2N/A
2N/A#include "dat_osd.h"
2N/A#include <dat/dat_registry.h>
2N/A
2N/ADAT_RETURN dat_lmr_create(
2N/A IN DAT_IA_HANDLE ia_handle,
2N/A IN DAT_MEM_TYPE mem_type,
2N/A IN DAT_REGION_DESCRIPTION region_description,
2N/A IN DAT_VLEN length,
2N/A IN DAT_PZ_HANDLE pz_handle,
2N/A IN DAT_MEM_PRIV_FLAGS privileges,
2N/A OUT DAT_LMR_HANDLE *lmr_handle,
2N/A OUT DAT_LMR_CONTEXT *lmr_context,
2N/A OUT DAT_RMR_CONTEXT *rmr_context,
2N/A OUT DAT_VLEN *registered_length,
2N/A OUT DAT_VADDR *registered_address)
2N/A{
2N/A if (DAT_BAD_HANDLE(ia_handle)) {
2N/A return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_IA));
2N/A }
2N/A return DAT_LMR_CREATE(ia_handle,
2N/A mem_type,
2N/A region_description,
2N/A length,
2N/A pz_handle,
2N/A privileges,
2N/A lmr_handle,
2N/A lmr_context,
2N/A rmr_context,
2N/A registered_length,
2N/A registered_address);
2N/A}
2N/A
2N/A
2N/ADAT_RETURN dat_evd_create(
2N/A IN DAT_IA_HANDLE ia_handle,
2N/A IN DAT_COUNT evd_min_qlen,
2N/A IN DAT_CNO_HANDLE cno_handle,
2N/A IN DAT_EVD_FLAGS evd_flags,
2N/A OUT DAT_EVD_HANDLE *evd_handle)
2N/A{
2N/A if (DAT_BAD_HANDLE(ia_handle)) {
2N/A return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_IA));
2N/A }
2N/A return DAT_EVD_CREATE(ia_handle,
2N/A evd_min_qlen,
2N/A cno_handle,
2N/A evd_flags,
2N/A evd_handle);
2N/A}
2N/A
2N/A
2N/ADAT_RETURN dat_evd_modify_cno(
2N/A IN DAT_EVD_HANDLE evd_handle,
2N/A IN DAT_CNO_HANDLE cno_handle)
2N/A{
2N/A if (DAT_BAD_HANDLE(evd_handle)) {
2N/A return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE1));
2N/A }
2N/A return DAT_EVD_MODIFY_CNO(evd_handle,
2N/A cno_handle);
2N/A}
2N/A
2N/A
2N/ADAT_RETURN dat_cno_create(
2N/A IN DAT_IA_HANDLE ia_handle,
2N/A IN DAT_OS_WAIT_PROXY_AGENT agent,
2N/A OUT DAT_CNO_HANDLE *cno_handle)
2N/A{
2N/A if (DAT_BAD_HANDLE(ia_handle)) {
2N/A return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_IA));
2N/A }
2N/A return DAT_CNO_CREATE(ia_handle,
2N/A agent,
2N/A cno_handle);
2N/A}
2N/A
2N/A
2N/ADAT_RETURN dat_cno_modify_agent(
2N/A IN DAT_CNO_HANDLE cno_handle,
2N/A IN DAT_OS_WAIT_PROXY_AGENT agent)
2N/A{
2N/A if (DAT_BAD_HANDLE(cno_handle)) {
2N/A return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_CNO));
2N/A }
2N/A return DAT_CNO_MODIFY_AGENT(cno_handle,
2N/A agent);
2N/A}
2N/A
2N/A
2N/ADAT_RETURN dat_cno_query(
2N/A IN DAT_CNO_HANDLE cno_handle,
2N/A IN DAT_CNO_PARAM_MASK cno_param_mask,
2N/A OUT DAT_CNO_PARAM *cno_param)
2N/A{
2N/A if (DAT_BAD_HANDLE(cno_handle)) {
2N/A return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_CNO));
2N/A }
2N/A return DAT_CNO_QUERY(cno_handle,
2N/A cno_param_mask,
2N/A cno_param);
2N/A}
2N/A
2N/A
2N/ADAT_RETURN dat_cno_free(
2N/A IN DAT_CNO_HANDLE cno_handle)
2N/A{
2N/A if (DAT_BAD_HANDLE(cno_handle)) {
2N/A return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_CNO));
2N/A }
2N/A return (DAT_CNO_FREE(cno_handle));
2N/A}
2N/A
2N/A
2N/ADAT_RETURN dat_cno_wait(
2N/A IN DAT_CNO_HANDLE cno_handle,
2N/A IN DAT_TIMEOUT timeout,
2N/A OUT DAT_EVD_HANDLE *evd_handle)
2N/A{
2N/A if (DAT_BAD_HANDLE(cno_handle)) {
2N/A return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_CNO));
2N/A }
2N/A return DAT_CNO_WAIT(cno_handle,
2N/A timeout,
2N/A evd_handle);
2N/A}
2N/A
2N/A
2N/ADAT_RETURN dat_evd_enable(
2N/A IN DAT_EVD_HANDLE evd_handle)
2N/A{
2N/A if (DAT_BAD_HANDLE(evd_handle)) {
2N/A return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE1));
2N/A }
2N/A return (DAT_EVD_ENABLE(evd_handle));
2N/A}
2N/A
2N/A
2N/ADAT_RETURN dat_evd_wait(
2N/A IN DAT_EVD_HANDLE evd_handle,
2N/A IN DAT_TIMEOUT Timeout,
2N/A IN DAT_COUNT Threshold,
2N/A OUT DAT_EVENT *event,
2N/A OUT DAT_COUNT *n_more_events)
2N/A{
2N/A if (DAT_BAD_HANDLE(evd_handle)) {
2N/A return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE1));
2N/A }
2N/A return DAT_EVD_WAIT(evd_handle,
2N/A Timeout,
2N/A Threshold,
2N/A event,
2N/A n_more_events);
2N/A}
2N/A
2N/A
2N/ADAT_RETURN dat_evd_disable(
2N/A IN DAT_EVD_HANDLE evd_handle)
2N/A{
2N/A if (DAT_BAD_HANDLE(evd_handle)) {
2N/A return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE1));
2N/A }
2N/A return (DAT_EVD_DISABLE(evd_handle));
2N/A}
2N/A
2N/A
2N/ADAT_RETURN dat_evd_set_unwaitable(
2N/A IN DAT_EVD_HANDLE evd_handle)
2N/A{
2N/A if (DAT_BAD_HANDLE(evd_handle)) {
2N/A return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE1));
2N/A }
2N/A return (DAT_EVD_SET_UNWAITABLE(evd_handle));
2N/A}
2N/A
2N/ADAT_RETURN dat_evd_clear_unwaitable(
2N/A IN DAT_EVD_HANDLE evd_handle)
2N/A{
2N/A if (DAT_BAD_HANDLE(evd_handle)) {
2N/A return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE1));
2N/A }
2N/A return (DAT_EVD_CLEAR_UNWAITABLE(evd_handle));
2N/A}
2N/A
2N/ADAT_RETURN dat_cr_handoff(
2N/A IN DAT_CR_HANDLE cr_handle,
2N/A IN DAT_CONN_QUAL handoff)
2N/A{
2N/A if (DAT_BAD_HANDLE(cr_handle)) {
2N/A return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_CR));
2N/A }
2N/A return DAT_CR_HANDOFF(cr_handle,
2N/A handoff);
2N/A}
2N/A
2N/A
2N/ADAT_RETURN dat_psp_create_any(
2N/A IN DAT_IA_HANDLE ia_handle,
2N/A OUT DAT_CONN_QUAL *conn_qual,
2N/A IN DAT_EVD_HANDLE evd_handle,
2N/A IN DAT_PSP_FLAGS psp_flags,
2N/A OUT DAT_PSP_HANDLE *psp_handle)
2N/A{
2N/A if (DAT_BAD_HANDLE(ia_handle)) {
2N/A return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_IA));
2N/A }
2N/A return DAT_PSP_CREATE_ANY(ia_handle,
2N/A conn_qual,
2N/A evd_handle,
2N/A psp_flags,
2N/A psp_handle);
2N/A}
2N/A
2N/A
2N/ADAT_RETURN dat_ia_query(
2N/A IN DAT_IA_HANDLE ia_handle,
2N/A OUT DAT_EVD_HANDLE *async_evd_handle,
2N/A IN DAT_IA_ATTR_MASK ia_attr_mask,
2N/A OUT DAT_IA_ATTR *ia_attr,
2N/A IN DAT_PROVIDER_ATTR_MASK provider_attr_mask,
2N/A OUT DAT_PROVIDER_ATTR *provider_attr)
2N/A{
2N/A if (DAT_BAD_HANDLE(ia_handle)) {
2N/A return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_IA));
2N/A }
2N/A return DAT_IA_QUERY(ia_handle,
2N/A async_evd_handle,
2N/A ia_attr_mask,
2N/A ia_attr,
2N/A provider_attr_mask,
2N/A provider_attr);
2N/A}
2N/A
2N/A
2N/ADAT_RETURN dat_evd_query(
2N/A IN DAT_EVD_HANDLE evd_handle,
2N/A IN DAT_EVD_PARAM_MASK evd_param_mask,
2N/A OUT DAT_EVD_PARAM *evd_param)
2N/A{
2N/A if (DAT_BAD_HANDLE(evd_handle)) {
2N/A return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE1));
2N/A }
2N/A return DAT_EVD_QUERY(evd_handle,
2N/A evd_param_mask,
2N/A evd_param);
2N/A}
2N/A
2N/A
2N/ADAT_RETURN dat_lmr_query(
2N/A IN DAT_LMR_HANDLE lmr_handle,
2N/A IN DAT_LMR_PARAM_MASK lmv_param_mask,
2N/A OUT DAT_LMR_PARAM *lmr_param)
2N/A{
2N/A if (DAT_BAD_HANDLE(lmr_handle)) {
2N/A return (DAT_ERROR(DAT_INVALID_HANDLE, DAT_INVALID_HANDLE_LMR));
2N/A }
2N/A return DAT_LMR_QUERY(lmr_handle,
2N/A lmv_param_mask,
2N/A lmr_param);
2N/A}