trace: add build framework for merging trace-events files
Switch make rules over to use trace-events-all as the master trace events input file. Add rule that will construct trace-events-all from $(trace-events-y). Signed-off-by: Daniel P. Berrange <berrange@redhat.com> Message-id: 1466066426-16657-2-git-send-email-berrange@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
dcdaadb6ea
commit
1412cf58be
1
.gitignore
vendored
1
.gitignore
vendored
@ -5,6 +5,7 @@
|
||||
/config-target.*
|
||||
/config.status
|
||||
/config-temp
|
||||
/trace-events-all
|
||||
/trace/generated-tracers.h
|
||||
/trace/generated-tracers.c
|
||||
/trace/generated-tracers-dtrace.h
|
||||
|
2
Makefile
2
Makefile
@ -487,7 +487,7 @@ endif
|
||||
set -e; for x in $(KEYMAPS); do \
|
||||
$(INSTALL_DATA) $(SRC_PATH)/pc-bios/keymaps/$$x "$(DESTDIR)$(qemu_datadir)/keymaps"; \
|
||||
done
|
||||
$(INSTALL_DATA) $(SRC_PATH)/trace-events "$(DESTDIR)$(qemu_datadir)/trace-events"
|
||||
$(INSTALL_DATA) $(BUILD_DIR)/trace-events-all "$(DESTDIR)$(qemu_datadir)/trace-events-all"
|
||||
for d in $(TARGET_DIRS); do \
|
||||
$(MAKE) $(SUBDIR_MAKEFLAGS) TARGET_DIR=$$d/ -C $$d $@ || exit 1 ; \
|
||||
done
|
||||
|
@ -115,3 +115,7 @@ qga-vss-dll-obj-y = qga/
|
||||
# contrib
|
||||
ivshmem-client-obj-y = contrib/ivshmem-client/
|
||||
ivshmem-server-obj-y = contrib/ivshmem-server/
|
||||
|
||||
|
||||
######################################################################
|
||||
trace-events-y = trace-events
|
||||
|
@ -48,7 +48,7 @@ else
|
||||
TARGET_TYPE=system
|
||||
endif
|
||||
|
||||
$(QEMU_PROG).stp-installed: $(SRC_PATH)/trace-events
|
||||
$(QEMU_PROG).stp-installed: $(BUILD_DIR)/trace-events-all
|
||||
$(call quiet-command,$(TRACETOOL) \
|
||||
--format=stap \
|
||||
--backends=$(TRACE_BACKENDS) \
|
||||
@ -57,7 +57,7 @@ $(QEMU_PROG).stp-installed: $(SRC_PATH)/trace-events
|
||||
--target-type=$(TARGET_TYPE) \
|
||||
< $< > $@," GEN $(TARGET_DIR)$(QEMU_PROG).stp-installed")
|
||||
|
||||
$(QEMU_PROG).stp: $(SRC_PATH)/trace-events
|
||||
$(QEMU_PROG).stp: $(BUILD_DIR)/trace-events-all
|
||||
$(call quiet-command,$(TRACETOOL) \
|
||||
--format=stap \
|
||||
--backends=$(TRACE_BACKENDS) \
|
||||
@ -66,7 +66,7 @@ $(QEMU_PROG).stp: $(SRC_PATH)/trace-events
|
||||
--target-type=$(TARGET_TYPE) \
|
||||
< $< > $@," GEN $(TARGET_DIR)$(QEMU_PROG).stp")
|
||||
|
||||
$(QEMU_PROG)-simpletrace.stp: $(SRC_PATH)/trace-events
|
||||
$(QEMU_PROG)-simpletrace.stp: $(BUILD_DIR)/trace-events-all
|
||||
$(call quiet-command,$(TRACETOOL) \
|
||||
--format=simpletrace-stap \
|
||||
--backends=$(TRACE_BACKENDS) \
|
||||
|
@ -23,20 +23,24 @@ for debugging, profiling, and observing execution.
|
||||
|
||||
4. Pretty-print the binary trace file:
|
||||
|
||||
./scripts/simpletrace.py trace-events trace-* # Override * with QEMU <pid>
|
||||
./scripts/simpletrace.py trace-events-all trace-* # Override * with QEMU <pid>
|
||||
|
||||
== Trace events ==
|
||||
|
||||
There is a set of static trace events declared in the "trace-events" source
|
||||
file. Each trace event declaration names the event, its arguments, and the
|
||||
format string which can be used for pretty-printing:
|
||||
Each directory in the source tree can declare a set of static trace events
|
||||
in a "trace-events" file. Each trace event declaration names the event, its
|
||||
arguments, and the format string which can be used for pretty-printing:
|
||||
|
||||
qemu_vmalloc(size_t size, void *ptr) "size %zu ptr %p"
|
||||
qemu_vfree(void *ptr) "ptr %p"
|
||||
|
||||
The "trace-events" file is processed by the "tracetool" script during build to
|
||||
generate code for the trace events. Trace events are invoked directly from
|
||||
source code like this:
|
||||
All "trace-events" files must be listed in the "trace-event-y" make variable
|
||||
in the top level Makefile.objs. During build the individual files are combined
|
||||
to create a "trace-events-all" file, which is processed by the "tracetool"
|
||||
script during build to generate code for the trace events. The
|
||||
"trace-events-all" file is also installed into "/usr/share/qemu".
|
||||
|
||||
Trace events are invoked directly from source code like this:
|
||||
|
||||
#include "trace.h" /* needed for trace event prototype */
|
||||
|
||||
@ -196,12 +200,12 @@ Restriction: "ftrace" backend is restricted to Linux only.
|
||||
==== Analyzing trace files ====
|
||||
|
||||
The "simple" backend produces binary trace files that can be formatted with the
|
||||
simpletrace.py script. The script takes the "trace-events" file and the binary
|
||||
trace:
|
||||
simpletrace.py script. The script takes the "trace-events-all" file and the
|
||||
binary trace:
|
||||
|
||||
./scripts/simpletrace.py trace-events trace-12345
|
||||
./scripts/simpletrace.py trace-events-all trace-12345
|
||||
|
||||
You must ensure that the same "trace-events" file was used to build QEMU,
|
||||
You must ensure that the same "trace-events-all" file was used to build QEMU,
|
||||
otherwise trace event declarations may have changed and output will not be
|
||||
consistent.
|
||||
|
||||
@ -259,11 +263,11 @@ probes:
|
||||
--binary path/to/qemu-binary \
|
||||
--target-type system \
|
||||
--target-name x86_64 \
|
||||
<trace-events >qemu.stp
|
||||
<trace-events-all >qemu.stp
|
||||
|
||||
== Trace event properties ==
|
||||
|
||||
Each event in the "trace-events" file can be prefixed with a space-separated
|
||||
Each event in the "trace-events-all" file can be prefixed with a space-separated
|
||||
list of zero or more of the following event properties.
|
||||
|
||||
=== "disable" ===
|
||||
@ -275,7 +279,7 @@ programmatically disabled.
|
||||
In this case you should declare such event with the "disable" property. This
|
||||
will effectively disable the event at compile time (by using the "nop" backend),
|
||||
thus having no performance impact at all on regular builds (i.e., unless you
|
||||
edit the "trace-events" file).
|
||||
edit the "trace-events-all" file).
|
||||
|
||||
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
|
||||
|
@ -3677,8 +3677,8 @@ Specify tracing options.
|
||||
@table @option
|
||||
@item [enable=]@var{pattern}
|
||||
Immediately enable events matching @var{pattern}.
|
||||
The file must contain one event name (as listed in the @file{trace-events} file)
|
||||
per line; globbing patterns are accepted too. This option is only
|
||||
The file must contain one event name (as listed in the @file{trace-events-all}
|
||||
file) per line; globbing patterns are accepted too. This option is only
|
||||
available if QEMU has been compiled with the @var{simple}, @var{stderr}
|
||||
or @var{ftrace} tracing backend. To specify multiple events or patterns,
|
||||
specify the @option{-trace} option multiple times.
|
||||
@ -3687,8 +3687,8 @@ Use @code{-trace help} to print a list of names of trace points.
|
||||
|
||||
@item events=@var{file}
|
||||
Immediately enable events listed in @var{file}.
|
||||
The file must contain one event name (as listed in the @file{trace-events} file)
|
||||
per line; globbing patterns are accepted too. This option is only
|
||||
The file must contain one event name (as listed in the @file{trace-events-all}
|
||||
file) per line; globbing patterns are accepted too. This option is only
|
||||
available if QEMU has been compiled with the @var{simple}, @var{stderr} or
|
||||
@var{ftrace} tracing backend.
|
||||
|
||||
|
@ -8,13 +8,16 @@
|
||||
tracetool-y = $(SRC_PATH)/scripts/tracetool.py
|
||||
tracetool-y += $(shell find $(SRC_PATH)/scripts/tracetool -name "*.py")
|
||||
|
||||
$(BUILD_DIR)/trace-events-all: $(trace-events-y:%=$(SRC_PATH)/%)
|
||||
$(call quiet-command,cat $^ > $@)
|
||||
|
||||
######################################################################
|
||||
# Auto-generated event descriptions for LTTng ust code
|
||||
|
||||
ifeq ($(findstring ust,$(TRACE_BACKENDS)),ust)
|
||||
$(obj)/generated-ust-provider.h: $(obj)/generated-ust-provider.h-timestamp
|
||||
@cmp $< $@ >/dev/null 2>&1 || cp $< $@
|
||||
$(obj)/generated-ust-provider.h-timestamp: $(SRC_PATH)/trace-events $(tracetool-y)
|
||||
$(obj)/generated-ust-provider.h-timestamp: $(BUILD_DIR)/trace-events-all $(tracetool-y)
|
||||
$(call quiet-command,$(TRACETOOL) \
|
||||
--format=ust-events-h \
|
||||
--backends=$(TRACE_BACKENDS) \
|
||||
@ -22,7 +25,7 @@ $(obj)/generated-ust-provider.h-timestamp: $(SRC_PATH)/trace-events $(tracetool-
|
||||
|
||||
$(obj)/generated-ust.c: $(obj)/generated-ust.c-timestamp $(BUILD_DIR)/config-host.mak
|
||||
@cmp $< $@ >/dev/null 2>&1 || cp $< $@
|
||||
$(obj)/generated-ust.c-timestamp: $(SRC_PATH)/trace-events $(tracetool-y)
|
||||
$(obj)/generated-ust.c-timestamp: $(BUILD_DIR)/trace-events-all $(tracetool-y)
|
||||
$(call quiet-command,$(TRACETOOL) \
|
||||
--format=ust-events-c \
|
||||
--backends=$(TRACE_BACKENDS) \
|
||||
@ -37,7 +40,7 @@ endif
|
||||
|
||||
$(obj)/generated-events.h: $(obj)/generated-events.h-timestamp
|
||||
@cmp $< $@ >/dev/null 2>&1 || cp $< $@
|
||||
$(obj)/generated-events.h-timestamp: $(SRC_PATH)/trace-events $(tracetool-y)
|
||||
$(obj)/generated-events.h-timestamp: $(BUILD_DIR)/trace-events-all $(tracetool-y)
|
||||
$(call quiet-command,$(TRACETOOL) \
|
||||
--format=events-h \
|
||||
--backends=$(TRACE_BACKENDS) \
|
||||
@ -45,7 +48,7 @@ $(obj)/generated-events.h-timestamp: $(SRC_PATH)/trace-events $(tracetool-y)
|
||||
|
||||
$(obj)/generated-events.c: $(obj)/generated-events.c-timestamp $(BUILD_DIR)/config-host.mak
|
||||
@cmp $< $@ >/dev/null 2>&1 || cp $< $@
|
||||
$(obj)/generated-events.c-timestamp: $(SRC_PATH)/trace-events $(tracetool-y)
|
||||
$(obj)/generated-events.c-timestamp: $(BUILD_DIR)/trace-events-all $(tracetool-y)
|
||||
$(call quiet-command,$(TRACETOOL) \
|
||||
--format=events-c \
|
||||
--backends=$(TRACE_BACKENDS) \
|
||||
@ -62,7 +65,7 @@ util-obj-y += generated-events.o
|
||||
|
||||
$(obj)/generated-tracers.h: $(obj)/generated-tracers.h-timestamp
|
||||
@cmp -s $< $@ || cp $< $@
|
||||
$(obj)/generated-tracers.h-timestamp: $(SRC_PATH)/trace-events $(BUILD_DIR)/config-host.mak $(tracetool-y)
|
||||
$(obj)/generated-tracers.h-timestamp: $(BUILD_DIR)/trace-events-all $(BUILD_DIR)/config-host.mak $(tracetool-y)
|
||||
$(call quiet-command,$(TRACETOOL) \
|
||||
--format=h \
|
||||
--backends=$(TRACE_BACKENDS) \
|
||||
@ -73,7 +76,7 @@ $(obj)/generated-tracers.h-timestamp: $(SRC_PATH)/trace-events $(BUILD_DIR)/conf
|
||||
|
||||
$(obj)/generated-tracers.c: $(obj)/generated-tracers.c-timestamp
|
||||
@cmp -s $< $@ || cp $< $@
|
||||
$(obj)/generated-tracers.c-timestamp: $(SRC_PATH)/trace-events $(BUILD_DIR)/config-host.mak $(tracetool-y)
|
||||
$(obj)/generated-tracers.c-timestamp: $(BUILD_DIR)/trace-events-all $(BUILD_DIR)/config-host.mak $(tracetool-y)
|
||||
$(call quiet-command,$(TRACETOOL) \
|
||||
--format=c \
|
||||
--backends=$(TRACE_BACKENDS) \
|
||||
@ -90,7 +93,7 @@ $(obj)/generated-tracers.o: $(obj)/generated-tracers.c $(obj)/generated-tracers.
|
||||
ifeq ($(findstring dtrace,$(TRACE_BACKENDS)),dtrace)
|
||||
$(obj)/generated-tracers-dtrace.dtrace: $(obj)/generated-tracers-dtrace.dtrace-timestamp
|
||||
@cmp $< $@ >/dev/null 2>&1 || cp $< $@
|
||||
$(obj)/generated-tracers-dtrace.dtrace-timestamp: $(SRC_PATH)/trace-events $(BUILD_DIR)/config-host.mak $(tracetool-y)
|
||||
$(obj)/generated-tracers-dtrace.dtrace-timestamp: $(BUILD_DIR)/trace-events-all $(BUILD_DIR)/config-host.mak $(tracetool-y)
|
||||
$(call quiet-command,$(TRACETOOL) \
|
||||
--format=d \
|
||||
--backends=$(TRACE_BACKENDS) \
|
||||
@ -109,7 +112,7 @@ endif
|
||||
|
||||
$(obj)/generated-helpers-wrappers.h: $(obj)/generated-helpers-wrappers.h-timestamp
|
||||
@cmp $< $@ >/dev/null 2>&1 || cp $< $@
|
||||
$(obj)/generated-helpers-wrappers.h-timestamp: $(SRC_PATH)/trace-events $(BUILD_DIR)/config-host.mak $(tracetool-y)
|
||||
$(obj)/generated-helpers-wrappers.h-timestamp: $(BUILD_DIR)/trace-events-all $(BUILD_DIR)/config-host.mak $(tracetool-y)
|
||||
$(call quiet-command,$(TRACETOOL) \
|
||||
--format=tcg-helper-wrapper-h \
|
||||
--backend=$(TRACE_BACKENDS) \
|
||||
@ -117,7 +120,7 @@ $(obj)/generated-helpers-wrappers.h-timestamp: $(SRC_PATH)/trace-events $(BUILD_
|
||||
|
||||
$(obj)/generated-helpers.h: $(obj)/generated-helpers.h-timestamp
|
||||
@cmp $< $@ >/dev/null 2>&1 || cp $< $@
|
||||
$(obj)/generated-helpers.h-timestamp: $(SRC_PATH)/trace-events $(BUILD_DIR)/config-host.mak $(tracetool-y)
|
||||
$(obj)/generated-helpers.h-timestamp: $(BUILD_DIR)/trace-events-all $(BUILD_DIR)/config-host.mak $(tracetool-y)
|
||||
$(call quiet-command,$(TRACETOOL) \
|
||||
--format=tcg-helper-h \
|
||||
--backend=$(TRACE_BACKENDS) \
|
||||
@ -125,7 +128,7 @@ $(obj)/generated-helpers.h-timestamp: $(SRC_PATH)/trace-events $(BUILD_DIR)/conf
|
||||
|
||||
$(obj)/generated-helpers.c: $(obj)/generated-helpers.c-timestamp
|
||||
@cmp $< $@ >/dev/null 2>&1 || cp $< $@
|
||||
$(obj)/generated-helpers.c-timestamp: $(SRC_PATH)/trace-events $(BUILD_DIR)/config-host.mak $(tracetool-y)
|
||||
$(obj)/generated-helpers.c-timestamp: $(BUILD_DIR)/trace-events-all $(BUILD_DIR)/config-host.mak $(tracetool-y)
|
||||
$(call quiet-command,$(TRACETOOL) \
|
||||
--format=tcg-helper-c \
|
||||
--backend=$(TRACE_BACKENDS) \
|
||||
@ -138,7 +141,7 @@ target-obj-y += generated-helpers.o
|
||||
|
||||
$(obj)/generated-tcg-tracers.h: $(obj)/generated-tcg-tracers.h-timestamp
|
||||
@cmp $< $@ >/dev/null 2>&1 || cp $< $@
|
||||
$(obj)/generated-tcg-tracers.h-timestamp: $(SRC_PATH)/trace-events $(BUILD_DIR)/config-host.mak $(tracetool-y)
|
||||
$(obj)/generated-tcg-tracers.h-timestamp: $(BUILD_DIR)/trace-events-all $(BUILD_DIR)/config-host.mak $(tracetool-y)
|
||||
$(call quiet-command,$(TRACETOOL) \
|
||||
--format=tcg-h \
|
||||
--backend=$(TRACE_BACKENDS) \
|
||||
|
Loading…
Reference in New Issue
Block a user