diff options
-rw-r--r-- | scripts/tracetool/format/events_c.py | 10 | ||||
-rw-r--r-- | scripts/tracetool/format/events_h.py | 4 | ||||
-rw-r--r-- | trace/control.c | 11 |
3 files changed, 12 insertions, 13 deletions
diff --git a/scripts/tracetool/format/events_c.py b/scripts/tracetool/format/events_c.py index 88175559de..a976c22c8b 100644 --- a/scripts/tracetool/format/events_c.py +++ b/scripts/tracetool/format/events_c.py @@ -28,25 +28,19 @@ def generate(events, backend): for e in events: out('uint16_t %s;' % e.api(e.QEMU_DSTATE)) - next_id = 0 - next_vcpu_id = 0 for e in events: - id = next_id - next_id += 1 if "vcpu" in e.properties: - vcpu_id = next_vcpu_id - next_vcpu_id += 1 + vcpu_id = 0 else: vcpu_id = "TRACE_VCPU_EVENT_NONE" out('TraceEvent %(event)s = {', - ' .id = %(id)s,', + ' .id = 0,', ' .vcpu_id = %(vcpu_id)s,', ' .name = \"%(name)s\",', ' .sstate = %(sstate)s,', ' .dstate = &%(dstate)s ', '};', event = e.api(e.QEMU_EVENT), - id = id, vcpu_id = vcpu_id, name = e.name, sstate = "TRACE_%s_ENABLED" % e.name.upper(), diff --git a/scripts/tracetool/format/events_h.py b/scripts/tracetool/format/events_h.py index ca6d730519..1cb332befc 100644 --- a/scripts/tracetool/format/events_h.py +++ b/scripts/tracetool/format/events_h.py @@ -32,10 +32,6 @@ def generate(events, backend): for e in events: out('extern uint16_t %s;' % e.api(e.QEMU_DSTATE)) - numvcpu = len([e for e in events if "vcpu" in e.properties]) - - out("#define TRACE_VCPU_EVENT_COUNT %d" % numvcpu) - # static state for e in events: if 'disable' in e.properties: diff --git a/trace/control.c b/trace/control.c index 5f10e2d96e..1a7bee6ddc 100644 --- a/trace/control.c +++ b/trace/control.c @@ -35,6 +35,8 @@ typedef struct TraceEventGroup { static TraceEventGroup *event_groups; static size_t nevent_groups; +static uint32_t next_id; +static uint32_t next_vcpu_id; QemuOptsList qemu_trace_opts = { .name = "trace", @@ -59,6 +61,13 @@ QemuOptsList qemu_trace_opts = { void trace_event_register_group(TraceEvent **events) { + size_t i; + for (i = 0; events[i] != NULL; i++) { + events[i]->id = next_id++; + if (events[i]->vcpu_id != TRACE_VCPU_EVENT_NONE) { + events[i]->vcpu_id = next_vcpu_id++; + } + } event_groups = g_renew(TraceEventGroup, event_groups, nevent_groups + 1); event_groups[nevent_groups].events = events; nevent_groups++; @@ -293,5 +302,5 @@ char *trace_opt_parse(const char *optarg) uint32_t trace_get_vcpu_event_count(void) { - return TRACE_VCPU_EVENT_COUNT; + return next_vcpu_id; } |