user_cookie.as_64,\r
remote_iov, \r
completion_flags);\r
+ DAPL_CNTR(DCNT_POST_RDMA_READ);\r
\r
dat_status = dapl_ep_post_send_req(ep_handle, \r
num_segments, \r
user_cookie.as_64,\r
remote_iov, \r
completion_flags);\r
+ DAPL_CNTR(DCNT_POST_RDMA_WRITE);\r
\r
dat_status = dapl_ep_post_send_req(ep_handle, \r
num_segments, \r
local_iov,\r
user_cookie.as_64,\r
completion_flags);\r
+ DAPL_CNTR (DCNT_POST_RECV);\r
\r
if ( DAPL_BAD_HANDLE (ep_handle, DAPL_MAGIC_EP) )\r
{\r
local_iov, \r
user_cookie.as_64,\r
completion_flags);\r
+ DAPL_CNTR(DCNT_POST_SEND);\r
\r
dat_status = dapl_ep_post_send_req(ep_handle,\r
num_segments,\r
/* zero the structure */\r
dapl_os_memzero (ep_ptr, sizeof (DAPL_EP) + sizeof (DAT_SOCK_ADDR));\r
\r
-#ifdef COUNTERS\r
- /* Allocate counters */\r
- ep_ptr->cntrs = dapl_os_alloc(sizeof(DAT_UINT64) * DCNT_EP_ALL_COUNTERS);\r
- if (ep_ptr->cntrs == NULL) {\r
- dapl_os_free(ep_ptr, sizeof (DAPL_EP) + sizeof (DAT_SOCK_ADDR));\r
- return (NULL);\r
- }\r
- dapl_os_memzero (ep_ptr->cntrs, sizeof(DAT_UINT64) * DCNT_EP_ALL_COUNTERS);\r
-#endif /* COUNTERS */\r
-\r
/*\r
* initialize the header\r
*/\r
ep_ptr->ibal_cm_handle = NULL;\r
}\r
#endif\r
-\r
-#ifdef COUNTERS\r
- dapl_os_free(ep_ptr->cntrs, sizeof(DAT_UINT64) * DCNT_EP_ALL_COUNTERS);\r
-#endif /* COUNTERS */\r
-\r
dapl_os_free (ep_ptr, sizeof (DAPL_EP) + sizeof (DAT_SOCK_ADDR) );\r
}\r
\r
ib_cm_event,\r
(void *) ib_cm_handle );\r
\r
+ DAPL_CNTR(DCNT_EVD_CONN_CALLBACK);\r
+\r
/*\r
* Determine the type of handle passed back to us in the context\r
* and sort out key parameters.\r
*/\r
ep_ptr = (DAPL_EP *) context;\r
evd_ptr = (DAPL_EVD *) ep_ptr->param.connect_evd_handle;\r
- DAPL_CNTR(evd_ptr, DCNT_EVD_CONN_CALLBACK);\r
\r
prd_ptr = (DAPL_PRIVATE *)private_data_ptr;\r
private_data_size = 0;\r
\r
evd = (DAPL_EVD *) context;\r
async_evd = evd->header.owner_ia->async_error_evd;\r
- DAPL_CNTR(evd->header.owner_ia, DCNT_IA_ASYNC_CQ_ERROR);\r
\r
dat_status = dapls_evd_post_async_error_event(\r
async_evd,\r
"dapl_evd_dequeue (%p, %p)\n",\r
evd_handle, \r
event);\r
+ DAPL_CNTR(DCNT_EVD_DEQUEUE);\r
\r
evd_ptr = (DAPL_EVD *)evd_handle;\r
dat_status = DAT_SUCCESS;\r
dat_status = DAT_ERROR (DAT_INVALID_PARAMETER,DAT_INVALID_ARG2);\r
goto bail;\r
}\r
- DAPL_CNTR(evd_ptr, DCNT_EVD_DEQUEUE);\r
\r
/*\r
* We need to dequeue under lock, as the IB OS Access API\r
*event = *local_event;\r
dat_status = dapls_rbuf_add (&evd_ptr->free_event_queue, \r
local_event);\r
- DAPL_CNTR(evd_ptr, DCNT_EVD_DEQUEUE_FOUND);\r
-\r
+ DAPL_CNTR(DCNT_EVD_DEQUEUE_FOUND);\r
}\r
else if (evd_ptr->ib_cq_handle != IB_INVALID_HANDLE)\r
{\r
dat_status = dapls_evd_cq_poll_to_event(evd_ptr, event);\r
- DAPL_CNTR(evd_ptr, DCNT_EVD_DEQUEUE_POLL);\r
+ DAPL_CNTR(DCNT_EVD_DEQUEUE_POLL);\r
}\r
else\r
{\r
dat_status = DAT_ERROR (DAT_QUEUE_EMPTY,0);\r
- DAPL_CNTR(evd_ptr, DCNT_EVD_DEQUEUE_NOT_FOUND);\r
+ DAPL_CNTR(DCNT_EVD_DEQUEUE_NOT_FOUND);\r
}\r
\r
dapl_os_unlock ( &evd_ptr->header.lock );\r
hca_handle, \r
cq_handle, \r
user_context);\r
+ DAPL_CNTR(DCNT_EVD_DTO_CALLBACK);\r
\r
evd_ptr = (DAPL_EVD *) user_context;\r
- DAPL_CNTR(evd_ptr, DCNT_EVD_DTO_CALLBACK);\r
\r
dapl_os_assert (hca_handle == evd_ptr->header.owner_ia->hca_ptr->ib_hca_handle);\r
dapl_os_assert (evd_ptr->ib_cq_handle == cq_handle);\r
DAT_RETURN dat_status;\r
\r
dapl_dbg_log (DAPL_DBG_TYPE_API, "dapl_evd_free (%p)\n", evd_handle);\r
+ DAPL_CNTR (DCNT_EVD_FREE);\r
\r
dat_status = DAT_SUCCESS;\r
evd_ptr = (DAPL_EVD *)evd_handle;\r
goto bail;\r
}\r
\r
- DAPL_CNTR(evd_ptr->header.owner_ia, DCNT_IA_EVD_FREE);\r
-\r
if (dapl_os_atomic_read (&evd_ptr->evd_ref_count) != 0)\r
{\r
dat_status = DAT_ERROR (DAT_INVALID_STATE, DAT_INVALID_STATE_EVD_IN_USE);\r
\r
ia_ptr = ep_ptr->header.owner_ia;\r
async_evd = (DAPL_EVD *) ia_ptr->async_error_evd;\r
- DAPL_CNTR(ia_ptr, DCNT_IA_ASYNC_QP_ERROR);\r
\r
dapl_dbg_log (\r
DAPL_DBG_TYPE_CALLBACK | DAPL_DBG_TYPE_EXCEPTION,\r
}\r
\r
async_evd = (DAPL_EVD *) context;\r
- DAPL_CNTR(async_evd->header.owner_ia, DCNT_IA_ASYNC_ERROR);\r
\r
dat_status = dapls_ib_get_async_event(cause_ptr, &async_event);\r
\r
/* zero the structure */\r
dapl_os_memzero (evd_ptr, sizeof (DAPL_EVD));\r
\r
-#ifdef COUNTERS\r
- /* Allocate counters */\r
- evd_ptr->cntrs = dapl_os_alloc(sizeof(DAT_UINT64) * DCNT_EVD_ALL_COUNTERS);\r
- if (evd_ptr->cntrs == NULL) {\r
- dapl_os_free(evd_ptr, sizeof(DAPL_EVD));\r
- return (NULL);\r
- }\r
- dapl_os_memzero(evd_ptr->cntrs, \r
- sizeof(DAT_UINT64) * DCNT_EVD_ALL_COUNTERS);\r
-#endif /* COUNTERS */\r
-\r
/*\r
* initialize the header\r
*/\r
}\r
#endif\r
\r
-#ifdef COUNTERS\r
- dapl_os_free(evd_ptr->cntrs, sizeof(DAT_UINT64) * DCNT_EVD_ALL_COUNTERS);\r
-#endif /* COUNTERS */\r
-\r
dapl_os_free (evd_ptr, sizeof (DAPL_EVD));\r
\r
bail:\r
dat_status = DAT_ERROR (DAT_INVALID_HANDLE,DAT_INVALID_HANDLE_IA);\r
goto bail;\r
}\r
-\r
-#ifdef COUNTERS\r
- dapl_print_counter(ia_handle, DCNT_IA_ALL_COUNTERS, 0);\r
-#endif /* COUNTERS */ \r
-\r
+ \r
if ( DAT_CLOSE_ABRUPT_FLAG == ia_flags )\r
{\r
dat_status = dapl_ia_abrupt_close (ia_ptr);\r
{\r
dat_status = DAT_ERROR (DAT_INVALID_PARAMETER,DAT_INVALID_ARG2);\r
}\r
- \r
+\r
bail:\r
return dat_status;\r
}\r
"dapl_ia_query () returns 0x%x\n", dat_status);\r
}\r
\r
-#ifdef COUNTERS\r
- dapl_print_counter(ia_handle, DCNT_IA_ALL_COUNTERS, 0);\r
-#endif /* COUNTERS */\r
-\r
return dat_status;\r
}\r
\r
/* zero the structure */\r
dapl_os_memzero (ia_ptr, sizeof (DAPL_IA));\r
\r
-#ifdef COUNTERS\r
- /* Allocate counters */\r
- ia_ptr->cntrs = dapl_os_alloc(sizeof(DAT_UINT64) * DCNT_IA_ALL_COUNTERS);\r
- if (ia_ptr->cntrs == NULL) {\r
- dapl_os_free (ia_ptr, sizeof(DAPL_IA));\r
- return (NULL);\r
- }\r
- dapl_os_memzero(ia_ptr->cntrs, sizeof(DAT_UINT64) * DCNT_IA_ALL_COUNTERS);\r
-#endif /* COUNTERS */\r
-\r
/*\r
* initialize the header\r
*/\r
ia_ptr->header.magic = DAPL_MAGIC_INVALID; /* reset magic to prevent reuse */\r
dapl_os_lock_destroy (&ia_ptr->header.lock);\r
\r
-#ifdef COUNTERS\r
- dapl_os_free(ia_ptr->cntrs, sizeof(DAT_UINT64) * DCNT_IA_ALL_COUNTERS);\r
-#endif /* COUNTERS */\r
-\r
dapl_os_free (ia_ptr, sizeof (DAPL_IA));\r
}\r
\r
IN DAT_LMR_HANDLE lmr_handle )\r
{\r
DAPL_LMR *lmr;\r
- DAPL_PZ *pz;\r
DAT_RETURN dat_status;\r
\r
dapl_dbg_log (DAPL_DBG_TYPE_API, "dapl_lmr_free (%p)\n", lmr_handle);\r
goto bail;\r
}\r
\r
- lmr = (DAPL_LMR *)lmr_handle;\r
- pz = (DAPL_PZ *)lmr->param.pz_handle;\r
- \r
- DAPL_CNTR(pz->header.owner_ia, DCNT_IA_LMR_FREE);\r
+ lmr = (DAPL_LMR *) lmr_handle;\r
\r
switch (lmr->param.mem_type)\r
{\r
case DAT_MEM_TYPE_VIRTUAL:\r
case DAT_MEM_TYPE_LMR:\r
{\r
+ DAPL_PZ *pz;\r
+\r
if ( 0 != dapl_os_atomic_read (&lmr->lmr_ref_count) )\r
{\r
return DAT_INVALID_STATE;\r
\r
if (dat_status == DAT_SUCCESS)\r
{\r
+\r
+ pz = (DAPL_PZ *) lmr->param.pz_handle;\r
dapl_os_atomic_dec (&pz->pz_ref_count);\r
+\r
dapl_lmr_dealloc (lmr);\r
}\r
else\r
dat_status = DAT_ERROR (DAT_INVALID_PARAMETER,DAT_INVALID_ARG4);\r
goto bail;\r
}\r
-\r
- DAPL_CNTR(ia_ptr, DCNT_IA_PSP_CREATE); \r
+ \r
\r
/*\r
* See if we have a quiescent listener to use for this PSP, else\r
goto bail;\r
}\r
\r
- DAPL_CNTR(ia_ptr, DCNT_IA_PSP_CREATE_ANY); \r
-\r
/*\r
* Fill out the args for a PSP\r
*/\r
\r
ia_ptr = sp_ptr->header.owner_ia;\r
\r
- DAPL_CNTR(ia_ptr->header.owner_ia, DCNT_IA_PSP_FREE);\r
-\r
/* \r
* Remove the connection listener if it has been established\r
* and there are no current connections in progress.\r
dat_status = DAT_ERROR (DAT_INSUFFICIENT_RESOURCES,DAT_RESOURCE_MEMORY);\r
goto bail;\r
}\r
- DAPL_CNTR(ia, DCNT_IA_PZ_CREATE);\r
\r
dat_status = dapls_ib_pd_alloc (ia, pz);\r
if ( DAT_SUCCESS != dat_status )\r
\r
pz = (DAPL_PZ *) pz_handle;\r
\r
- DAPL_CNTR(pz->header.owner_ia, DCNT_IA_PZ_FREE);\r
-\r
if ( 0 != dapl_os_atomic_read (&pz->pz_ref_count) )\r
{\r
dat_status = DAT_ERROR (DAT_INVALID_STATE,DAT_INVALID_STATE_PZ_IN_USE);\r
}\r
\r
pz = (DAPL_PZ *) pz_handle;\r
+\r
rmr = dapl_rmr_alloc (pz);\r
\r
if ( rmr == NULL )\r
dat_status = DAT_ERROR (DAT_INSUFFICIENT_RESOURCES,DAT_RESOURCE_MEMORY);\r
goto bail;\r
}\r
- DAPL_CNTR(pz->header.owner_ia, DCNT_IA_RMR_CREATE);\r
\r
dat_status = dapls_ib_mw_alloc (rmr);\r
\r
IN DAT_RMR_HANDLE rmr_handle )\r
{\r
DAPL_RMR *rmr;\r
- DAPL_PZ *pz;\r
DAT_RETURN dat_status;\r
\r
dat_status = DAT_SUCCESS;\r
}\r
\r
rmr = (DAPL_RMR *) rmr_handle;\r
- pz = (DAPL_PZ *)rmr->param.pz_handle;\r
- DAPL_CNTR(pz->header.owner_ia, DCNT_IA_RMR_FREE);\r
\r
/*\r
* If the user did not perform an unbind op, release\r
goto bail;\r
}\r
\r
- DAPL_CNTR(ia_ptr, DCNT_IA_RSP_CREATE); \r
-\r
sp_ptr = dapls_ia_sp_search (ia_ptr, conn_qual, DAT_FALSE);\r
sp_found = DAT_TRUE;\r
if (sp_ptr == NULL)\r
/* ia_ptr = (DAPL_IA *)sp_ptr->header.owner_ia; */\r
ia_ptr = sp_ptr->header.owner_ia;\r
\r
- DAPL_CNTR(ia_ptr, DCNT_IA_RSP_FREE); \r
-\r
/*\r
* Remove the connection listener if there are no connections. If\r
* we defer removing the sp it becomes something of a zombie\r
goto bail;\r
}\r
\r
- DAPL_CNTR(ia_ptr, DCNT_IA_SRQ_CREATE);\r
-\r
/*\r
* Verify non-required parameters.\r
* N.B. Assumption: any parameter that can be\r
\r
ia_ptr = srq_ptr->header.owner_ia;\r
\r
- DAPL_CNTR(ia_ptr, DCNT_IA_SRQ_FREE);\r
-\r
/*\r
* Do verification of parameters and the state change atomically.\r
*/\r
DAPL_OS_TIMEVAL cur_time;\r
DAT_BOOLEAN wakeup_tmo_thread;\r
\r
+ DAPL_CNTR(DCNT_TIMER_SET);\r
/*\r
* Start the timer thread the first time we need a timer\r
*/\r
dapls_timer_cancel (\r
IN DAPL_OS_TIMER *timer)\r
{\r
+ DAPL_CNTR(DCNT_TIMER_CANCEL);\r
dapl_os_lock ( &g_daplTimerHead.lock );\r
/*\r
* make sure the entry has not been removed by another thread\r
"dapl_extensions(hdl %p operation %d, ...)\n",\r
dat_handle, ext_op);\r
\r
- DAPL_CNTR(dat_handle,DCNT_EXTENSION);\r
+ DAPL_CNTR(DCNT_EXTENSION);\r
\r
switch ((int)ext_op)\r
{\r
DAPL_LLIST_HEAD psp_list_head; /* PSP queue */\r
DAPL_LLIST_HEAD rsp_list_head; /* RSP queue */\r
DAPL_LLIST_HEAD srq_list_head; /* SRQ queue */\r
-#ifdef COUNTERS\r
- void *cntrs;\r
-#endif\r
};\r
\r
/* DAPL_CNO maps to DAT_CNO_HANDLE */\r
\r
DAT_COUNT threshold;\r
DAPL_EVD_COMPLETION completion_type;\r
-\r
-#ifdef COUNTERS\r
- void *cntrs;\r
-#endif\r
};\r
\r
/* DAPL_PRIVATE used to pass private data in a connection */\r
DAT_BOOLEAN sent_discreq;\r
dp_ib_cm_handle_t ibal_cm_handle;\r
#endif\r
-#ifdef COUNTERS\r
- void *cntrs;\r
-#endif\r
};\r
\r
/* DAPL_SRQ maps to DAT_SRQ_HANDLE */\r
\r
#endif /* !DAPL_DBG */\r
\r
-#include <dat/dat_ib_extensions.h>\r
-\r
-#ifdef COUNTERS\r
-\r
-#define DAPL_CNTR(h_ptr, cntr) ((DAT_UINT64*)h_ptr->cntrs)[cntr]++\r
-#define DAPL_CNTR_DATA(h_ptr, cntr, data) ((DAT_UINT64*)h_ptr->cntrs)[cntr]+= data\r
-\r
-DAT_RETURN dapl_query_counter(DAT_HANDLE dh, \r
- int counter, \r
- void *p_cntrs_out,\r
- int reset);\r
-char *dapl_query_counter_name(DAT_HANDLE dh, int counter);\r
-void dapl_print_counter(DAT_HANDLE dh, int counter, int reset);\r
+/*\r
+ * Counters\r
+ */\r
+#define DCNT_EP_CREATE 0\r
+#define DCNT_EP_FREE 1\r
+#define DCNT_EP_CONNECT 2\r
+#define DCNT_EP_DISCONNECT 3\r
+#define DCNT_POST_SEND 4\r
+#define DCNT_POST_RECV 5\r
+#define DCNT_POST_RDMA_WRITE 6\r
+#define DCNT_POST_RDMA_READ 7\r
+#define DCNT_EVD_CREATE 8\r
+#define DCNT_EVD_FREE 9\r
+#define DCNT_EVD_WAIT 10\r
+#define DCNT_EVD_WAIT_BLOCKED 11\r
+#define DCNT_EVD_WAIT_CMP_NTFY 12\r
+#define DCNT_EVD_DTO_CALLBACK 13\r
+#define DCNT_EVD_CONN_CALLBACK 14\r
+#define DCNT_EVD_DEQUEUE 15\r
+#define DCNT_EVD_DEQUEUE_POLL 16\r
+#define DCNT_EVD_DEQUEUE_FOUND 17\r
+#define DCNT_EVD_DEQUEUE_NOT_FOUND 18\r
+#define DCNT_TIMER_SET 19\r
+#define DCNT_TIMER_CANCEL 20\r
+#define DCNT_EXTENSION 21\r
+#define DCNT_NUM_COUNTERS 22\r
+#define DCNT_ALL_COUNTERS DCNT_NUM_COUNTERS\r
+\r
+#if defined(DAPL_COUNTERS)\r
+\r
+extern void dapl_dump_cntr( int cntr );\r
+extern int dapl_dbg_counters[];\r
+\r
+#define DAPL_CNTR(cntr) dapl_os_atomic_inc (&dapl_dbg_counters[cntr]);\r
+#define DAPL_DUMP_CNTR(cntr) dapl_dump_cntr( cntr );\r
+#define DAPL_COUNTERS_INIT()\r
\r
#else\r
\r
-#define DAPL_CNTR(handle, cntr)\r
-#define DAPL_CNTR_DATA(handle, cntr, data)\r
+#define DAPL_CNTR(cntr)\r
+#define DAPL_DUMP_CNTR(cntr) \r
+#define DAPL_COUNTERS_INIT()\r
+\r
+#endif /* DAPL_COUNTERS */\r
\r
-#endif /* COUNTERS */\r
\r
#endif /* _DAPL_DEBUG_H_ */\r
cno_handle, \r
evd_flags, \r
evd_handle);\r
+ DAPL_CNTR(DCNT_EVD_CREATE);\r
\r
ia_ptr = (DAPL_IA *)ia_handle;\r
cno_ptr = (DAPL_CNO *)cno_handle;\r
goto bail;\r
}\r
\r
- DAPL_CNTR(ia_ptr, DCNT_IA_EVD_CREATE);\r
-\r
if ( evd_min_qlen <= 0 )\r
{\r
dat_status = DAT_ERROR (DAT_INVALID_PARAMETER,DAT_INVALID_ARG2);\r
threshold, \r
event, \r
nmore);\r
+ DAPL_CNTR(DCNT_EVD_WAIT);\r
\r
evd_ptr = (DAPL_EVD *)evd_handle;\r
dat_status = DAT_SUCCESS;\r
dat_status = DAT_ERROR (DAT_INVALID_STATE,0);\r
goto bail;\r
}\r
- DAPL_CNTR(evd_ptr, DCNT_EVD_WAIT);\r
\r
dapl_dbg_log (DAPL_DBG_TYPE_EVD, \r
"dapl_evd_wait: EVD %p, CQ %p\n", \r
(evd_ptr->completion_type == DAPL_EVD_STATE_SOLICITED_WAIT) ?\r
IB_NOTIFY_ON_SOLIC_COMP : IB_NOTIFY_ON_NEXT_COMP ); \r
\r
- DAPL_CNTR(evd_ptr, DCNT_EVD_WAIT_NOTIFY);\r
+ DAPL_CNTR(DCNT_EVD_WAIT_CMP_NTFY);\r
/* FIXME report error */\r
dapl_os_assert(dat_status == DAT_SUCCESS);\r
\r
*/\r
evd_ptr->threshold = threshold; \r
\r
- DAPL_CNTR(evd_ptr, DCNT_EVD_WAIT_BLOCKED);\r
+ DAPL_CNTR(DCNT_EVD_WAIT_BLOCKED);\r
\r
#ifdef CQ_WAIT_OBJECT\r
if (evd_ptr->cq_wait_obj_handle)\r
goto bail;\r
}\r
\r
+ DAPL_COUNTERS_INIT();\r
+\r
return;\r
\r
bail:\r
ia = (DAPL_IA *) ia_handle;\r
pz = (DAPL_PZ *) pz_handle;\r
\r
- DAPL_CNTR(ia, DCNT_IA_LMR_CREATE); \r
-\r
switch (mem_type)\r
{\r
case DAT_MEM_TYPE_VIRTUAL:\r
#endif\r
\r
\r
-#include <dat/udat.h>\r
+#include <dat2/udat.h>\r
#include <assert.h>\r
#include <errno.h>\r
#include <pthread.h>\r
* DAT_NAMED_ATTR name == extended operations and version, \r
* version_value = version number of extension API\r
*/\r
- \r
- /* 2.0.1 - Initial IB extension support, atomic and immed data\r
- * dat_ib_post_fetch_and_add()\r
- * dat_ib_post_cmp_and_swap()\r
- * dat_ib_post_rdma_write_immed()\r
- * \r
- * 2.0.2 - Add UD support, post send and remote_ah via connect events \r
- * dat_ib_post_send_ud()\r
- *\r
- * 2.0.3 - Add query/print counter support for IA, EP, and EVD's \r
- * dat_query_counters(), dat_print_counters()\r
- *\r
- */\r
-#define DAT_IB_EXTENSION_VERSION 203 /* 2.0.3 */\r
-#define DAT_ATTR_COUNTERS "DAT_COUNTERS"\r
+#define DAT_IB_EXTENSION_VERSION 201 /* 2.0.1 */\r
#define DAT_IB_ATTR_FETCH_AND_ADD "DAT_IB_FETCH_AND_ADD"\r
#define DAT_IB_ATTR_CMP_AND_SWAP "DAT_IB_CMP_AND_SWAP"\r
#define DAT_IB_ATTR_IMMED_DATA "DAT_IB_IMMED_DATA"\r
DAT_IB_FETCH_AND_ADD_OP,\r
DAT_IB_CMP_AND_SWAP_OP,\r
DAT_IB_RDMA_WRITE_IMMED_OP,\r
- DAT_IB_UD_SEND_OP,\r
- DAT_QUERY_COUNTERS_OP\r
\r
} DAT_IB_OP;\r
\r
\r
} DAT_IB_MEM_PRIV_FLAGS;\r
\r
-/*\r
- * Definitions for 64-bit IA Counters\r
- */\r
-typedef enum dat_ia_counters\r
-{\r
- DCNT_IA_PZ_CREATE,\r
- DCNT_IA_PZ_FREE,\r
- DCNT_IA_LMR_CREATE,\r
- DCNT_IA_LMR_FREE,\r
- DCNT_IA_RMR_CREATE,\r
- DCNT_IA_RMR_FREE,\r
- DCNT_IA_PSP_CREATE,\r
- DCNT_IA_PSP_CREATE_ANY,\r
- DCNT_IA_PSP_FREE,\r
- DCNT_IA_RSP_CREATE,\r
- DCNT_IA_RSP_FREE,\r
- DCNT_IA_EVD_CREATE,\r
- DCNT_IA_EVD_FREE,\r
- DCNT_IA_EP_CREATE,\r
- DCNT_IA_EP_FREE,\r
- DCNT_IA_SRQ_CREATE,\r
- DCNT_IA_SRQ_FREE,\r
- DCNT_IA_SP_CR,\r
- DCNT_IA_SP_CR_ACCEPTED,\r
- DCNT_IA_SP_CR_REJECTED,\r
- DCNT_IA_MEM_ALLOC,\r
- DCNT_IA_MEM_ALLOC_DATA,\r
- DCNT_IA_MEM_FREE,\r
- DCNT_IA_ASYNC_ERROR,\r
- DCNT_IA_ASYNC_QP_ERROR,\r
- DCNT_IA_ASYNC_CQ_ERROR,\r
- DCNT_IA_ALL_COUNTERS, /* MUST be last */\r
-\r
-} DAT_IA_COUNTERS;\r
-\r
-/*\r
- * Definitions for 64-bit EP Counters\r
- */\r
-typedef enum dat_ep_counters\r
-{\r
- DCNT_EP_CONNECT,\r
- DCNT_EP_DISCONNECT,\r
- DCNT_EP_POST_SEND,\r
- DCNT_EP_POST_SEND_DATA,\r
- DCNT_EP_POST_SEND_UD,\r
- DCNT_EP_POST_RECV,\r
- DCNT_EP_POST_RECV_DATA,\r
- DCNT_EP_POST_WRITE,\r
- DCNT_EP_POST_WRITE_DATA,\r
- DCNT_EP_POST_WRITE_IMM,\r
- DCNT_EP_POST_WRITE_IMM_DATA,\r
- DCNT_EP_POST_READ,\r
- DCNT_EP_POST_READ_DATA,\r
- DCNT_EP_ALL_COUNTERS, /* MUST be last */\r
-\r
-} DAT_EP_COUNTERS;\r
-\r
-/*\r
- * Definitions for 64-bit EVD Counters\r
- */\r
-typedef enum dat_evd_counters\r
-{\r
- DCNT_EVD_WAIT,\r
- DCNT_EVD_WAIT_BLOCKED,\r
- DCNT_EVD_WAIT_NOTIFY,\r
- DCNT_EVD_DEQUEUE,\r
- DCNT_EVD_DEQUEUE_FOUND,\r
- DCNT_EVD_DEQUEUE_NOT_FOUND,\r
- DCNT_EVD_DEQUEUE_POLL,\r
- DCNT_EVD_DEQUEUE_POLL_FOUND,\r
- DCNT_EVD_CONN_CALLBACK,\r
- DCNT_EVD_DTO_CALLBACK,\r
- DCNT_EVD_ALL_COUNTERS, /* MUST be last */\r
-\r
-} DAT_EVD_COUNTERS;\r
\r
/* \r
* Definitions for extended event data:\r
(idata), \\r
(flgs))\r
\r
-\r
-/* \r
- * Query counters: \r
- * Provide IA, EP, or EVD and call will return appropriate counters\r
- * DAT_HANDLE dat_handle, enum cntr, *DAT_UINT64 p_cntrs_out, int reset\r
- */\r
-#define dat_query_counters(dat_handle, cntr, p_cntrs_out, reset) \\r
- dat_extension_op( dat_handle, \\r
- DAT_QUERY_COUNTERS_OP, \\r
- (cntr), \\r
- (p_cntrs_out), \\r
- (reset))\r
-/* \r
- * Print counter(s): \r
- * Provide IA, EP, or EVD and call will print appropriate counters\r
- * DAT_HANDLE dat_handle, int cntr, reset\r
- */\r
-#define dat_print_counters(dat_handle, counter) \\r
- dat_extension_op( dat_handle, \\r
- DAT_PRINT_COUNTERS_OP, \\r
- (cntr), \\r
- (reset))\r
-\r
#endif /* _DAT_IB_EXTENSIONS_H_ */\r
\r
#error "UNDEFINED OS TYPE"\r
#endif /* __linux__ */\r
\r
-#include <dat/udat.h>\r
+#include <dat2/udat.h>\r
\r
#include <assert.h>\r
#include <ctype.h>\r