[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC][PATCH 00/22] instrument: Let the user wrap/overri
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] [RFC][PATCH 00/22] instrument: Let the user wrap/override specific event tracing routines |
Date: |
Thu, 11 Apr 2013 11:07:51 +0200 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
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 <address@hidden>
> ---
>
> 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
- Re: [Qemu-devel] [RFC][PATCH 00/22] instrument: Let the user wrap/override specific event tracing routines,
Stefan Hajnoczi <=