Skip to content

Commit

Permalink
trace: dynamically allocate event IDs at runtime
Browse files Browse the repository at this point in the history
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 <[email protected]>
Reviewed-by: Lluís Vilanova <[email protected]>
Signed-off-by: Daniel P. Berrange <[email protected]>
Message-id: [email protected]
Signed-off-by: Stefan Hajnoczi <[email protected]>
  • Loading branch information
berrange authored and stefanhaRH committed Oct 12, 2016
1 parent b7d4895 commit ca3fa0e
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 13 deletions.
10 changes: 2 additions & 8 deletions scripts/tracetool/format/events_c.py
Original file line number Diff line number Diff line change
Expand Up @@ -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(),
Expand Down
4 changes: 0 additions & 4 deletions scripts/tracetool/format/events_h.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
11 changes: 10 additions & 1 deletion trace/control.c
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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++;
Expand Down Expand Up @@ -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;
}

0 comments on commit ca3fa0e

Please sign in to comment.