From b7d66a761f44a725352e19b64c587924647e6f83 Mon Sep 17 00:00:00 2001 From: Lluís Vilanova Date: Tue, 6 Dec 2011 17:38:15 +0100 Subject: trace: Provide a per-event status define for conditional compilation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a 'TRACE_${NAME}_ENABLED' preprocessor define for each tracing event in "trace.h". This lets the user conditionally compile code with a relatively high execution cost that is only necessary when producing the tracing information for an event that is enabled. Note that events using this define will probably have the "disable" property by default, in order to avoid such costs on regular builds. Signed-off-by: Lluís Vilanova Signed-off-by: Stefan Hajnoczi --- scripts/tracetool | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'scripts') diff --git a/scripts/tracetool b/scripts/tracetool index 4c9951d0aa..701b517ec1 100755 --- a/scripts/tracetool +++ b/scripts/tracetool @@ -519,7 +519,7 @@ linetostap_end_dtrace() # Process stdin by calling begin, line, and end functions for the backend convert() { - local begin process_line end str disable + local begin process_line end str name NAME enabled begin="lineto$1_begin_$backend" process_line="lineto$1_$backend" end="lineto$1_end_$backend" @@ -534,8 +534,15 @@ convert() # Process the line. The nop backend handles disabled lines. if has_property "$str" "disable"; then "lineto$1_nop" "$str" + enabled=0 else "$process_line" "$str" + enabled=1 + fi + if [ "$1" = "h" ]; then + name=$(get_name "$str") + NAME=$(echo $name | tr '[:lower:]' '[:upper:]') + echo "#define TRACE_${NAME}_ENABLED ${enabled}" fi done -- cgit 1.4.1 From bcec43324d02d586a8bc0c9093623636e870ad19 Mon Sep 17 00:00:00 2001 From: Stefan Hajnoczi Date: Tue, 27 Sep 2011 09:00:22 +0100 Subject: tracetool: Omit useless QEMU_*_ENABLED() check SystemTap provides a "semaphore" that can optionally be tested before executing a trace event. The purpose of this mechanism is to skip expensive tracing code when the trace event is disabled. For example, some applications may have trace events that format or convert strings for trace events. This expensive processing should only be done in the case where the trace event is enabled. Since QEMU's generated trace events never have such special-purpose code, there is no reason to add the semaphore check. Reviewed-by: Masami Hiramatsu Signed-off-by: Stefan Hajnoczi --- scripts/tracetool | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'scripts') diff --git a/scripts/tracetool b/scripts/tracetool index 701b517ec1..65bd0a1b4c 100755 --- a/scripts/tracetool +++ b/scripts/tracetool @@ -415,9 +415,7 @@ linetoh_dtrace() # Define an empty function for the trace event cat <