summaryrefslogtreecommitdiff
path: root/lib/tevent
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2013-02-26 15:54:57 +0100
committerJeremy Allison <jra@samba.org>2013-03-01 11:59:17 -0800
commit883d20a9bf7444e6338e13d6efbcbc257e1d78b7 (patch)
treee0a18ff457ab3b4356c2ed129163715ede00ac0b /lib/tevent
parent5f284bec47971ea25df5461dfb3fbed731c243a8 (diff)
downloadsamba-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>
Diffstat (limited to 'lib/tevent')
-rw-r--r--lib/tevent/testsuite.c3
-rw-r--r--lib/tevent/tevent.c4
-rw-r--r--lib/tevent/tevent.h11
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,