qemu-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]