[ofw] [PATCH 9/10] DAPL v2.0: common: add new dapls_evd_post_event_ext call for extended events
Davis, Arlin R
arlin.r.davis at intel.com
Wed Aug 10 17:42:23 PDT 2011
Add prototype and code to post extended events on dispatcher and
include collective definitions to dat_event_str function.
Signed-off-by: Arlin Davis <arlin.r.davis at intel.com>
---
dapl/common/dapl_evd_util.c | 61 ++++++++++++++++++++++++++++++++++++++++++-
dapl/common/dapl_evd_util.h | 7 +++++
2 files changed, 67 insertions(+), 1 deletions(-)
diff --git a/dapl/common/dapl_evd_util.c b/dapl/common/dapl_evd_util.c
index 2a45400..9171415 100644
--- a/dapl/common/dapl_evd_util.c
+++ b/dapl/common/dapl_evd_util.c
@@ -91,7 +91,7 @@ char *dapl_event_str(IN DAT_EVENT_NUMBER event_num)
{"DAT_SOFTWARE_EVENT", DAT_SOFTWARE_EVENT},
#ifdef DAT_EXTENSIONS
{"DAT_EXTENSION_EVENT", DAT_EXTENSION_EVENT},
- {"DAT_IB_EXTENSION_RANGE_BASE", DAT_IB_EXTENSION_RANGE_BASE},
+ {"DAT_IB_DTO_EVENT", DAT_IB_EXTENSION_RANGE_BASE},
{"DAT_IB_UD_CONNECTION_REQUEST_EVENT",
DAT_IB_EXTENSION_RANGE_BASE + 1},
{"DAT_IB_UD_CONNECTION_EVENT_ESTABLISHED",
@@ -100,6 +100,8 @@ char *dapl_event_str(IN DAT_EVENT_NUMBER event_num)
DAT_IB_EXTENSION_RANGE_BASE + 3},
{"DAT_IB_UD_CONNECTION_ERROR_EVENT",
DAT_IB_EXTENSION_RANGE_BASE + 4},
+ {"DAT_IB_COLLECTIVE_EVENT",
+ DAT_IB_EXTENSION_RANGE_BASE + 5},
{"DAT_IW_EXTENSION_RANGE_BASE", DAT_IW_EXTENSION_RANGE_BASE},
#endif /* DAT_EXTENSIONS */
{NULL, 0},
@@ -837,6 +839,63 @@ err:
}
#ifdef DAT_EXTENSIONS
+
+/*
+ * dapls_evd_post_event_ext
+ *
+ * Post a extended event type. Not used by all providers
+ *
+ * Input:
+ * evd_ptr
+ * event_number
+ * data
+ * data_ext
+ *
+ * Output:
+ * none
+ *
+ * Returns:
+ * DAT_SUCCESS
+ *
+ */
+DAT_RETURN
+dapls_evd_post_event_ext(IN DAPL_EVD * evd_ptr,
+ IN DAT_EVENT_NUMBER event_number,
+ IN DAT_EVENT_DATA * data,
+ IN DAT_UINT64 * data_ext)
+{
+ DAT_EVENT *event_ptr;
+
+ dapl_os_lock(&evd_ptr->header.lock);
+ event_ptr = dapli_evd_get_and_init_event(evd_ptr, event_number);
+ /*
+ * Note event lock may be held on successful return
+ * to be released by dapli_evd_post_event(), if provider side locking
+ * is needed.
+ */
+
+ if (event_ptr == NULL) {
+ dapl_os_unlock(&evd_ptr->header.lock);
+ return DAT_ERROR(DAT_INSUFFICIENT_RESOURCES,
+ DAT_RESOURCE_MEMORY);
+ }
+
+ /* copy event and extended data */
+ if (data)
+ event_ptr->event_data = *data;
+ else
+ dapl_os_memzero(&event_ptr->event_data,
+ sizeof(event_ptr->event_data));
+
+ dapl_os_memcpy( (void*)event_ptr->event_extension_data,
+ (void *)data_ext,
+ sizeof(event_ptr->event_extension_data));
+
+ dapli_evd_post_event(evd_ptr, event_ptr);
+ dapl_os_unlock(&evd_ptr->header.lock);
+ return DAT_SUCCESS;
+}
+
DAT_RETURN
dapls_evd_do_post_cr_event_ext(IN DAPL_EVD * evd_ptr,
IN DAT_EVENT_NUMBER event_number,
diff --git a/dapl/common/dapl_evd_util.h b/dapl/common/dapl_evd_util.h
index 65472d7..3d6dbeb 100644
--- a/dapl/common/dapl_evd_util.h
+++ b/dapl/common/dapl_evd_util.h
@@ -111,6 +111,13 @@ dapls_evd_post_generic_event (
#ifdef DAT_EXTENSIONS
DAT_RETURN
+dapls_evd_post_event_ext(
+ IN DAPL_EVD *evd_ptr,
+ IN DAT_EVENT_NUMBER event_number,
+ IN DAT_EVENT_DATA *data,
+ IN DAT_UINT64 *data_ext);
+
+DAT_RETURN
dapls_evd_post_cr_event_ext (
IN DAPL_SP *sp_ptr,
IN DAT_EVENT_NUMBER event_number,
--
1.7.3
More information about the ofw
mailing list