From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34006) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bpEbW-0001hv-Cg for qemu-devel@nongnu.org; Wed, 28 Sep 2016 09:08:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bpEbQ-0008Nm-UZ for qemu-devel@nongnu.org; Wed, 28 Sep 2016 09:08:53 -0400 Received: from mx1.redhat.com ([209.132.183.28]:58150) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bpEbQ-0008Nf-LG for qemu-devel@nongnu.org; Wed, 28 Sep 2016 09:08:48 -0400 From: "Daniel P. Berrange" Date: Wed, 28 Sep 2016 14:08:18 +0100 Message-Id: <1475068103-356-16-git-send-email-berrange@redhat.com> In-Reply-To: <1475068103-356-1-git-send-email-berrange@redhat.com> References: <1475068103-356-1-git-send-email-berrange@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH v5 15/20] trace: dynamically allocate event IDs at runtime List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Llu=C3=ADs=20Vilanova?= , Stefan Hajnoczi , "Daniel P. Berrange" 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: Llu=C3=ADs Vilanova Signed-off-by: Daniel P. Berrange --- 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/for= mat/events_c.py index 5e14cf2..3d4a0ce 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)) =20 - next_id =3D 0 - next_vcpu_id =3D 0 for e in events: - id =3D next_id - next_id +=3D 1 if "vcpu" in e.properties: - vcpu_id =3D next_vcpu_id - next_vcpu_id +=3D 1 + vcpu_id =3D 0 else: vcpu_id =3D "TRACE_VCPU_EVENT_NONE" out('TraceEvent %(event)s =3D {', - ' .id =3D %(id)s,', + ' .id =3D 0,', ' .vcpu_id =3D %(vcpu_id)s,', ' .name =3D \"%(name)s\",', ' .sstate =3D %(sstate)s,', ' .dstate =3D &%(dstate)s ', '};', event =3D e.api(e.QEMU_EVENT), - id =3D id, vcpu_id =3D vcpu_id, name =3D e.name, sstate =3D "TRACE_%s_ENABLED" % e.name.upper(), diff --git a/scripts/tracetool/format/events_h.py b/scripts/tracetool/for= mat/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)) =20 - numvcpu =3D 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 9704f4d..2b99685 100644 --- a/trace/control.c +++ b/trace/control.c @@ -35,6 +35,8 @@ typedef struct TraceEventGroup { =20 static TraceEventGroup *event_groups; static size_t nevent_groups; +static uint32_t next_id; +static uint32_t next_vcpu_id; =20 QemuOptsList qemu_trace_opts =3D { .name =3D "trace", @@ -59,6 +61,13 @@ QemuOptsList qemu_trace_opts =3D { =20 void trace_event_register_group(TraceEvent **events) { + size_t i; + for (i =3D 0; events[i] !=3D NULL; i++) { + events[i]->id =3D next_id++; + if (events[i]->vcpu_id !=3D TRACE_VCPU_EVENT_NONE) { + events[i]->vcpu_id =3D next_vcpu_id++; + } + } event_groups =3D g_renew(TraceEventGroup, event_groups, nevent_group= s + 1); event_groups[nevent_groups].events =3D events; nevent_groups++; @@ -313,5 +322,5 @@ void trace_init_vcpu_events(void) =20 uint32_t trace_get_vcpu_event_count(void) { - return TRACE_VCPU_EVENT_COUNT; + return next_vcpu_id; } --=20 2.7.4