trace: remove the TraceEventID and TraceEventVCPUID enums

The TraceEventID and TraceEventVCPUID enums constants are
no longer actually used for anything critical.

The TRACE_EVENT_COUNT limit is used to determine the size
of the TraceEvents array, and can be removed if we just
NULL terminate the array instead.

The TRACE_VCPU_EVENT_COUNT limit is used as a magic value
for marking non-vCPU events, and also for declaring the
size of the trace dstate mask in the CPUState struct.
The former usage can be replaced by a dedicated constant
TRACE_EVENT_VCPU_NONE, defined as (uint32_t)-1. For the
latter usage, we can simply define a constant for the
number of VCPUs, avoiding the need for the full enum.

The only other usages of the enum values can be replaced
by accesing the id/vcpu_id fields via the named TraceEvent
structs.

Reviewed-by: Lluís Vilanova <vilanova@ac.upc.edu>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Message-id: 1475588159-30598-11-git-send-email-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
Daniel P. Berrange 2016-10-04 14:35:49 +01:00 committed by Stefan Hajnoczi
parent 79218be42b
commit ef4c9fc854
11 changed files with 48 additions and 65 deletions

View file

@ -28,11 +28,16 @@ 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 = "TRACE_VCPU_" + e.name.upper()
vcpu_id = next_vcpu_id
next_vcpu_id += 1
else:
vcpu_id = "TRACE_VCPU_EVENT_COUNT"
vcpu_id = "TRACE_VCPU_EVENT_NONE"
out('TraceEvent %(event)s = {',
' .id = %(id)s,',
' .vcpu_id = %(vcpu_id)s,',
@ -41,16 +46,17 @@ def generate(events, backend):
' .dstate = &%(dstate)s ',
'};',
event = e.api(e.QEMU_EVENT),
id = "TRACE_" + e.name.upper(),
id = id,
vcpu_id = vcpu_id,
name = e.name,
sstate = "TRACE_%s_ENABLED" % e.name.upper(),
dstate = e.api(e.QEMU_DSTATE))
out('TraceEvent *trace_events[TRACE_EVENT_COUNT] = {')
out('TraceEvent *trace_events[] = {')
for e in events:
out(' &%(event)s,', event = e.api(e.QEMU_EVENT))
out('};',
out(' NULL,',
'};',
'')

View file

@ -29,27 +29,12 @@ def generate(events, backend):
out('extern TraceEvent %(event)s;',
event = e.api(e.QEMU_EVENT))
# event identifiers
out('typedef enum {')
for e in events:
out(' TRACE_%s,' % e.name.upper())
out(' TRACE_EVENT_COUNT',
'} TraceEventID;')
for e in events:
out('extern uint16_t %s;' % e.api(e.QEMU_DSTATE))
# per-vCPU event identifiers
out('typedef enum {')
numvcpu = len([e for e in events if "vcpu" in e.properties])
for e in events:
if "vcpu" in e.properties:
out(' TRACE_VCPU_%s,' % e.name.upper())
out(' TRACE_VCPU_EVENT_COUNT',
'} TraceEventVCPUID;')
out("#define TRACE_VCPU_EVENT_COUNT %d" % numvcpu)
# static state
for e in events:

View file

@ -32,8 +32,7 @@ def generate(events, backend):
if "vcpu" in e.properties:
trace_cpu = next(iter(e.args))[1]
cond = "trace_event_get_vcpu_state(%(cpu)s,"\
" TRACE_%(id)s,"\
" TRACE_VCPU_%(id)s)"\
" TRACE_%(id)s)"\
% dict(
cpu=trace_cpu,
id=e.name.upper())