The hypertrace channel allows guest code to emit events in QEMU (the host) using its tracing infrastructure (see "docs/trace.txt"). This works in both 'system' and 'user' modes. That is, hypertrace is to tracing, what hypercalls are to system calls.
You can use this to emit an event on both guest and QEMU (host) traces to easily synchronize or correlate them. You could also modify you guest's tracing system to emit all events through the hypertrace channel, providing a unified and fully synchronized trace log. Another use case is timing the performance of guest code when optimizing TCG (QEMU traces have a timestamp). See first commit for a full description. Signed-off-by: Lluís Vilanova <vilan...@ac.upc.edu> --- Lluís Vilanova (6): hypertrace: Add documentation hypertrace: Add tracing event "guest_hypertrace" hypertrace: [*-user] Add QEMU-side proxy to "guest_hypertrace" event hypertrace: [softmmu] Add QEMU-side proxy to "guest_hypertrace" event hypertrace: Add guest-side user-level library hypertrace: Add guest-side Linux module Makefile | 8 - Makefile.objs | 6 bsd-user/main.c | 16 + bsd-user/mmap.c | 2 bsd-user/syscall.c | 4 configure | 42 +++ docs/hypertrace.txt | 141 ++++++++++ docs/tracing.txt | 3 hypertrace/Makefile.objs | 20 + hypertrace/guest/linux-module/Kbuild.in | 5 hypertrace/guest/linux-module/Makefile | 24 ++ .../include/linux/qemu-hypertrace-internal.h | 46 +++ .../linux-module/include/linux/qemu-hypertrace.h | 71 +++++ hypertrace/guest/linux-module/qemu-hypertrace.c | 133 +++++++++ hypertrace/guest/user/Makefile | 28 ++ hypertrace/guest/user/common.c | 221 +++++++++++++++ hypertrace/guest/user/qemu-hypertrace.h | 77 +++++ hypertrace/softmmu.c | 243 +++++++++++++++++ hypertrace/user.c | 292 ++++++++++++++++++++ hypertrace/user.h | 52 ++++ include/hw/pci/pci.h | 2 linux-user/main.c | 19 + linux-user/mmap.c | 2 linux-user/syscall.c | 3 trace/Makefile.objs | 2 25 files changed, 1460 insertions(+), 2 deletions(-) create mode 100644 docs/hypertrace.txt create mode 100644 hypertrace/Makefile.objs create mode 100644 hypertrace/guest/linux-module/Kbuild.in create mode 100644 hypertrace/guest/linux-module/Makefile create mode 100644 hypertrace/guest/linux-module/include/linux/qemu-hypertrace-internal.h create mode 100644 hypertrace/guest/linux-module/include/linux/qemu-hypertrace.h create mode 100644 hypertrace/guest/linux-module/qemu-hypertrace.c create mode 100644 hypertrace/guest/user/Makefile create mode 100644 hypertrace/guest/user/common.c create mode 100644 hypertrace/guest/user/qemu-hypertrace.h create mode 100644 hypertrace/softmmu.c create mode 100644 hypertrace/user.c create mode 100644 hypertrace/user.h To: qemu-devel@nongnu.org Cc: Stefan Hajnoczi <stefa...@redhat.com>