diff options
author | Michael Adam <obnox@samba.org> | 2013-02-26 15:54:57 +0100 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2013-03-01 11:59:17 -0800 |
commit | 883d20a9bf7444e6338e13d6efbcbc257e1d78b7 (patch) | |
tree | e0a18ff457ab3b4356c2ed129163715ede00ac0b | |
parent | 5f284bec47971ea25df5461dfb3fbed731c243a8 (diff) | |
download | samba-883d20a9bf7444e6338e13d6efbcbc257e1d78b7.tar.gz samba-883d20a9bf7444e6338e13d6efbcbc257e1d78b7.tar.bz2 samba-883d20a9bf7444e6338e13d6efbcbc257e1d78b7.zip |
tevent: add trace points BEFORE_LOOP_ONCE and AFTER_LOOP_ONCE
The define TEVENT_HAS_LOOP_ONCE_TRACE_POINTS can be used to
detect the new feature, without writing configure tests.
Pair-Programmed-With: Stefan Metzmacher <metze@samba.org>
Signed-off-by: Michael Adam <obnox@samba.org>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
-rw-r--r-- | lib/tevent/testsuite.c | 3 | ||||
-rw-r--r-- | lib/tevent/tevent.c | 4 | ||||
-rw-r--r-- | lib/tevent/tevent.h | 11 |
3 files changed, 18 insertions, 0 deletions
diff --git a/lib/tevent/testsuite.c b/lib/tevent/testsuite.c index e053682047..142ba4f725 100644 --- a/lib/tevent/testsuite.c +++ b/lib/tevent/testsuite.c @@ -194,6 +194,9 @@ static void test_event_threaded_trace(enum tevent_trace_point point, case TEVENT_TRACE_AFTER_WAIT: test_event_threaded_lock(); break; + case TEVENT_TRACE_BEFORE_LOOP_ONCE: + case TEVENT_TRACE_AFTER_LOOP_ONCE: + break; } } diff --git a/lib/tevent/tevent.c b/lib/tevent/tevent.c index 3b273d6c53..63d5f1536c 100644 --- a/lib/tevent/tevent.c +++ b/lib/tevent/tevent.c @@ -525,7 +525,9 @@ int _tevent_loop_once(struct tevent_context *ev, const char *location) } } + tevent_trace_point_callback(ev, TEVENT_TRACE_BEFORE_LOOP_ONCE); ret = ev->ops->loop_once(ev, location); + tevent_trace_point_callback(ev, TEVENT_TRACE_AFTER_LOOP_ONCE); if (ev->nesting.level > 0) { if (ev->nesting.hook_fn) { @@ -585,7 +587,9 @@ int _tevent_loop_until(struct tevent_context *ev, } while (!finished(private_data)) { + tevent_trace_point_callback(ev, TEVENT_TRACE_BEFORE_LOOP_ONCE); ret = ev->ops->loop_once(ev, location); + tevent_trace_point_callback(ev, TEVENT_TRACE_AFTER_LOOP_ONCE); if (ret != 0) { break; } diff --git a/lib/tevent/tevent.h b/lib/tevent/tevent.h index dc61912be7..6b4d371e4c 100644 --- a/lib/tevent/tevent.h +++ b/lib/tevent/tevent.h @@ -524,6 +524,17 @@ enum tevent_trace_point { * Corresponds to a trace point just after waiting */ TEVENT_TRACE_AFTER_WAIT, +#define TEVENT_HAS_LOOP_ONCE_TRACE_POINTS 1 + /** + * Corresponds to a trace point just before calling + * the loop_once() backend function. + */ + TEVENT_TRACE_BEFORE_LOOP_ONCE, + /** + * Corresponds to a trace point right after the + * loop_once() backend function has returned. + */ + TEVENT_TRACE_AFTER_LOOP_ONCE, }; typedef void (*tevent_trace_callback_t)(enum tevent_trace_point, |