[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 13/17] trace: dynamically allocate event IDs at r
From: |
Daniel P. Berrange |
Subject: |
[Qemu-devel] [PATCH v4 13/17] trace: dynamically allocate event IDs at runtime |
Date: |
Thu, 22 Sep 2016 09:40:48 +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 us allow code to be generated
from individual trace-events without having to figure out
globally unique numbering at build time.
Signed-off-by: Daniel P. Berrange <address@hidden>
---
scripts/tracetool/format/events_c.py | 10 ++--------
scripts/tracetool/format/events_h.py | 7 -------
trace/control.c | 11 ++++++++++-
3 files changed, 12 insertions(+), 16 deletions(-)
diff --git a/scripts/tracetool/format/events_c.py
b/scripts/tracetool/format/events_c.py
index 766bc09..cdfcfbc 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 5da1d4c..1cb332b 100644
--- a/scripts/tracetool/format/events_h.py
+++ b/scripts/tracetool/format/events_h.py
@@ -32,13 +32,6 @@ def generate(events, backend):
for e in events:
out('extern uint16_t %s;' % e.api(e.QEMU_DSTATE))
- numvcpu = 0
- for e in events:
- if "vcpu" in e.properties:
- numvcpu += 1
-
- 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 9704f4d..2b99685 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++;
@@ -313,5 +322,5 @@ void trace_init_vcpu_events(void)
uint32_t trace_get_vcpu_event_count(void)
{
- return TRACE_VCPU_EVENT_COUNT;
+ return next_vcpu_id;
}
--
2.7.4
- [Qemu-devel] [PATCH v4 10/17] trace: don't abort qemu if ftrace can't be initialized, (continued)
- [Qemu-devel] [PATCH v4 10/17] trace: don't abort qemu if ftrace can't be initialized, Daniel P. Berrange, 2016/09/22
- [Qemu-devel] [PATCH v4 09/17] trace: emit name <-> ID mapping in simpletrace header, Daniel P. Berrange, 2016/09/22
- [Qemu-devel] [PATCH v4 08/17] trace: remove the TraceEventID and TraceEventVCPUID enums, Daniel P. Berrange, 2016/09/22
- [Qemu-devel] [PATCH v4 11/17] trace: provide mechanism for registering trace events, Daniel P. Berrange, 2016/09/22
- [Qemu-devel] [PATCH v4 12/17] trace: dynamically allocate trace_dstate in CPUState, Daniel P. Berrange, 2016/09/22
- [Qemu-devel] [PATCH v4 13/17] trace: dynamically allocate event IDs at runtime,
Daniel P. Berrange <=
- [Qemu-devel] [PATCH v4 14/17] trace: get rid of generated-events.h/generated-events.c, Daniel P. Berrange, 2016/09/22
- [Qemu-devel] [PATCH v4 16/17] trace: push reading of events up a level to tracetool main, Daniel P. Berrange, 2016/09/22
- [Qemu-devel] [PATCH v4 17/17] trace: pass trace-events to tracetool as a positional param, Daniel P. Berrange, 2016/09/22
- [Qemu-devel] [PATCH v4 15/17] trace: rename _read_events to read_events, Daniel P. Berrange, 2016/09/22
- Re: [Qemu-devel] [PATCH v4 00/17] Refactor trace to allow modular build, Lluís Vilanova, 2016/09/22