dat_redirection.h revision 03494a9880d80f834bec10a1e8f0a2f8f7c97bf4
/*
* 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 _DAT_REDIRECTION_H_
#define _DAT_REDIRECTION_H_
/*
*
* HEADER: dat_redirection.h
*
* PURPOSE: Defines the common redirection macros
*
* Description: Macros to invoke DAPL functions from the dat_registry
*
* 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
typedef struct dat_provider DAT_PROVIDER;
#ifndef DAT_HANDLE_TO_PROVIDER
/*
* A utility macro to fetch the Provider Library for any object
*
* An alternate version could be defined for single library systems.
* it would look something like:
* extern const struct dat_ia my_single_ia_provider;
* #define DAT_HANDLE_TO_PROVIDER(ignore) &my_single_ia_provider
*
* This would allow a good compiler to avoid indirection overhead when
* making function calls.
*/
#endif
(ia),\
(evd),\
(ia_msk),\
(ia_ptr),\
(p_msk),\
(p_ptr))
(handle),\
(context))
(handle),\
(context))
(handle),\
(handle_type))
(cr),\
(mask),\
(param))
(cr),\
(ep),\
(size),\
(pdata))
#define DAT_CR_REJECT(cr) \
(cr))
(cr),\
(qual))
(evd),\
(mask),\
(param))
(evd),\
(qsize))
(evd),\
(event))
(evd),\
(event))
#define DAT_EVD_FREE(evd)\
(evd))
(ia),\
(pz),\
(in_evd),\
(out_evd),\
(connect_evd),\
(attr),\
(ep))
(ia),\
(pz),\
(in_evd),\
(out_evd),\
(connect_evd),\
(srq),\
(attr),\
(ep))
(ep),\
(mask),\
(param))
(ep),\
(mask),\
(param))
(ep),\
(ia_addr),\
(conn_qual),\
(timeout),\
(psize),\
(pdata),\
(qos),\
(flags))
(ep),\
(dup),\
(timeout),\
(psize),\
(pdata),\
(qos))
(ep),\
(flags))
(ep),\
(size),\
(lbuf),\
(cookie),\
(flags))
(ep),\
(size),\
(lbuf),\
(cookie),\
(flags))
(ep),\
(size),\
(lbuf),\
(cookie),\
(rbuf),\
(flags))
(ep),\
(size),\
(lbuf),\
(cookie),\
(rbuf),\
(flags))
(ep), \
(ep_state),\
(recv_idle),\
(request_idle))
#define DAT_EP_FREE(ep)\
(ep))
#define DAT_EP_RESET(ep)\
(ep))
(ep),\
(nbuf_alloc),\
(buf_span))
(ep),\
(soft_wm),\
(hard_wm))
(lmr),\
(mask),\
(param))
#define DAT_LMR_FREE(lmr)\
(lmr))
(ia), \
(lbuf), \
(size))
(ia), \
(lbuf), \
(size))
(pz),\
(rmr))
(rmr),\
(mask),\
(param))
(rmr),\
(lmr),\
(mem_priv),\
(ep),\
(cookie),\
(flags),\
(context))
#define DAT_RMR_FREE(rmr)\
(rmr))
(ia),\
(conn_qual),\
(evd),\
(flags),\
(handle))
(ia), \
(conn_qual), \
(evd), \
(flags), \
(handle))
(psp),\
(mask),\
(param))
#define DAT_PSP_FREE(psp)\
(psp))
(ia),\
(conn_qual),\
(ep),\
(evd),\
(handle))
(rsp),\
(mask),\
(param))
#define DAT_RSP_FREE(rsp)\
(rsp))
(ia),\
(pz))
(pz),\
(mask),\
(param))
#define DAT_PZ_FREE(pz) \
(pz))
(ia),\
(pz),\
(attr),\
(srq))
(srq),\
(lw))
#define DAT_SRQ_FREE(srq) \
(srq))
(srq),\
(mask),\
(param))
(srq),\
(qsize))
(srq),\
(size),\
(lbuf),\
(cookie))
/*
* FUNCTION PROTOTYPES
*/
typedef DAT_RETURN (*DAT_IA_OPEN_FUNC)(
typedef DAT_RETURN (*DAT_IA_OPENV_FUNC)(
typedef DAT_RETURN (*DAT_IA_CLOSE_FUNC)(
typedef DAT_RETURN (*DAT_IA_QUERY_FUNC)(
/* helper functions */
typedef DAT_RETURN (*DAT_SET_CONSUMER_CONTEXT_FUNC)(
typedef DAT_RETURN (*DAT_GET_CONSUMER_CONTEXT_FUNC)(
typedef DAT_RETURN (*DAT_GET_HANDLE_TYPE_FUNC)(
OUT DAT_HANDLE_TYPE *);
/* CR Functions */
typedef DAT_RETURN (*DAT_CR_QUERY_FUNC)(
typedef DAT_RETURN (*DAT_CR_ACCEPT_FUNC)(
typedef DAT_RETURN (*DAT_CR_REJECT_FUNC)(
/*
* For DAT-1.1 this function is defined for both uDAPL and kDAPL.
* For DAT-1.0 it was only defined for uDAPL.
*/
typedef DAT_RETURN (*DAT_CR_HANDOFF_FUNC)(
/* EVD Functions */
typedef DAT_RETURN (*DAT_EVD_RESIZE_FUNC)(
typedef DAT_RETURN (*DAT_EVD_POST_SE_FUNC)(
typedef DAT_RETURN (*DAT_EVD_DEQUEUE_FUNC)(
typedef DAT_RETURN (*DAT_EVD_FREE_FUNC)(
typedef DAT_RETURN (*DAT_EVD_QUERY_FUNC)(
/* EP functions */
typedef DAT_RETURN (*DAT_EP_CREATE_FUNC)(
typedef DAT_RETURN (*DAT_EP_CREATE_WITH_SRQ_FUNC)(
typedef DAT_RETURN (*DAT_EP_QUERY_FUNC)(
typedef DAT_RETURN (*DAT_EP_MODIFY_FUNC)(
typedef DAT_RETURN (*DAT_EP_CONNECT_FUNC)(
typedef DAT_RETURN (*DAT_EP_DUP_CONNECT_FUNC)(
typedef DAT_RETURN (*DAT_EP_DISCONNECT_FUNC)(
typedef DAT_RETURN (*DAT_EP_POST_SEND_FUNC)(
typedef DAT_RETURN (*DAT_EP_POST_RECV_FUNC)(
typedef DAT_RETURN (*DAT_EP_POST_RDMA_READ_FUNC)(
typedef DAT_RETURN (*DAT_EP_POST_RDMA_WRITE_FUNC)(
typedef DAT_RETURN (*DAT_EP_GET_STATUS_FUNC)(
typedef DAT_RETURN (*DAT_EP_FREE_FUNC)(
typedef DAT_RETURN (*DAT_EP_RESET_FUNC)(
typedef DAT_RETURN (*DAT_EP_RECV_QUERY_FUNC)(
typedef DAT_RETURN (*DAT_EP_SET_WATERMARK_FUNC)(
/* LMR functions */
typedef DAT_RETURN (*DAT_LMR_FREE_FUNC)(
typedef DAT_RETURN (*DAT_LMR_QUERY_FUNC)(
typedef DAT_RETURN (*DAT_LMR_SYNC_RDMA_READ_FUNC)(
typedef DAT_RETURN (*DAT_LMR_SYNC_RDMA_WRITE_FUNC)(
/* RMR Functions */
typedef DAT_RETURN (*DAT_RMR_CREATE_FUNC)(
typedef DAT_RETURN (*DAT_RMR_QUERY_FUNC)(
typedef DAT_RETURN (*DAT_RMR_BIND_FUNC)(
typedef DAT_RETURN (*DAT_RMR_FREE_FUNC)(
/* PSP Functions */
typedef DAT_RETURN (*DAT_PSP_CREATE_FUNC)(
typedef DAT_RETURN (*DAT_PSP_CREATE_ANY_FUNC)(
typedef DAT_RETURN (*DAT_PSP_QUERY_FUNC)(
typedef DAT_RETURN (*DAT_PSP_FREE_FUNC)(
/* RSP Functions */
typedef DAT_RETURN (*DAT_RSP_CREATE_FUNC)(
typedef DAT_RETURN (*DAT_RSP_QUERY_FUNC) (
typedef DAT_RETURN (*DAT_RSP_FREE_FUNC)(
/* PZ Functions */
typedef DAT_RETURN (*DAT_PZ_CREATE_FUNC)(
typedef DAT_RETURN (*DAT_PZ_QUERY_FUNC)(
typedef DAT_RETURN (*DAT_PZ_FREE_FUNC)(
/* SRQ Functions */
typedef DAT_RETURN (*DAT_SRQ_CREATE_FUNC)(
typedef DAT_RETURN (*DAT_SRQ_SET_LW_FUNC)(
typedef DAT_RETURN (*DAT_SRQ_FREE_FUNC)(
typedef DAT_RETURN (*DAT_SRQ_QUERY_FUNC)(
typedef DAT_RETURN (*DAT_SRQ_RESIZE_FUNC)(
typedef DAT_RETURN (*DAT_SRQ_POST_RECV_FUNC)(
#ifdef __cplusplus
}
#endif
#endif /* _DAT_REDIRECTION_H_ */