This series adds a basic interface to instrument tracing events and control their tracing state.
The instrumentation code is dynamically loaded into QEMU (either when it starts or later using its remote control interfaces). All events can be instrumented, but the instrumentable events must be explicitly specified at configure time. Signed-off-by: Lluís Vilanova <vilan...@ac.upc.edu> --- Lluís Vilanova (13): instrument: Add documentation instrument: [none] Add null instrumentation mode instrument: [dynamic] Add dynamic instrumentation mode instrument: Allow adding the "instrument" property without modifying event files instrument: [dynamic] Add default public per-event functions instrument: Add event control interface instrument: Add generic command line library loader instrument: [linux-user] Add command line library loader instrument: [bsd-user] Add command line library loader instrument: [softmmu] Add command line library loader instrument: [qapi] Add library loader instrument: [hmp] Add library loader trace: Rename C++-specific names in event arguments .gitignore | 7 Makefile | 65 ++++- Makefile.objs | 8 + bsd-user/main.c | 16 + bsd-user/syscall.c | 5 configure | 40 +++ docs/devel/tracing.txt | 9 + docs/instrumentation.txt | 264 ++++++++++++++++++ hmp-commands.hx | 28 ++ include/trace-tcg.h | 1 instrument/Makefile.objs | 47 +++ instrument/cmdline.c | 117 ++++++++ instrument/cmdline.h | 58 ++++ instrument/control.c | 316 ++++++++++++++++++++++ instrument/control.h | 86 ++++++ instrument/qemu-instr/control.h | 128 +++++++++ instrument/qemu-instr/types.h | 81 ++++++ instrument/qemu-instr/visibility-internal.h | 58 ++++ instrument/qmp.c | 71 +++++ linux-user/main.c | 20 + linux-user/syscall.c | 4 monitor.c | 55 ++++ qapi-schema.json | 3 qapi/instrument.json | 92 ++++++ qemu-options.hx | 17 + rules.mak | 3 scripts/tracetool.py | 11 + scripts/tracetool/__init__.py | 43 +++ scripts/tracetool/backend/instr_dynamic.py | 161 +++++++++++ scripts/tracetool/backend/instr_none.py | 52 ++++ scripts/tracetool/format/c.py | 37 ++- scripts/tracetool/format/h.py | 8 - scripts/tracetool/format/instr_api_h.py | 76 +++++ scripts/tracetool/format/instr_c.py | 41 +++ scripts/tracetool/format/instr_h.py | 48 +++ scripts/tracetool/format/instr_tcg_c.py | 37 +++ scripts/tracetool/format/instr_tcg_h.py | 56 ++++ scripts/tracetool/format/tcg_h.py | 6 scripts/tracetool/format/tcg_helper_c.py | 4 scripts/tracetool/format/tcg_helper_h.py | 2 scripts/tracetool/format/tcg_helper_wrapper_h.py | 2 scripts/tracetool/transform.py | 13 + trace/event-internal.h | 10 + vl.c | 11 + 44 files changed, 2197 insertions(+), 20 deletions(-) create mode 100644 docs/instrumentation.txt create mode 100644 instrument/Makefile.objs create mode 100644 instrument/cmdline.c create mode 100644 instrument/cmdline.h create mode 100644 instrument/control.c create mode 100644 instrument/control.h create mode 100644 instrument/qemu-instr/control.h create mode 100644 instrument/qemu-instr/types.h create mode 100644 instrument/qemu-instr/visibility-internal.h create mode 100644 instrument/qmp.c create mode 100644 qapi/instrument.json create mode 100644 scripts/tracetool/backend/instr_dynamic.py create mode 100644 scripts/tracetool/backend/instr_none.py create mode 100644 scripts/tracetool/format/instr_api_h.py create mode 100644 scripts/tracetool/format/instr_c.py create mode 100644 scripts/tracetool/format/instr_h.py create mode 100644 scripts/tracetool/format/instr_tcg_c.py create mode 100644 scripts/tracetool/format/instr_tcg_h.py To: qemu-devel@nongnu.org Cc: Stefan Hajnoczi <stefa...@redhat.com> Cc: Emilio G. Cota <c...@braap.org>