[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v6 15/20] trace: dynamically allocate event IDs at r
From: |
Daniel P. Berrange |
Subject: |
[Qemu-devel] [PATCH v6 15/20] trace: dynamically allocate event IDs at runtime |
Date: |
Tue, 4 Oct 2016 14:35:54 +0100 |
Instead of having the code generator assign event IDs and
event VCPU IDs, assign them when the events are registered
at runtime. This will allow code to be generated from
individual trace-events without having to figure out
globally unique numbering at build time.
Reviewed-by: Stefan Hajnoczi <address@hidden>
Reviewed-by: Lluís Vilanova <address@hidden>
Signed-off-by: Daniel P. Berrange <address@hidden>
---
scripts/tracetool/format/events_c.py | 10 ++--------
scripts/tracetool/format/events_h.py | 4 ----
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 8817555..a976c22 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 ca6d730..1cb332b 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 5f10e2d..1a7bee6 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;
}
--
2.7.4
- [Qemu-devel] [PATCH v6 08/20] trace: break circular dependency in event-internal.h, (continued)
- [Qemu-devel] [PATCH v6 08/20] trace: break circular dependency in event-internal.h, Daniel P. Berrange, 2016/10/04
- [Qemu-devel] [PATCH v6 09/20] trace: give each trace event a named TraceEvent struct, Daniel P. Berrange, 2016/10/04
- [Qemu-devel] [PATCH v6 10/20] trace: remove the TraceEventID and TraceEventVCPUID enums, Daniel P. Berrange, 2016/10/04
- [Qemu-devel] [PATCH v6 12/20] trace: don't abort qemu if ftrace can't be initialized, Daniel P. Berrange, 2016/10/04
- [Qemu-devel] [PATCH v6 13/20] trace: provide mechanism for registering trace events, Daniel P. Berrange, 2016/10/04
- [Qemu-devel] [PATCH v6 11/20] trace: emit name <-> ID mapping in simpletrace header, Daniel P. Berrange, 2016/10/04
- [Qemu-devel] [PATCH v6 14/20] trace: dynamically allocate trace_dstate in CPUState, Daniel P. Berrange, 2016/10/04
- [Qemu-devel] [PATCH v6 15/20] trace: dynamically allocate event IDs at runtime,
Daniel P. Berrange <=
- [Qemu-devel] [PATCH v6 16/20] trace: get rid of generated-events.h/generated-events.c, Daniel P. Berrange, 2016/10/04
- [Qemu-devel] [PATCH v6 17/20] trace: rename _read_events to read_events, Daniel P. Berrange, 2016/10/04
- [Qemu-devel] [PATCH v6 19/20] trace: pass trace-events to tracetool as a positional param, Daniel P. Berrange, 2016/10/04
- [Qemu-devel] [PATCH v6 18/20] trace: push reading of events up a level to tracetool main, Daniel P. Berrange, 2016/10/04
- [Qemu-devel] [PATCH v6 20/20] trace: introduce a formal group name for trace events, Daniel P. Berrange, 2016/10/04
- Re: [Qemu-devel] [PATCH v6 00/20] Refactor trace to allow modular build, Stefan Hajnoczi, 2016/10/05
- Re: [Qemu-devel] [PATCH v6 00/20] Refactor trace to allow modular build, Stefan Hajnoczi, 2016/10/05