docs/devel/tracing.txt: Recommend only trace_event_get_state_backends()

Instead of recommending checking the TRACE_FOO_ENABLED macro to
skip expensive computations needed only for tracing, recommend
only using trace_event_get_state_backends(). This works for both
compile-time and run-time disabling of events, and has no extra
performance impact if the event is compile-time disabled.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20200120151142.18954-2-peter.maydell@linaro.org
Message-Id: <20200120151142.18954-2-peter.maydell@linaro.org>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
Peter Maydell 2020-01-20 15:11:40 +00:00 committed by Stefan Hajnoczi
parent 70149da764
commit 1aa6430dbe

View File

@ -342,8 +342,10 @@ edit the "trace-events-all" file).
In addition, there might be cases where relatively complex computations must be In addition, there might be cases where relatively complex computations must be
performed to generate values that are only used as arguments for a trace performed to generate values that are only used as arguments for a trace
function. In these cases you can use the macro 'TRACE_${EVENT_NAME}_ENABLED' to function. In these cases you can use 'trace_event_get_state_backends()' to
guard such computations and avoid its compilation when the event is disabled: guard such computations, so they are skipped if the event has been either
compile-time disabled or run-time disabled. If the event is compile-time
disabled, this check will have no performance impact.
#include "trace.h" /* needed for trace event prototype */ #include "trace.h" /* needed for trace event prototype */
@ -356,7 +358,7 @@ guard such computations and avoid its compilation when the event is disabled:
align = getpagesize(); align = getpagesize();
} }
ptr = qemu_memalign(align, size); ptr = qemu_memalign(align, size);
if (TRACE_QEMU_VMALLOC_ENABLED) { /* preprocessor macro */ if (trace_event_get_state_backends(TRACE_QEMU_VMALLOC)) {
void *complex; void *complex;
/* some complex computations to produce the 'complex' value */ /* some complex computations to produce the 'complex' value */
trace_qemu_vmalloc(size, ptr, complex); trace_qemu_vmalloc(size, ptr, complex);
@ -364,10 +366,6 @@ guard such computations and avoid its compilation when the event is disabled:
return ptr; return ptr;
} }
You can check both if the event has been disabled and is dynamically enabled at
the same time using the 'trace_event_get_state_backends' routine (see header
"trace/control.h" for more information).
=== "tcg" === === "tcg" ===
Guest code generated by TCG can be traced by defining an event with the "tcg" Guest code generated by TCG can be traced by defining an event with the "tcg"