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 (the "License").
2N/A * You may not use this file except in compliance 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-2004, Network Appliance, Inc. All rights reserved.
2N/A */
2N/A
2N/A/*
2N/A * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
2N/A * Use is subject to license terms.
2N/A */
2N/A
2N/A
2N/A#ifndef _DAT_REDIRECTION_H_
2N/A#define _DAT_REDIRECTION_H_
2N/A
2N/A/*
2N/A *
2N/A * HEADER: dat_redirection.h
2N/A *
2N/A * PURPOSE: Defines the common redirection macros
2N/A *
2N/A * Description: Macros to invoke DAPL functions from the dat_registry
2N/A *
2N/A * Mapping rules:
2N/A * All global symbols are prepended with "DAT_" or "dat_"
2N/A * All DAT objects have an 'api' tag which, such as 'ep' or 'lmr'
2N/A * The method table is in the provider definition structure.
2N/A *
2N/A *
2N/A *
2N/A */
2N/A
2N/A#ifdef __cplusplus
2N/Aextern "C" {
2N/A#endif
2N/A
2N/Atypedef struct dat_provider DAT_PROVIDER;
2N/A
2N/A#ifndef DAT_HANDLE_TO_PROVIDER
2N/A
2N/A/*
2N/A * A utility macro to fetch the Provider Library for any object
2N/A *
2N/A * An alternate version could be defined for single library systems.
2N/A * it would look something like:
2N/A * extern const struct dat_ia my_single_ia_provider;
2N/A * #define DAT_HANDLE_TO_PROVIDER(ignore) &my_single_ia_provider
2N/A *
2N/A * This would allow a good compiler to avoid indirection overhead when
2N/A * making function calls.
2N/A */
2N/A
2N/A#define DAT_HANDLE_TO_PROVIDER(handle) (*(DAT_PROVIDER **)(handle))
2N/A#endif
2N/A
2N/A#define DAT_IA_QUERY(ia, evd, ia_msk, ia_ptr, p_msk, p_ptr) \
2N/A (*DAT_HANDLE_TO_PROVIDER(ia)->ia_query_func)(\
2N/A (ia),\
2N/A (evd),\
2N/A (ia_msk),\
2N/A (ia_ptr),\
2N/A (p_msk),\
2N/A (p_ptr))
2N/A
2N/A#define DAT_SET_CONSUMER_CONTEXT(handle, context) \
2N/A (*DAT_HANDLE_TO_PROVIDER(handle)->set_consumer_context_func)(\
2N/A (handle),\
2N/A (context))
2N/A
2N/A#define DAT_GET_CONSUMER_CONTEXT(handle, context) \
2N/A (*DAT_HANDLE_TO_PROVIDER(handle)->get_consumer_context_func)(\
2N/A (handle),\
2N/A (context))
2N/A
2N/A#define DAT_GET_HANDLE_TYPE(handle, handle_type) \
2N/A (*DAT_HANDLE_TO_PROVIDER(handle)->get_handle_type_func)(\
2N/A (handle),\
2N/A (handle_type))
2N/A
2N/A#define DAT_CR_QUERY(cr, mask, param) \
2N/A (*DAT_HANDLE_TO_PROVIDER(cr)->cr_query_func)(\
2N/A (cr),\
2N/A (mask),\
2N/A (param))
2N/A
2N/A#define DAT_CR_ACCEPT(cr, ep, size, pdata) \
2N/A (*DAT_HANDLE_TO_PROVIDER(cr)->cr_accept_func)(\
2N/A (cr),\
2N/A (ep),\
2N/A (size),\
2N/A (pdata))
2N/A
2N/A#define DAT_CR_REJECT(cr) \
2N/A (*DAT_HANDLE_TO_PROVIDER(cr)->cr_reject_func)(\
2N/A (cr))
2N/A
2N/A#define DAT_CR_HANDOFF(cr, qual) \
2N/A (*DAT_HANDLE_TO_PROVIDER(cr)->cr_handoff_func)(\
2N/A (cr),\
2N/A (qual))
2N/A
2N/A#define DAT_EVD_QUERY(evd, mask, param) \
2N/A (*DAT_HANDLE_TO_PROVIDER(evd)->evd_query_func)(\
2N/A (evd),\
2N/A (mask),\
2N/A (param))
2N/A
2N/A#define DAT_EVD_RESIZE(evd, qsize) \
2N/A (*DAT_HANDLE_TO_PROVIDER(evd)->evd_resize_func)(\
2N/A (evd),\
2N/A (qsize))
2N/A
2N/A#define DAT_EVD_POST_SE(evd, event) \
2N/A (*DAT_HANDLE_TO_PROVIDER(evd)->evd_post_se_func)(\
2N/A (evd),\
2N/A (event))
2N/A
2N/A#define DAT_EVD_DEQUEUE(evd, event) \
2N/A (*DAT_HANDLE_TO_PROVIDER(evd)->evd_dequeue_func)(\
2N/A (evd),\
2N/A (event))
2N/A
2N/A#define DAT_EVD_FREE(evd)\
2N/A (*DAT_HANDLE_TO_PROVIDER(evd)->evd_free_func)(\
2N/A (evd))
2N/A
2N/A#define DAT_EP_CREATE(ia, pz, in_evd, out_evd, connect_evd, attr, ep) \
2N/A (*DAT_HANDLE_TO_PROVIDER(ia)->ep_create_func)(\
2N/A (ia),\
2N/A (pz),\
2N/A (in_evd),\
2N/A (out_evd),\
2N/A (connect_evd),\
2N/A (attr),\
2N/A (ep))
2N/A
2N/A#define DAT_EP_CREATE_WITH_SRQ(ia, pz, in_evd, out_evd, connect_evd, srq,\
2N/A attr, ep) \
2N/A (*DAT_HANDLE_TO_PROVIDER(ia)->ep_create_with_srq_func)(\
2N/A (ia),\
2N/A (pz),\
2N/A (in_evd),\
2N/A (out_evd),\
2N/A (connect_evd),\
2N/A (srq),\
2N/A (attr),\
2N/A (ep))
2N/A
2N/A#define DAT_EP_QUERY(ep, mask, param) \
2N/A (*DAT_HANDLE_TO_PROVIDER(ep)->ep_query_func)(\
2N/A (ep),\
2N/A (mask),\
2N/A (param))
2N/A
2N/A#define DAT_EP_MODIFY(ep, mask, param) \
2N/A (*DAT_HANDLE_TO_PROVIDER(ep)->ep_modify_func)(\
2N/A (ep),\
2N/A (mask),\
2N/A (param))
2N/A
2N/A#define DAT_EP_CONNECT(ep, ia_addr, conn_qual, timeout, psize, pdata, \
2N/A qos, flags) \
2N/A (*DAT_HANDLE_TO_PROVIDER(ep)->ep_connect_func)(\
2N/A (ep),\
2N/A (ia_addr),\
2N/A (conn_qual),\
2N/A (timeout),\
2N/A (psize),\
2N/A (pdata),\
2N/A (qos),\
2N/A (flags))
2N/A
2N/A#define DAT_EP_DUP_CONNECT(ep, dup, timeout, psize, pdata, qos) \
2N/A (*DAT_HANDLE_TO_PROVIDER(ep)->ep_dup_connect_func)(\
2N/A (ep),\
2N/A (dup),\
2N/A (timeout),\
2N/A (psize),\
2N/A (pdata),\
2N/A (qos))
2N/A
2N/A#define DAT_EP_DISCONNECT(ep, flags) \
2N/A (*DAT_HANDLE_TO_PROVIDER(ep)->ep_disconnect_func)(\
2N/A (ep),\
2N/A (flags))
2N/A
2N/A#define DAT_EP_POST_SEND(ep, size, lbuf, cookie, flags) \
2N/A (*DAT_HANDLE_TO_PROVIDER(ep)->ep_post_send_func)(\
2N/A (ep),\
2N/A (size),\
2N/A (lbuf),\
2N/A (cookie),\
2N/A (flags))
2N/A
2N/A#define DAT_EP_POST_RECV(ep, size, lbuf, cookie, flags) \
2N/A (*DAT_HANDLE_TO_PROVIDER(ep)->ep_post_recv_func)(\
2N/A (ep),\
2N/A (size),\
2N/A (lbuf),\
2N/A (cookie),\
2N/A (flags))
2N/A
2N/A#define DAT_EP_POST_RDMA_READ(ep, size, lbuf, cookie, rbuf, flags) \
2N/A (*DAT_HANDLE_TO_PROVIDER(ep)->ep_post_rdma_read_func)(\
2N/A (ep),\
2N/A (size),\
2N/A (lbuf),\
2N/A (cookie),\
2N/A (rbuf),\
2N/A (flags))
2N/A
2N/A#define DAT_EP_POST_RDMA_WRITE(ep, size, lbuf, cookie, rbuf, flags) \
2N/A (*DAT_HANDLE_TO_PROVIDER(ep)->ep_post_rdma_write_func)(\
2N/A (ep),\
2N/A (size),\
2N/A (lbuf),\
2N/A (cookie),\
2N/A (rbuf),\
2N/A (flags))
2N/A
2N/A#define DAT_EP_GET_STATUS(ep, ep_state, recv_idle, request_idle) \
2N/A (*DAT_HANDLE_TO_PROVIDER(ep)->ep_get_status_func)(\
2N/A (ep), \
2N/A (ep_state),\
2N/A (recv_idle),\
2N/A (request_idle))
2N/A
2N/A#define DAT_EP_FREE(ep)\
2N/A (*DAT_HANDLE_TO_PROVIDER(ep)->ep_free_func)(\
2N/A (ep))
2N/A
2N/A#define DAT_EP_RESET(ep)\
2N/A (*DAT_HANDLE_TO_PROVIDER(ep)->ep_reset_func)(\
2N/A (ep))
2N/A
2N/A#define DAT_EP_RECV_QUERY(ep, nbuf_alloc, buf_span) \
2N/A (*DAT_HANDLE_TO_PROVIDER(ep)->ep_recv_query_func)(\
2N/A (ep),\
2N/A (nbuf_alloc),\
2N/A (buf_span))
2N/A
2N/A#define DAT_EP_SET_WATERMARK(ep, soft_wm, hard_wm) \
2N/A (*DAT_HANDLE_TO_PROVIDER(ep)->ep_set_watermark_func)(\
2N/A (ep),\
2N/A (soft_wm),\
2N/A (hard_wm))
2N/A
2N/A#define DAT_LMR_QUERY(lmr, mask, param)\
2N/A (*DAT_HANDLE_TO_PROVIDER(lmr)->lmr_query_func)(\
2N/A (lmr),\
2N/A (mask),\
2N/A (param))
2N/A
2N/A#define DAT_LMR_FREE(lmr)\
2N/A (*DAT_HANDLE_TO_PROVIDER(lmr)->lmr_free_func)(\
2N/A (lmr))
2N/A
2N/A#define DAT_LMR_SYNC_RDMA_READ(ia, lbuf, size) \
2N/A (*DAT_HANDLE_TO_PROVIDER(ia)->lmr_sync_rdma_read_func)(\
2N/A (ia), \
2N/A (lbuf), \
2N/A (size))
2N/A
2N/A#define DAT_LMR_SYNC_RDMA_WRITE(ia, lbuf, size) \
2N/A (*DAT_HANDLE_TO_PROVIDER(ia)->lmr_sync_rdma_write_func)(\
2N/A (ia), \
2N/A (lbuf), \
2N/A (size))
2N/A
2N/A#define DAT_RMR_CREATE(pz, rmr) \
2N/A (*DAT_HANDLE_TO_PROVIDER(pz)->rmr_create_func)(\
2N/A (pz),\
2N/A (rmr))
2N/A
2N/A#define DAT_RMR_QUERY(rmr, mask, param) \
2N/A (*DAT_HANDLE_TO_PROVIDER(rmr)->rmr_query_func)(\
2N/A (rmr),\
2N/A (mask),\
2N/A (param))
2N/A
2N/A#define DAT_RMR_BIND(rmr, lmr, mem_priv, ep, cookie, flags, context) \
2N/A (*DAT_HANDLE_TO_PROVIDER(rmr)->rmr_bind_func)(\
2N/A (rmr),\
2N/A (lmr),\
2N/A (mem_priv),\
2N/A (ep),\
2N/A (cookie),\
2N/A (flags),\
2N/A (context))
2N/A
2N/A#define DAT_RMR_FREE(rmr)\
2N/A (*DAT_HANDLE_TO_PROVIDER(rmr)->rmr_free_func)(\
2N/A (rmr))
2N/A
2N/A#define DAT_PSP_CREATE(ia, conn_qual, evd, flags, handle) \
2N/A (*DAT_HANDLE_TO_PROVIDER(ia)->psp_create_func)(\
2N/A (ia),\
2N/A (conn_qual),\
2N/A (evd),\
2N/A (flags),\
2N/A (handle))
2N/A
2N/A#define DAT_PSP_CREATE_ANY(ia, conn_qual, evd, flags, handle) \
2N/A (*DAT_HANDLE_TO_PROVIDER(ia)->psp_create_any_func)(\
2N/A (ia), \
2N/A (conn_qual), \
2N/A (evd), \
2N/A (flags), \
2N/A (handle))
2N/A
2N/A#define DAT_PSP_QUERY(psp, mask, param) \
2N/A (*DAT_HANDLE_TO_PROVIDER(psp)->psp_query_func)(\
2N/A (psp),\
2N/A (mask),\
2N/A (param))
2N/A
2N/A#define DAT_PSP_FREE(psp)\
2N/A (*DAT_HANDLE_TO_PROVIDER(psp)->psp_free_func)(\
2N/A (psp))
2N/A
2N/A#define DAT_RSP_CREATE(ia, conn_qual, ep, evd, handle) \
2N/A (*DAT_HANDLE_TO_PROVIDER(ia)->rsp_create_func)(\
2N/A (ia),\
2N/A (conn_qual),\
2N/A (ep),\
2N/A (evd),\
2N/A (handle))
2N/A
2N/A#define DAT_RSP_QUERY(rsp, mask, param) \
2N/A (*DAT_HANDLE_TO_PROVIDER(rsp)->rsp_query_func)(\
2N/A (rsp),\
2N/A (mask),\
2N/A (param))
2N/A
2N/A#define DAT_RSP_FREE(rsp)\
2N/A (*DAT_HANDLE_TO_PROVIDER(rsp)->rsp_free_func)(\
2N/A (rsp))
2N/A
2N/A#define DAT_PZ_CREATE(ia, pz) \
2N/A (*DAT_HANDLE_TO_PROVIDER(ia)->pz_create_func)(\
2N/A (ia),\
2N/A (pz))
2N/A
2N/A#define DAT_PZ_QUERY(pz, mask, param) \
2N/A (*DAT_HANDLE_TO_PROVIDER(pz)->pz_query_func)(\
2N/A (pz),\
2N/A (mask),\
2N/A (param))
2N/A
2N/A#define DAT_PZ_FREE(pz) \
2N/A (*DAT_HANDLE_TO_PROVIDER(pz)->pz_free_func)(\
2N/A (pz))
2N/A
2N/A#define DAT_SRQ_CREATE(ia, pz, attr, srq) \
2N/A (*DAT_HANDLE_TO_PROVIDER(ia)->srq_create_func)(\
2N/A (ia),\
2N/A (pz),\
2N/A (attr),\
2N/A (srq))
2N/A
2N/A#define DAT_SRQ_SET_LW(srq, lw) \
2N/A (*DAT_HANDLE_TO_PROVIDER(srq)->srq_set_lw_func)(\
2N/A (srq),\
2N/A (lw))
2N/A
2N/A#define DAT_SRQ_FREE(srq) \
2N/A (*DAT_HANDLE_TO_PROVIDER(srq)->srq_free_func)(\
2N/A (srq))
2N/A
2N/A#define DAT_SRQ_QUERY(srq, mask, param) \
2N/A (*DAT_HANDLE_TO_PROVIDER(srq)->srq_query_func)(\
2N/A (srq),\
2N/A (mask),\
2N/A (param))
2N/A
2N/A#define DAT_SRQ_RESIZE(srq, qsize) \
2N/A (*DAT_HANDLE_TO_PROVIDER(srq)->srq_resize_func)(\
2N/A (srq),\
2N/A (qsize))
2N/A
2N/A#define DAT_SRQ_POST_RECV(srq, size, lbuf, cookie) \
2N/A (*DAT_HANDLE_TO_PROVIDER(srq)->srq_post_recv_func)(\
2N/A (srq),\
2N/A (size),\
2N/A (lbuf),\
2N/A (cookie))
2N/A
2N/A/*
2N/A * FUNCTION PROTOTYPES
2N/A */
2N/A
2N/Atypedef DAT_RETURN (*DAT_IA_OPEN_FUNC)(
2N/A IN const DAT_NAME_PTR, /* provider */
2N/A IN DAT_COUNT, /* asynch_evd_min_qlen */
2N/A INOUT DAT_EVD_HANDLE *, /* asynch_evd_handle */
2N/A OUT DAT_IA_HANDLE *, /* ia_handle */
2N/A IN boolean_t); /* relaxed ordering aware */
2N/A
2N/Atypedef DAT_RETURN (*DAT_IA_OPENV_FUNC)(
2N/A IN const DAT_NAME_PTR, /* provider */
2N/A IN DAT_COUNT, /* asynch_evd_min_qlen */
2N/A INOUT DAT_EVD_HANDLE *, /* asynch_evd_handle */
2N/A OUT DAT_IA_HANDLE *, /* ia_handle */
2N/A IN DAT_UINT32, /* dat major version number */
2N/A IN DAT_UINT32, /* dat minor version number */
2N/A IN DAT_BOOLEAN); /* dat thread safety */
2N/A
2N/Atypedef DAT_RETURN (*DAT_IA_CLOSE_FUNC)(
2N/A IN DAT_IA_HANDLE, /* ia_handle */
2N/A IN DAT_CLOSE_FLAGS); /* close_flags */
2N/A
2N/Atypedef DAT_RETURN (*DAT_IA_QUERY_FUNC)(
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/* helper functions */
2N/A
2N/Atypedef DAT_RETURN (*DAT_SET_CONSUMER_CONTEXT_FUNC)(
2N/A IN DAT_HANDLE, /* dat handle */
2N/A IN DAT_CONTEXT); /* context */
2N/A
2N/Atypedef DAT_RETURN (*DAT_GET_CONSUMER_CONTEXT_FUNC)(
2N/A IN DAT_HANDLE, /* dat handle */
2N/A OUT DAT_CONTEXT *); /* context */
2N/A
2N/Atypedef DAT_RETURN (*DAT_GET_HANDLE_TYPE_FUNC)(
2N/A IN DAT_HANDLE,
2N/A OUT DAT_HANDLE_TYPE *);
2N/A
2N/A/* CR Functions */
2N/A
2N/Atypedef DAT_RETURN (*DAT_CR_QUERY_FUNC)(
2N/A IN DAT_CR_HANDLE, /* cr_handle */
2N/A IN DAT_CR_PARAM_MASK, /* cr_param_mask */
2N/A OUT DAT_CR_PARAM *); /* cr_param */
2N/A
2N/Atypedef DAT_RETURN (*DAT_CR_ACCEPT_FUNC)(
2N/A IN DAT_CR_HANDLE, /* cr_handle */
2N/A IN DAT_EP_HANDLE, /* ep_handle */
2N/A IN DAT_COUNT, /* private_data_size */
2N/A IN const DAT_PVOID); /* private_data */
2N/A
2N/Atypedef DAT_RETURN (*DAT_CR_REJECT_FUNC)(
2N/A IN DAT_CR_HANDLE);
2N/A
2N/A/*
2N/A * For DAT-1.1 this function is defined for both uDAPL and kDAPL.
2N/A * For DAT-1.0 it was only defined for uDAPL.
2N/A */
2N/Atypedef DAT_RETURN (*DAT_CR_HANDOFF_FUNC)(
2N/A IN DAT_CR_HANDLE, /* cr_handle */
2N/A IN DAT_CONN_QUAL); /* handoff */
2N/A
2N/A/* EVD Functions */
2N/A
2N/Atypedef DAT_RETURN (*DAT_EVD_RESIZE_FUNC)(
2N/A IN DAT_EVD_HANDLE, /* evd_handle */
2N/A IN DAT_COUNT); /* evd_min_qlen */
2N/A
2N/Atypedef DAT_RETURN (*DAT_EVD_POST_SE_FUNC)(
2N/A IN DAT_EVD_HANDLE, /* evd_handle */
2N/A IN const DAT_EVENT *); /* event */
2N/A
2N/Atypedef DAT_RETURN (*DAT_EVD_DEQUEUE_FUNC)(
2N/A IN DAT_EVD_HANDLE, /* evd_handle */
2N/A OUT DAT_EVENT *); /* event */
2N/A
2N/Atypedef DAT_RETURN (*DAT_EVD_FREE_FUNC)(
2N/A IN DAT_EVD_HANDLE); /* evd_handle */
2N/A
2N/Atypedef DAT_RETURN (*DAT_EVD_QUERY_FUNC)(
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/* EP functions */
2N/A
2N/Atypedef DAT_RETURN (*DAT_EP_CREATE_FUNC)(
2N/A IN DAT_IA_HANDLE, /* ia_handle */
2N/A IN DAT_PZ_HANDLE, /* pz_handle */
2N/A IN DAT_EVD_HANDLE, /* recv_completion_evd_handle */
2N/A IN DAT_EVD_HANDLE, /* request_completion_evd_handle */
2N/A IN DAT_EVD_HANDLE, /* connect_evd_handle */
2N/A IN const DAT_EP_ATTR *, /* ep_attributes */
2N/A OUT DAT_EP_HANDLE *); /* ep_handle */
2N/A
2N/Atypedef DAT_RETURN (*DAT_EP_CREATE_WITH_SRQ_FUNC)(
2N/A IN DAT_IA_HANDLE, /* ia_handle */
2N/A IN DAT_PZ_HANDLE, /* pz_handle */
2N/A IN DAT_EVD_HANDLE, /* recv_evd_handle */
2N/A IN DAT_EVD_HANDLE, /* request_evd_handle */
2N/A IN DAT_EVD_HANDLE, /* connect_evd_handle */
2N/A IN DAT_SRQ_HANDLE, /* srq_handle */
2N/A IN const DAT_EP_ATTR *, /* ep_attributes */
2N/A OUT DAT_EP_HANDLE *); /* ep_handle */
2N/A
2N/Atypedef DAT_RETURN (*DAT_EP_QUERY_FUNC)(
2N/A IN DAT_EP_HANDLE, /* ep_handle */
2N/A IN DAT_EP_PARAM_MASK, /* ep_param_mask */
2N/A OUT DAT_EP_PARAM *); /* ep_param */
2N/A
2N/Atypedef DAT_RETURN (*DAT_EP_MODIFY_FUNC)(
2N/A IN DAT_EP_HANDLE, /* ep_handle */
2N/A IN DAT_EP_PARAM_MASK, /* ep_param_mask */
2N/A IN const DAT_EP_PARAM *); /* ep_param */
2N/A
2N/Atypedef DAT_RETURN (*DAT_EP_CONNECT_FUNC)(
2N/A IN DAT_EP_HANDLE, /* ep_handle */
2N/A IN DAT_IA_ADDRESS_PTR, /* remote_ia_address */
2N/A IN DAT_CONN_QUAL, /* remote_conn_qual */
2N/A IN DAT_TIMEOUT, /* timeout */
2N/A IN DAT_COUNT, /* private_data_size */
2N/A IN const DAT_PVOID, /* private_data */
2N/A IN DAT_QOS, /* quality_of_service */
2N/A IN DAT_CONNECT_FLAGS); /* connect_flags */
2N/A
2N/Atypedef DAT_RETURN (*DAT_EP_DUP_CONNECT_FUNC)(
2N/A IN DAT_EP_HANDLE, /* ep_handle */
2N/A IN DAT_EP_HANDLE, /* ep_dup_handle */
2N/A IN DAT_TIMEOUT, /* timeout */
2N/A IN DAT_COUNT, /* private_data_size */
2N/A IN const DAT_PVOID, /* private_data */
2N/A IN DAT_QOS); /* quality_of_service */
2N/A
2N/Atypedef DAT_RETURN (*DAT_EP_DISCONNECT_FUNC)(
2N/A IN DAT_EP_HANDLE, /* ep_handle */
2N/A IN DAT_CLOSE_FLAGS); /* close_flags */
2N/A
2N/Atypedef DAT_RETURN (*DAT_EP_POST_SEND_FUNC)(
2N/A IN DAT_EP_HANDLE, /* ep_handle */
2N/A IN DAT_COUNT, /* num_segments */
2N/A IN DAT_LMR_TRIPLET *, /* local_iov */
2N/A IN DAT_DTO_COOKIE, /* user_cookie */
2N/A IN DAT_COMPLETION_FLAGS); /* completion_flags */
2N/A
2N/Atypedef DAT_RETURN (*DAT_EP_POST_RECV_FUNC)(
2N/A IN DAT_EP_HANDLE, /* ep_handle */
2N/A IN DAT_COUNT, /* num_segments */
2N/A IN DAT_LMR_TRIPLET *, /* local_iov */
2N/A IN DAT_DTO_COOKIE, /* user_cookie */
2N/A IN DAT_COMPLETION_FLAGS); /* completion_flags */
2N/A
2N/Atypedef DAT_RETURN (*DAT_EP_POST_RDMA_READ_FUNC)(
2N/A IN DAT_EP_HANDLE, /* ep_handle */
2N/A IN DAT_COUNT, /* num_segments */
2N/A IN DAT_LMR_TRIPLET *, /* local_iov */
2N/A IN DAT_DTO_COOKIE, /* user_cookie */
2N/A IN const DAT_RMR_TRIPLET *, /* remote_iov */
2N/A IN DAT_COMPLETION_FLAGS); /* completion_flags */
2N/A
2N/Atypedef DAT_RETURN (*DAT_EP_POST_RDMA_WRITE_FUNC)(
2N/A IN DAT_EP_HANDLE, /* ep_handle */
2N/A IN DAT_COUNT, /* num_segments */
2N/A IN DAT_LMR_TRIPLET *, /* local_iov */
2N/A IN DAT_DTO_COOKIE, /* user_cookie */
2N/A IN const DAT_RMR_TRIPLET *, /* remote_iov */
2N/A IN DAT_COMPLETION_FLAGS); /* completion_flags */
2N/A
2N/Atypedef DAT_RETURN (*DAT_EP_GET_STATUS_FUNC)(
2N/A IN DAT_EP_HANDLE, /* ep_handle */
2N/A OUT DAT_EP_STATE *, /* ep_state */
2N/A OUT DAT_BOOLEAN *, /* recv_idle */
2N/A OUT DAT_BOOLEAN *); /* request_idle */
2N/A
2N/Atypedef DAT_RETURN (*DAT_EP_FREE_FUNC)(
2N/A IN DAT_EP_HANDLE); /* ep_handle */
2N/A
2N/Atypedef DAT_RETURN (*DAT_EP_RESET_FUNC)(
2N/A IN DAT_EP_HANDLE); /* ep_handle */
2N/A
2N/Atypedef DAT_RETURN (*DAT_EP_RECV_QUERY_FUNC)(
2N/A IN DAT_EP_HANDLE, /* ep_handle */
2N/A OUT DAT_COUNT *, /* nbufs_allocated */
2N/A OUT DAT_COUNT *); /* bufs_alloc_span */
2N/A
2N/Atypedef DAT_RETURN (*DAT_EP_SET_WATERMARK_FUNC)(
2N/A IN DAT_EP_HANDLE, /* ep_handle */
2N/A IN DAT_COUNT, /* soft_high_watermark */
2N/A IN DAT_COUNT); /* hard_high_watermark */
2N/A
2N/A/* LMR functions */
2N/A
2N/Atypedef DAT_RETURN (*DAT_LMR_FREE_FUNC)(
2N/A IN DAT_LMR_HANDLE);
2N/A
2N/Atypedef DAT_RETURN (*DAT_LMR_QUERY_FUNC)(
2N/A IN DAT_LMR_HANDLE, /* lmr_handle */
2N/A IN DAT_LMR_PARAM_MASK, /* lmr_param_mask */
2N/A OUT DAT_LMR_PARAM *); /* lmr_param */
2N/A
2N/Atypedef DAT_RETURN (*DAT_LMR_SYNC_RDMA_READ_FUNC)(
2N/A IN DAT_IA_HANDLE, /* ia_handle */
2N/A IN const DAT_LMR_TRIPLET *, /* local_segments */
2N/A IN DAT_VLEN); /* num_segments */
2N/A
2N/Atypedef DAT_RETURN (*DAT_LMR_SYNC_RDMA_WRITE_FUNC)(
2N/A IN DAT_IA_HANDLE, /* ia_handle */
2N/A IN const DAT_LMR_TRIPLET *, /* local_segments */
2N/A IN DAT_VLEN); /* num_segments */
2N/A
2N/A/* RMR Functions */
2N/A
2N/Atypedef DAT_RETURN (*DAT_RMR_CREATE_FUNC)(
2N/A IN DAT_PZ_HANDLE, /* pz_handle */
2N/A OUT DAT_RMR_HANDLE *); /* rmr_handle */
2N/A
2N/Atypedef DAT_RETURN (*DAT_RMR_QUERY_FUNC)(
2N/A IN DAT_RMR_HANDLE, /* rmr_handle */
2N/A IN DAT_RMR_PARAM_MASK, /* rmr_param_mask */
2N/A OUT DAT_RMR_PARAM *); /* rmr_param */
2N/A
2N/Atypedef DAT_RETURN (*DAT_RMR_BIND_FUNC)(
2N/A IN DAT_RMR_HANDLE, /* rmr_handle */
2N/A IN const DAT_LMR_TRIPLET *, /* lmr_triplet */
2N/A IN DAT_MEM_PRIV_FLAGS, /* mem_priv */
2N/A IN DAT_EP_HANDLE, /* ep_handle */
2N/A IN DAT_RMR_COOKIE, /* user_cookie */
2N/A IN DAT_COMPLETION_FLAGS, /* completion_flags */
2N/A OUT DAT_RMR_CONTEXT *); /* context */
2N/A
2N/Atypedef DAT_RETURN (*DAT_RMR_FREE_FUNC)(
2N/A IN DAT_RMR_HANDLE);
2N/A
2N/A/* PSP Functions */
2N/A
2N/Atypedef DAT_RETURN (*DAT_PSP_CREATE_FUNC)(
2N/A IN DAT_IA_HANDLE, /* ia_handle */
2N/A IN 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/Atypedef DAT_RETURN (*DAT_PSP_CREATE_ANY_FUNC)(
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/Atypedef DAT_RETURN (*DAT_PSP_QUERY_FUNC)(
2N/A IN DAT_PSP_HANDLE, /* psp_handle */
2N/A IN DAT_PSP_PARAM_MASK, /* psp_param_mask */
2N/A OUT DAT_PSP_PARAM *); /* *psp_param */
2N/A
2N/Atypedef DAT_RETURN (*DAT_PSP_FREE_FUNC)(
2N/A IN DAT_PSP_HANDLE); /* psp_handle */
2N/A
2N/A/* RSP Functions */
2N/A
2N/Atypedef DAT_RETURN (*DAT_RSP_CREATE_FUNC)(
2N/A IN DAT_IA_HANDLE, /* ia_handle */
2N/A IN DAT_CONN_QUAL, /* conn_qual */
2N/A IN DAT_EP_HANDLE, /* ep_handle */
2N/A IN DAT_EVD_HANDLE, /* evd_handle */
2N/A OUT DAT_RSP_HANDLE *); /* rsp_handle */
2N/A
2N/Atypedef DAT_RETURN (*DAT_RSP_QUERY_FUNC) (
2N/A IN DAT_RSP_HANDLE, /* rsp_handle */
2N/A IN DAT_RSP_PARAM_MASK, /* rsp_param_mask */
2N/A OUT DAT_RSP_PARAM *); /* *rsp_param */
2N/A
2N/Atypedef DAT_RETURN (*DAT_RSP_FREE_FUNC)(
2N/A IN DAT_RSP_HANDLE); /* rsp_handle */
2N/A
2N/A/* PZ Functions */
2N/A
2N/Atypedef DAT_RETURN (*DAT_PZ_CREATE_FUNC)(
2N/A IN DAT_IA_HANDLE, /* ia_handle */
2N/A OUT DAT_PZ_HANDLE *); /* pz_handle */
2N/A
2N/Atypedef DAT_RETURN (*DAT_PZ_QUERY_FUNC)(
2N/A IN DAT_PZ_HANDLE, /* pz_handle */
2N/A IN DAT_PZ_PARAM_MASK, /* pz_param_mask */
2N/A OUT DAT_PZ_PARAM *); /* pz_param */
2N/A
2N/Atypedef DAT_RETURN (*DAT_PZ_FREE_FUNC)(
2N/A IN DAT_PZ_HANDLE); /* pz_handle */
2N/A
2N/A/* SRQ Functions */
2N/A
2N/Atypedef DAT_RETURN (*DAT_SRQ_CREATE_FUNC)(
2N/A IN DAT_IA_HANDLE, /* ia_handle */
2N/A IN DAT_PZ_HANDLE, /* pz_handle */
2N/A IN DAT_SRQ_ATTR *, /* srq_attr */
2N/A OUT DAT_SRQ_HANDLE *); /* srq_handle */
2N/A
2N/Atypedef DAT_RETURN (*DAT_SRQ_SET_LW_FUNC)(
2N/A IN DAT_SRQ_HANDLE, /* srq_handle */
2N/A IN DAT_COUNT); /* low_watermark */
2N/A
2N/Atypedef DAT_RETURN (*DAT_SRQ_FREE_FUNC)(
2N/A IN DAT_SRQ_HANDLE); /* srq_handle */
2N/A
2N/Atypedef DAT_RETURN (*DAT_SRQ_QUERY_FUNC)(
2N/A IN DAT_SRQ_HANDLE, /* srq_handle */
2N/A IN DAT_SRQ_PARAM_MASK, /* srq_param_mask */
2N/A OUT DAT_SRQ_PARAM *); /* srq_param */
2N/A
2N/Atypedef DAT_RETURN (*DAT_SRQ_RESIZE_FUNC)(
2N/A IN DAT_SRQ_HANDLE, /* srq_handle */
2N/A IN DAT_COUNT); /* srq_max_recv_dto */
2N/A
2N/Atypedef DAT_RETURN (*DAT_SRQ_POST_RECV_FUNC)(
2N/A IN DAT_SRQ_HANDLE, /* srq_handle */
2N/A IN DAT_COUNT, /* num_segments */
2N/A IN DAT_LMR_TRIPLET *, /* local_iov */
2N/A IN DAT_DTO_COOKIE); /* user_cookie */
2N/A
2N/A#ifdef __cplusplus
2N/A}
2N/A#endif
2N/A
2N/A#endif /* _DAT_REDIRECTION_H_ */