[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v4 13/17] trace: dynamically allocate event IDs
From: |
Lluís Vilanova |
Subject: |
Re: [Qemu-devel] [PATCH v4 13/17] trace: dynamically allocate event IDs at runtime |
Date: |
Thu, 22 Sep 2016 14:50:11 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
Daniel P Berrange writes:
> 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
allow us allow -> allow
> from individual trace-events without having to figure out
> globally unique numbering at build time.
> Signed-off-by: Daniel P. Berrange <address@hidden>
Reviewed-by: Lluís Vilanova <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 09/17] trace: emit name <-> ID mapping in simpletrace header, (continued)
- [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, 2016/09/22
- Re: [Qemu-devel] [PATCH v4 13/17] trace: dynamically allocate event IDs at runtime,
Lluís Vilanova <=
- [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