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, is architecture-agnostic and introduces minimal noise on the guest.
See first commit for a full description, use-cases and an example. Signed-off-by: Lluís Vilanova <vilan...@ac.upc.edu> --- Changes in v4 ============= * Fix typo in stap script example. * Fix compilation instructions in doc/hypertrace.txt. * Rebase on 0737f32daf. Changes in v3 ============= * Rebase on 4a58f35. * Remove debugging printf's. * Fix style issues identified by checkpatch. * Fix control channel mapping in guest linux module. * Add a short event description in "trace-events". * Polish documentation in 1st patch. Changes in v2 ============= * Remove unnecessary casts for g2h() [Eric Blake]. * Use perror() [Eric Blake]. * Avoid expansions in application example [Eric Blake]. * Add copyright in document "hypertrace.txt" [Eric Blake]. * Make the user-mode hypertrace invocations thread-safe [Stefan Hajnoczi]. * Split dynamic hypertrace configuration into a separate "config" channel. 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 | 17 + bsd-user/mmap.c | 15 + bsd-user/syscall.c | 34 +- configure | 40 ++ docs/hypertrace.txt | 237 ++++++++++++++ docs/tracing.txt | 3 hypertrace/Makefile.objs | 21 + hypertrace/common.c | 26 ++ hypertrace/common.h | 23 + hypertrace/guest/linux-module/Kbuild.in | 7 hypertrace/guest/linux-module/Makefile | 23 + .../include/linux/qemu-hypertrace-internal.h | 46 +++ .../linux-module/include/linux/qemu-hypertrace.h | 73 ++++ hypertrace/guest/linux-module/qemu-hypertrace.c | 149 +++++++++ hypertrace/guest/user/Makefile | 30 ++ hypertrace/guest/user/common.c | 296 ++++++++++++++++++ hypertrace/guest/user/qemu-hypertrace.h | 80 +++++ hypertrace/softmmu.c | 235 ++++++++++++++ hypertrace/user.c | 332 ++++++++++++++++++++ hypertrace/user.h | 63 ++++ include/hw/pci/pci.h | 2 include/qom/cpu.h | 4 linux-user/main.c | 19 + linux-user/mmap.c | 17 + linux-user/qemu.h | 3 linux-user/syscall.c | 31 +- trace-events | 11 + trace/Makefile.objs | 2 30 files changed, 1826 insertions(+), 27 deletions(-) create mode 100644 docs/hypertrace.txt create mode 100644 hypertrace/Makefile.objs create mode 100644 hypertrace/common.c create mode 100644 hypertrace/common.h 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> Cc: Eric Blake <ebl...@redhat.com> Cc: Luiz Capitulino <lcapitul...@redhat.com> Cc: Daniel P Berrange <berra...@redhat.com>