summaryrefslogtreecommitdiffstats
path: root/lib/tevent/tevent.h
diff options
context:
space:
mode:
authorMartin Schwenke <martin@meltin.net>2012-06-05 16:00:07 +1000
committerStefan Metzmacher <metze@samba.org>2012-06-08 19:00:05 +0200
commit796acbd9ffd20f13f320641b8a27f86624f3d701 (patch)
tree5185331f59a2197a68ada44ca27f8ab0435d2608 /lib/tevent/tevent.h
parent653cb76edfc3e9c2c426a6f8ec6ecfb253bd54d9 (diff)
downloadsamba-796acbd9ffd20f13f320641b8a27f86624f3d701.tar.gz
samba-796acbd9ffd20f13f320641b8a27f86624f3d701.tar.xz
samba-796acbd9ffd20f13f320641b8a27f86624f3d701.zip
lib/tevent: Add trace point callback
Set/get a single callback function to be invoked at various trace points. Define "before wait" and "after wait" trace points - more trace points can be added later if required. CTDB wants this to log long waits and events. Pair-programmed-with: Amitay Isaacs <amitay@gmail.com> Signed-off-by: Martin Schwenke <martin@meltin.net> Signed-off-by: Stefan Metzmacher <metze@samba.org>
Diffstat (limited to 'lib/tevent/tevent.h')
-rw-r--r--lib/tevent/tevent.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/lib/tevent/tevent.h b/lib/tevent/tevent.h
index c38f7c36e17..c8719fa4f19 100644
--- a/lib/tevent/tevent.h
+++ b/lib/tevent/tevent.h
@@ -501,6 +501,49 @@ int tevent_set_debug(struct tevent_context *ev,
*/
int tevent_set_debug_stderr(struct tevent_context *ev);
+enum tevent_trace_point {
+ /**
+ * Corresponds to a trace point just before waiting
+ */
+ TEVENT_TRACE_BEFORE_WAIT,
+ /**
+ * Corresponds to a trace point just after waiting
+ */
+ TEVENT_TRACE_AFTER_WAIT,
+};
+
+typedef void (*tevent_trace_callback_t)(enum tevent_trace_point,
+ void *private_data);
+
+/**
+ * Register a callback to be called at certain trace points
+ *
+ * @param[in] ev Event context
+ * @param[in] cb Trace callback
+ * @param[in] private_data Data to be passed to callback
+ *
+ * @note The callback will be called at trace points defined by
+ * tevent_trace_point. Call with NULL to reset.
+ */
+void tevent_set_trace_callback(struct tevent_context *ev,
+ tevent_trace_callback_t cb,
+ void *private_data);
+
+/**
+ * Retrieve the current trace callback
+ *
+ * @param[in] ev Event context
+ * @param[out] cb Registered trace callback
+ * @param[out] private_data Registered data to be passed to callback
+ *
+ * @note This can be used to allow one component that wants to
+ * register a callback to respect the callback that another component
+ * has already registered.
+ */
+void tevent_get_trace_callback(struct tevent_context *ev,
+ tevent_trace_callback_t *cb,
+ void *private_data);
+
/**
* @}
*/