qemu-e2k/trace
Daniel P. Berrange 7f1b588f20 trace: emit name <-> ID mapping in simpletrace header
Currently simpletrace assumes that events are given IDs
starting from 0, based on the order in which they appear
in the trace-events file, with no gaps. When the
trace-events file is split up, this assumption becomes
problematic.

To deal with this, extend the simpletrace format so that
it outputs a table of event name <-> ID mappings. That
will allow QEMU to assign arbitrary IDs to events without
breaking simpletrace parsing.

The v3 simple trace format was

  FILE HEADER
  EVENT TRACE RECORD 0
  EVENT TRACE RECORD 1
  ...
  EVENT TRACE RECORD N

The v4 simple trace format is now

  FILE HEADER
  EVENT MAPPING RECORD 0
  EVENT MAPPING RECORD 1
  ...
  EVENT MAPPING RECORD M
  EVENT TRACE RECORD RECORD 0
  EVENT TRACE RECORD RECORD 1
  ...
  EVENT TRACE RECORD N

Although this shows all the mapping records being emitted
upfront, this is not required by the format. While the main
simpletrace backend will emit all mappings at startup,
the systemtap simpletrace.stp script will emit the mappings
at first use. eg

  FILE HEADER
  ...
  EVENT MAPPING RECORD 0
  EVENT TRACE RECORD RECORD 0
  EVENT TRACE RECORD RECORD 1
  EVENT MAPPING RECORD 1
  EVENT TRACE RECORD RECORD 2
  ...
  EVENT TRACE RECORD N

This is more space efficient given that most trace records
only include a subset of events.

In modifying the systemtap simpletrace code, a 'begin' probe
was added to emit the trace event header, so you no longer
need to add '--no-header' when running simpletrace.py for
systemtap generated trace files.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Message-id: 1475588159-30598-12-git-send-email-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2016-10-12 09:35:54 +02:00
..
control-internal.h trace: remove the TraceEventID and TraceEventVCPUID enums 2016-10-12 09:35:54 +02:00
control-target.c trace: remove the TraceEventID and TraceEventVCPUID enums 2016-10-12 09:35:54 +02:00
control.c trace: remove the TraceEventID and TraceEventVCPUID enums 2016-10-12 09:35:54 +02:00
control.h trace: remove the TraceEventID and TraceEventVCPUID enums 2016-10-12 09:35:54 +02:00
event-internal.h trace: remove the TraceEventID and TraceEventVCPUID enums 2016-10-12 09:35:54 +02:00
ftrace.c
ftrace.h
Makefile.objs rules.mak: quiet-command: Split command name and args to print 2016-10-06 12:11:51 +01:00
mem-internal.h
mem.h
qmp.c trace: convert code to use event iterators 2016-10-12 09:35:54 +02:00
simple.c trace: emit name <-> ID mapping in simpletrace header 2016-10-12 09:35:54 +02:00
simple.h trace: remove the TraceEventID and TraceEventVCPUID enums 2016-10-12 09:35:54 +02:00