#ifndef _UDAT_REDIRECTION_H_
#define _UDAT_REDIRECTION_H_
#ifdef __cplusplus
extern "C" {
#endif
#define DAT_LMR_CREATE(ia, mem_type, reg_desc, len, pz, priv,\
lmr, lmr_context, rmr_context, reg_len, reg_addr) \
(*DAT_HANDLE_TO_PROVIDER(ia)->lmr_create_func)(\
(ia),\
(mem_type),\
(reg_desc),\
(len),\
(pz),\
(priv),\
(lmr),\
(lmr_context),\
(rmr_context),\
(reg_len),\
(reg_addr))
#define DAT_EVD_CREATE(ia, qlen, cno, flags, handle) \
(*DAT_HANDLE_TO_PROVIDER(ia)->evd_create_func)(\
(ia),\
(qlen),\
(cno),\
(flags),\
(handle))
#define DAT_EVD_ENABLE(evd) \
(*DAT_HANDLE_TO_PROVIDER(evd)->evd_enable_func)(\
(evd))
#define DAT_EVD_WAIT(evd, timeout, threshold, event, nmore) \
(*DAT_HANDLE_TO_PROVIDER(evd)->evd_wait_func)(\
(evd),\
(timeout),\
(threshold),\
(event),\
(nmore))
#define DAT_EVD_DISABLE(evd) \
(*DAT_HANDLE_TO_PROVIDER(evd)->evd_disable_func)(\
(evd))
#define DAT_EVD_SET_UNWAITABLE(evd) \
(*DAT_HANDLE_TO_PROVIDER(evd)->evd_set_unwaitable_func)(\
(evd))
#define DAT_EVD_CLEAR_UNWAITABLE(evd) \
(*DAT_HANDLE_TO_PROVIDER(evd)->evd_clear_unwaitable_func)(\
(evd))
#define DAT_EVD_MODIFY_CNO(evd, cno) \
(*DAT_HANDLE_TO_PROVIDER(evd)->evd_modify_cno_func)(\
(evd),\
(cno))
#define DAT_CNO_CREATE(ia, proxy, cno) \
(*DAT_HANDLE_TO_PROVIDER(ia)->cno_create_func)(\
(ia),\
(proxy),\
(cno))
#define DAT_CNO_MODIFY_AGENT(cno, proxy) \
(*DAT_HANDLE_TO_PROVIDER(cno)->cno_modify_agent_func)(\
(cno),\
(proxy))
#define DAT_CNO_QUERY(cno, mask, param) \
(*DAT_HANDLE_TO_PROVIDER(cno)->cno_query_func)(\
(cno),\
(mask),\
(param))
#define DAT_CNO_FREE(cno) \
(*DAT_HANDLE_TO_PROVIDER(cno)->cno_free_func)(\
(cno))
#define DAT_CNO_WAIT(cno, timeout, evd) \
(*DAT_HANDLE_TO_PROVIDER(cno)->cno_wait_func)(\
(cno),\
(timeout),\
(evd))
typedef DAT_RETURN (*DAT_LMR_CREATE_FUNC)(
IN DAT_IA_HANDLE,
IN DAT_MEM_TYPE,
IN DAT_REGION_DESCRIPTION,
IN DAT_VLEN,
IN DAT_PZ_HANDLE,
IN DAT_MEM_PRIV_FLAGS,
OUT DAT_LMR_HANDLE *,
OUT DAT_LMR_CONTEXT *,
OUT DAT_RMR_CONTEXT *,
OUT DAT_VLEN *,
OUT DAT_VADDR *);
typedef DAT_RETURN (*DAT_EVD_CREATE_FUNC)(
IN DAT_IA_HANDLE,
IN DAT_COUNT,
IN DAT_CNO_HANDLE,
IN DAT_EVD_FLAGS,
OUT DAT_EVD_HANDLE *);
typedef DAT_RETURN (*DAT_EVD_MODIFY_CNO_FUNC)(
IN DAT_EVD_HANDLE,
IN DAT_CNO_HANDLE);
typedef DAT_RETURN (*DAT_CNO_CREATE_FUNC)(
IN DAT_IA_HANDLE,
IN DAT_OS_WAIT_PROXY_AGENT,
OUT DAT_CNO_HANDLE *);
typedef DAT_RETURN (*DAT_CNO_MODIFY_AGENT_FUNC)(
IN DAT_CNO_HANDLE,
IN DAT_OS_WAIT_PROXY_AGENT);
typedef DAT_RETURN (*DAT_CNO_QUERY_FUNC)(
IN DAT_CNO_HANDLE,
IN DAT_CNO_PARAM_MASK,
OUT DAT_CNO_PARAM *);
typedef DAT_RETURN (*DAT_CNO_FREE_FUNC)(
IN DAT_CNO_HANDLE);
typedef DAT_RETURN(*DAT_CNO_WAIT_FUNC)(
IN DAT_CNO_HANDLE,
IN DAT_TIMEOUT,
OUT DAT_EVD_HANDLE *);
typedef DAT_RETURN (*DAT_EVD_ENABLE_FUNC)(
IN DAT_EVD_HANDLE);
typedef DAT_RETURN (*DAT_EVD_WAIT_FUNC)(
IN DAT_EVD_HANDLE,
IN DAT_TIMEOUT,
IN DAT_COUNT,
OUT DAT_EVENT *,
OUT DAT_COUNT *);
typedef DAT_RETURN (*DAT_EVD_DISABLE_FUNC)(
IN DAT_EVD_HANDLE);
typedef DAT_RETURN (*DAT_EVD_SET_UNWAITABLE_FUNC)(
IN DAT_EVD_HANDLE);
typedef DAT_RETURN (*DAT_EVD_CLEAR_UNWAITABLE_FUNC)(
IN DAT_EVD_HANDLE);
#include <dat/dat_redirection.h>
struct dat_provider
{
const char *device_name;
DAT_PVOID extension;
DAT_IA_OPEN_FUNC ia_open_func;
DAT_IA_QUERY_FUNC ia_query_func;
DAT_IA_CLOSE_FUNC ia_close_func;
DAT_SET_CONSUMER_CONTEXT_FUNC set_consumer_context_func;
DAT_GET_CONSUMER_CONTEXT_FUNC get_consumer_context_func;
DAT_GET_HANDLE_TYPE_FUNC get_handle_type_func;
DAT_CNO_CREATE_FUNC cno_create_func;
DAT_CNO_MODIFY_AGENT_FUNC cno_modify_agent_func;
DAT_CNO_QUERY_FUNC cno_query_func;
DAT_CNO_FREE_FUNC cno_free_func;
DAT_CNO_WAIT_FUNC cno_wait_func;
DAT_CR_QUERY_FUNC cr_query_func;
DAT_CR_ACCEPT_FUNC cr_accept_func;
DAT_CR_REJECT_FUNC cr_reject_func;
DAT_CR_HANDOFF_FUNC cr_handoff_func;
DAT_EVD_CREATE_FUNC evd_create_func;
DAT_EVD_QUERY_FUNC evd_query_func;
DAT_EVD_MODIFY_CNO_FUNC evd_modify_cno_func;
DAT_EVD_ENABLE_FUNC evd_enable_func;
DAT_EVD_DISABLE_FUNC evd_disable_func;
DAT_EVD_WAIT_FUNC evd_wait_func;
DAT_EVD_RESIZE_FUNC evd_resize_func;
DAT_EVD_POST_SE_FUNC evd_post_se_func;
DAT_EVD_DEQUEUE_FUNC evd_dequeue_func;
DAT_EVD_FREE_FUNC evd_free_func;
DAT_EP_CREATE_FUNC ep_create_func;
DAT_EP_QUERY_FUNC ep_query_func;
DAT_EP_MODIFY_FUNC ep_modify_func;
DAT_EP_CONNECT_FUNC ep_connect_func;
DAT_EP_DUP_CONNECT_FUNC ep_dup_connect_func;
DAT_EP_DISCONNECT_FUNC ep_disconnect_func;
DAT_EP_POST_SEND_FUNC ep_post_send_func;
DAT_EP_POST_RECV_FUNC ep_post_recv_func;
DAT_EP_POST_RDMA_READ_FUNC ep_post_rdma_read_func;
DAT_EP_POST_RDMA_WRITE_FUNC ep_post_rdma_write_func;
DAT_EP_GET_STATUS_FUNC ep_get_status_func;
DAT_EP_FREE_FUNC ep_free_func;
DAT_LMR_CREATE_FUNC lmr_create_func;
DAT_LMR_QUERY_FUNC lmr_query_func;
DAT_LMR_FREE_FUNC lmr_free_func;
DAT_RMR_CREATE_FUNC rmr_create_func;
DAT_RMR_QUERY_FUNC rmr_query_func;
DAT_RMR_BIND_FUNC rmr_bind_func;
DAT_RMR_FREE_FUNC rmr_free_func;
DAT_PSP_CREATE_FUNC psp_create_func;
DAT_PSP_QUERY_FUNC psp_query_func;
DAT_PSP_FREE_FUNC psp_free_func;
DAT_RSP_CREATE_FUNC rsp_create_func;
DAT_RSP_QUERY_FUNC rsp_query_func;
DAT_RSP_FREE_FUNC rsp_free_func;
DAT_PZ_CREATE_FUNC pz_create_func;
DAT_PZ_QUERY_FUNC pz_query_func;
DAT_PZ_FREE_FUNC pz_free_func;
DAT_PSP_CREATE_ANY_FUNC psp_create_any_func;
DAT_EP_RESET_FUNC ep_reset_func;
DAT_EVD_SET_UNWAITABLE_FUNC evd_set_unwaitable_func;
DAT_EVD_CLEAR_UNWAITABLE_FUNC evd_clear_unwaitable_func;
DAT_LMR_SYNC_RDMA_READ_FUNC lmr_sync_rdma_read_func;
DAT_LMR_SYNC_RDMA_WRITE_FUNC lmr_sync_rdma_write_func;
DAT_EP_CREATE_WITH_SRQ_FUNC ep_create_with_srq_func;
DAT_EP_RECV_QUERY_FUNC ep_recv_query_func;
DAT_EP_SET_WATERMARK_FUNC ep_set_watermark_func;
DAT_SRQ_CREATE_FUNC srq_create_func;
DAT_SRQ_FREE_FUNC srq_free_func;
DAT_SRQ_POST_RECV_FUNC srq_post_recv_func;
DAT_SRQ_QUERY_FUNC srq_query_func;
DAT_SRQ_RESIZE_FUNC srq_resize_func;
DAT_SRQ_SET_LW_FUNC srq_set_lw_func;
};
#ifdef __cplusplus
}
#endif
#endif