trace: update docs with meson build information

The documentation still refers to the makefile and the old sub-directory
layout. Meson works differently: tracetool output is placed into the
builddir with mangled filenames like <builddir>/trace/trace-accel_kvm.h
for the accel/kvm/ trace.h definition.

This meson setup also requires a manually-created accel/kvm/trace.h file
that #includes the <builddir>/trace/trace-accel_kvm.h file. Document
this!

Reported-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-id: 20210112165859.225534-3-stefanha@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
Stefan Hajnoczi 2021-01-12 16:58:59 +00:00
parent 3faf22ef44
commit 0dfb3ca73c
1 changed files with 34 additions and 23 deletions

View File

@ -39,40 +39,51 @@ Trace events
Sub-directory setup Sub-directory setup
------------------- -------------------
Each directory in the source tree can declare a set of static trace events Each directory in the source tree can declare a set of trace events in a local
in a local "trace-events" file. All directories which contain "trace-events" "trace-events" file. All directories which contain "trace-events" files must be
files must be listed in the "trace-events-subdirs" make variable in the top listed in the "trace_events_subdirs" variable in the top level meson.build
level Makefile.objs. During build, the "trace-events" file in each listed file. During build, the "trace-events" file in each listed subdirectory will be
subdirectory will be processed by the "tracetool" script to generate code for processed by the "tracetool" script to generate code for the trace events.
the trace events.
The individual "trace-events" files are merged into a "trace-events-all" file, The individual "trace-events" files are merged into a "trace-events-all" file,
which is also installed into "/usr/share/qemu" with the name "trace-events". which is also installed into "/usr/share/qemu" with the name "trace-events".
This merged file is to be used by the "simpletrace.py" script to later analyse This merged file is to be used by the "simpletrace.py" script to later analyse
traces in the simpletrace data format. traces in the simpletrace data format.
In the sub-directory the following files will be automatically generated The following files are automatically generated in <builddir>/trace/ during the
build:
- trace.c - the trace event state declarations - trace-<subdir>.c - the trace event state declarations
- trace.h - the trace event enums and probe functions - trace-<subdir>.h - the trace event enums and probe functions
- trace-dtrace.h - DTrace event probe specification - trace-dtrace-<subdir>.h - DTrace event probe specification
- trace-dtrace.dtrace - DTrace event probe helper declaration - trace-dtrace-<subdir>.dtrace - DTrace event probe helper declaration
- trace-dtrace.o - binary DTrace provider (generated by dtrace) - trace-dtrace-<subdir>.o - binary DTrace provider (generated by dtrace)
- trace-ust.h - UST event probe helper declarations - trace-ust-<subdir>.h - UST event probe helper declarations
Source files in the sub-directory should #include the local 'trace.h' file, Here <subdir> is the sub-directory path with '/' replaced by '_'. For example,
without any sub-directory path prefix. eg io/channel-buffer.c would do:: "accel/kvm" becomes "accel_kvm" and the final filename for "trace-<subdir>.c"
becomes "trace-accel_kvm.c".
Source files in the source tree do not directly include generated files in
"<builddir>/trace/". Instead they #include the local "trace.h" file, without
any sub-directory path prefix. eg io/channel-buffer.c would do::
#include "trace.h" #include "trace.h"
To access the 'io/trace.h' file. While it is possible to include a trace.h The "io/trace.h" file must be created manually with an #include of the
file from outside a source file's own sub-directory, this is discouraged in corresponding "trace/trace-<subdir>.h" file that will be generated in the
general. It is strongly preferred that all events be declared directly in builddir::
the sub-directory that uses them. The only exception is where there are some
shared trace events defined in the top level directory trace-events file. $ echo '#include "trace/trace-io.h"' >io/trace.h
The top level directory generates trace files with a filename prefix of
"trace/trace-root" instead of just "trace". This is to avoid ambiguity between While it is possible to include a trace.h file from outside a source file's own
a trace.h in the current directory, vs the top level directory. sub-directory, this is discouraged in general. It is strongly preferred that
all events be declared directly in the sub-directory that uses them. The only
exception is where there are some shared trace events defined in the top level
directory trace-events file. The top level directory generates trace files
with a filename prefix of "trace/trace-root" instead of just "trace". This is
to avoid ambiguity between a trace.h in the current directory, vs the top level
directory.
Using trace events Using trace events
------------------ ------------------