diff options
author | Martin Schwenke <martin@meltin.net> | 2012-06-05 16:00:07 +1000 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2012-06-08 19:00:05 +0200 |
commit | 796acbd9ffd20f13f320641b8a27f86624f3d701 (patch) | |
tree | 5185331f59a2197a68ada44ca27f8ab0435d2608 /lib/tevent/tevent.h | |
parent | 653cb76edfc3e9c2c426a6f8ec6ecfb253bd54d9 (diff) | |
download | samba-796acbd9ffd20f13f320641b8a27f86624f3d701.tar.gz samba-796acbd9ffd20f13f320641b8a27f86624f3d701.tar.bz2 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.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/lib/tevent/tevent.h b/lib/tevent/tevent.h index c38f7c36e1..c8719fa4f1 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); + /** * @} */ |