On Tue, Mar 26, 2013 at 03:00:21PM +0100, Lluís Vilanova wrote: > NOTE: Applies on top of the "trace: Generic event state description" series > (already in the tracing tree), and is based on revision a4bcea3 from > master. > > TODO: Make sure no TCG code is executing during 'instr_unload' (qemu_cpu_kick? > tb_lock?) > > The whole set of patch series is available at: > https://projects.gso.ac.upc.edu/projects/qemu-dbi > > Adds the "instrument" event property to declare which tracing events in QEMU > must be instrumentable. Still, in case the user only wants to wrap around the > tracing events, the original tracing implementation is accessible through the > appropriate routines. > > The instrumentation can be performed either through a dynamically-loaded > library > or through user-provided code that is compiled into QEMU itself (useful when > instrumenting high-frequency events, as the fast-path of the instrumentation > can > be inlined into QEMU). > > As a side-effect this series adds an API for the instrumentation code to have > some basic interaction with QEMU. > > See the documentation added in the first patch for more information. > > Signed-off-by: Lluís Vilanova <vilan...@ac.upc.edu> > --- > > Lluís Vilanova (22): > instrument: Add documentation > trace: [simple] Do not include "trace/simple.h" in generated tracer > headers > trace: Let the user specify her own trace-events file > tracetool: Use method 'Event.api' to get the name of public routines > trace: Minimize inclusions of "qemu-common.h" to avoid inclusion loops > instrument: [none] Add null instrumentation > linux-user: Use absolute include path > instrument: [static] Call statically linked user-provided routines > instrument: [dynamic] Call dynamically linked user-provided routines > instrument: Add internal control interface > instrument: [hmp] Add control interface > qapi: Add a primitive to include other files from a QAPI schema file > [trivial] Set the input root directory when parsing QAPI files > instrument: [qmp, qapi] Add control interface > Let makefiles add entries to the set of target architecture objects > instrument: Add commandline options to start with an instrumentation > library > instrument: Add client-side API to enumerate events > instrument: Add client-side API to control tracing state of events > instrument: Add client-side API to control event instrumentation > build: Fix installation of target-dependant files > instrument: Install headers for dynamic instrumentation clients > trace: Do not use the word 'new' in event arguments > > > .gitignore | 4 > Makefile | 46 ++- > Makefile.objs | 8 > Makefile.target | 7 > bsd-user/main.c | 24 + > bsd-user/syscall.c | 5 > configure | 96 +++++ > docs/instrumentation.txt | 481 > +++++++++++++++++++++++++++ > docs/tracing.txt | 9 + > hmp-commands.hx | 42 ++ > hw/virtio.c | 1 > include/qapi/qmp/qerror.h | 9 + > include/trace.h | 2 > instrument/Makefile.objs | 86 +++++ > instrument/api-control.c | 14 + > instrument/api-trace.c | 14 + > instrument/cmdline.c | 94 +++++ > instrument/cmdline.h | 41 ++ > instrument/control-internal.h | 33 ++ > instrument/control.c | 139 ++++++++ > instrument/control.h | 133 +++++++ > instrument/hmp.c | 65 ++++ > instrument/hmp.h | 21 + > instrument/qapi-schema.json | 33 ++ > instrument/qemu-instr/control-internal.h | 64 ++++ > instrument/qemu-instr/control.h | 185 ++++++++++ > instrument/qemu-instr/trace-internal.h | 27 ++ > instrument/qemu-instr/trace.h | 91 +++++ > instrument/qemu-instr/visibility-internal.h | 94 +++++ > instrument/qmp.c | 59 +++ > libcacard/Makefile | 2 > linux-user/main.c | 29 ++ > linux-user/syscall.c | 4 > monitor.c | 5 > qapi-schema.json | 2 > qemu-options.hx | 18 + > qmp-commands.hx | 72 ++++ > qmp.c | 4 > rules.mak | 3 > scripts/qapi-commands.py | 10 - > scripts/qapi-types.py | 10 - > scripts/qapi-visit.py | 10 - > scripts/qapi.py | 12 + > scripts/tracetool.py | 12 + > scripts/tracetool/__init__.py | 26 + > scripts/tracetool/backend/dtrace.py | 4 > scripts/tracetool/backend/instr_dynamic.py | 93 +++++ > scripts/tracetool/backend/instr_none.py | 44 ++ > scripts/tracetool/backend/instr_static.py | 82 +++++ > scripts/tracetool/backend/simple.py | 11 - > scripts/tracetool/backend/stderr.py | 3 > scripts/tracetool/backend/ust.py | 6 > scripts/tracetool/format/api_c.py | 24 + > scripts/tracetool/format/api_events_h.py | 56 +++ > scripts/tracetool/format/api_h.py | 39 ++ > scripts/tracetool/format/events_c.py | 40 ++ > scripts/tracetool/format/h.py | 13 + > scripts/tracetool/format/qemu_h.py | 68 ++++ > trace-events | 8 > trace/Makefile.objs | 10 - > trace/control-internal.h | 2 > trace/control.c | 2 > trace/control.h | 7 > trace/default.c | 2 > trace/event-internal.h | 15 + > trace/simple.c | 6 > trace/simple.h | 1 > trace/stderr.c | 4 > vl.c | 36 ++ > 69 files changed, 2670 insertions(+), 52 deletions(-) > create mode 100644 docs/instrumentation.txt > create mode 100644 instrument/Makefile.objs > create mode 100644 instrument/api-control.c > create mode 100644 instrument/api-trace.c > create mode 100644 instrument/cmdline.c > create mode 100644 instrument/cmdline.h > create mode 100644 instrument/control-internal.h > create mode 100644 instrument/control.c > create mode 100644 instrument/control.h > create mode 100644 instrument/hmp.c > create mode 100644 instrument/hmp.h > create mode 100644 instrument/qapi-schema.json > create mode 100644 instrument/qemu-instr/control-internal.h > create mode 100644 instrument/qemu-instr/control.h > create mode 100644 instrument/qemu-instr/trace-internal.h > create mode 100644 instrument/qemu-instr/trace.h > create mode 100644 instrument/qemu-instr/visibility-internal.h > create mode 100644 instrument/qmp.c > create mode 100644 scripts/tracetool/backend/instr_dynamic.py > create mode 100644 scripts/tracetool/backend/instr_none.py > create mode 100644 scripts/tracetool/backend/instr_static.py > create mode 100644 scripts/tracetool/format/api_c.py > create mode 100644 scripts/tracetool/format/api_events_h.py > create mode 100644 scripts/tracetool/format/api_h.py > create mode 100644 scripts/tracetool/format/qemu_h.py
Sorry Lluís, I'm slow with review here again. Will take a look for 1.4 soft-freeze though. Stefan