[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC][PATCH 00/22] instrument: Let the user wrap/override s
From: |
Lluís Vilanova |
Subject: |
[Qemu-devel] [RFC][PATCH 00/22] instrument: Let the user wrap/override specific event tracing routines |
Date: |
Tue, 26 Mar 2013 15:00:21 +0100 |
User-agent: |
StGit/0.16 |
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
- [Qemu-devel] [RFC][PATCH 00/22] instrument: Let the user wrap/override specific event tracing routines,
Lluís Vilanova <=
- [Qemu-devel] [PATCH 01/22] instrument: Add documentation, Lluís Vilanova, 2013/03/26
- [Qemu-devel] [PATCH 02/22] trace: [simple] Do not include "trace/simple.h" in generated tracer headers, Lluís Vilanova, 2013/03/26
- [Qemu-devel] [PATCH 03/22] trace: Let the user specify her own trace-events file, Lluís Vilanova, 2013/03/26
- [Qemu-devel] [PATCH 04/22] tracetool: Use method 'Event.api' to get the name of public routines, Lluís Vilanova, 2013/03/26
- [Qemu-devel] [PATCH 05/22] trace: Minimize inclusions of "qemu-common.h" to avoid inclusion loops, Lluís Vilanova, 2013/03/26
- [Qemu-devel] [PATCH 06/22] instrument: [none] Add null instrumentation, Lluís Vilanova, 2013/03/26
- [Qemu-devel] [PATCH 07/22] linux-user: Use absolute include path, Lluís Vilanova, 2013/03/26
- [Qemu-devel] [PATCH 08/22] instrument: [static] Call statically linked user-provided routines, Lluís Vilanova, 2013/03/26