diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2015-10-28 07:06:26 +0100 |
---|---|---|
committer | Timothy Pearson <tpearson@raptorengineering.com> | 2019-11-29 19:30:23 -0600 |
commit | 36fab7fa7fb5809e0191d22a1c0a50b810e53ff8 (patch) | |
tree | 64695d2fa8e1c297b6592b51057eb2da04ea6e06 | |
parent | 8814dad0366edca6658710cb8611f2504d537a36 (diff) | |
download | hqemu-36fab7fa7fb5809e0191d22a1c0a50b810e53ff8.zip hqemu-36fab7fa7fb5809e0191d22a1c0a50b810e53ff8.tar.gz |
trace: count number of enabled events
This lets trace_event_get_state_dynamic quickly return false. Right
now there is hardly any benefit because there are also many assertions
and indirections, but the next patch will streamline all of this.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
-rw-r--r-- | trace/control-internal.h | 4 | ||||
-rw-r--r-- | trace/control.c | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/trace/control-internal.h b/trace/control-internal.h index 5a8df28..271bddb 100644 --- a/trace/control-internal.h +++ b/trace/control-internal.h @@ -14,6 +14,7 @@ extern TraceEvent trace_events[]; +extern int trace_events_enabled_count; static inline TraceEventID trace_event_count(void) @@ -54,13 +55,14 @@ static inline bool trace_event_get_state_static(TraceEvent *ev) static inline bool trace_event_get_state_dynamic(TraceEvent *ev) { assert(ev != NULL); - return ev->dstate; + return unlikely(trace_events_enabled_count) && ev->dstate; } static inline void trace_event_set_state_dynamic(TraceEvent *ev, bool state) { assert(ev != NULL); assert(trace_event_get_state_static(ev)); + trace_events_enabled_count += state - ev->dstate; ev->dstate = state; } diff --git a/trace/control.c b/trace/control.c index 995beb3..95fbc07 100644 --- a/trace/control.c +++ b/trace/control.c @@ -16,6 +16,8 @@ #endif #include "qemu/error-report.h" +int trace_events_enabled_count; + TraceEvent *trace_event_name(const char *name) { assert(name != NULL); |