From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51353) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bnRBv-0003Zx-Ek for qemu-devel@nongnu.org; Fri, 23 Sep 2016 10:11:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bnRBr-0006P2-BN for qemu-devel@nongnu.org; Fri, 23 Sep 2016 10:11:03 -0400 Received: from mx1.redhat.com ([209.132.183.28]:46838) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bnRBr-0006OQ-2A for qemu-devel@nongnu.org; Fri, 23 Sep 2016 10:10:59 -0400 Date: Fri, 23 Sep 2016 15:10:55 +0100 From: Stefan Hajnoczi Message-ID: <20160923141055.GU8221@stefanha-x1.localdomain> References: <1474533652-31170-1-git-send-email-berrange@redhat.com> <1474533652-31170-8-git-send-email-berrange@redhat.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="/asd063ZXkk5ILJU" Content-Disposition: inline In-Reply-To: <1474533652-31170-8-git-send-email-berrange@redhat.com> Subject: Re: [Qemu-devel] [PATCH v4 07/17] trace: give each trace event a named TraceEvent struct List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Daniel P. Berrange" Cc: qemu-devel@nongnu.org, =?iso-8859-1?Q?Llu=EDs?= Vilanova , Eric Blake --/asd063ZXkk5ILJU Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, Sep 22, 2016 at 09:40:42AM +0100, Daniel P. Berrange wrote: > Currently we only expose a TraceEvent array, which must > be indexed via the TraceEventID enum constants. This > changes the generator to expose a named TraceEvent > instance for each event, with an _EV suffix. _EV suffix? Do you mean _EVENT? >=20 > Signed-off-by: Daniel P. Berrange > --- > scripts/tracetool/__init__.py | 1 + > scripts/tracetool/format/events_c.py | 19 +++++++++++++------ > scripts/tracetool/format/events_h.py | 11 ++++++++--- > trace/control-internal.h | 2 +- > trace/control.c | 2 +- > 5 files changed, 24 insertions(+), 11 deletions(-) >=20 > diff --git a/scripts/tracetool/__init__.py b/scripts/tracetool/__init__.py > index 2a8d7d5..2d0290d 100644 > --- a/scripts/tracetool/__init__.py > +++ b/scripts/tracetool/__init__.py > @@ -266,6 +266,7 @@ class Event(object): > QEMU_TRACE =3D "trace_%(name)s" > QEMU_TRACE_TCG =3D QEMU_TRACE + "_tcg" > QEMU_DSTATE =3D "___TRACE_%(NAME)s_DSTATE" > + QEMU_EVENT =3D "TRACE_%(NAME)s_EVENT" > =20 > def api(self, fmt=3DNone): > if fmt is None: > diff --git a/scripts/tracetool/format/events_c.py b/scripts/tracetool/for= mat/events_c.py > index ef873fa..0dd4a33 100644 > --- a/scripts/tracetool/format/events_c.py > +++ b/scripts/tracetool/format/events_c.py > @@ -28,22 +28,29 @@ def generate(events, backend): > for e in events: > out('uint16_t %s;' % e.api(e.QEMU_DSTATE)) > =20 > - out('TraceEvent trace_events[TRACE_EVENT_COUNT] =3D {') > - > for e in events: > if "vcpu" in e.properties: > vcpu_id =3D "TRACE_VCPU_" + e.name.upper() > else: > vcpu_id =3D "TRACE_VCPU_EVENT_COUNT" > - out(' { .id =3D %(id)s, .vcpu_id =3D %(vcpu_id)s,' > - ' .name =3D \"%(name)s\",' > - ' .sstate =3D %(sstate)s,', > - ' .dstate =3D &%(dstate)s, }, ', > + out('TraceEvent %(event)s =3D {', > + ' .id =3D %(id)s,', > + ' .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 "TRACE_" + e.name.upper(), > vcpu_id =3D vcpu_id, > name =3D e.name, > sstate =3D "TRACE_%s_ENABLED" % e.name.upper(), > dstate =3D e.api(e.QEMU_DSTATE)) > =20 > + out('TraceEvent *trace_events[TRACE_EVENT_COUNT] =3D {') > + > + for e in events: > + out('&%(event)s,', event =3D e.api(e.QEMU_EVENT)) > + > out('};', > '') > diff --git a/scripts/tracetool/format/events_h.py b/scripts/tracetool/for= mat/events_h.py > index 03417de..80a66c5 100644 > --- a/scripts/tracetool/format/events_h.py > +++ b/scripts/tracetool/format/events_h.py > @@ -21,7 +21,13 @@ def generate(events, backend): > '', > '#ifndef TRACE__GENERATED_EVENTS_H', > '#define TRACE__GENERATED_EVENTS_H', > - '') > + '', > + '#include "trace/event-internal.h"', > + ) > + > + for e in events: > + out('extern TraceEvent %(event)s;', > + event =3D e.api(e.QEMU_EVENT)) > =20 > # event identifiers > out('typedef enum {') > @@ -58,6 +64,5 @@ def generate(events, backend): > enabled=3Denabled) > out('#define TRACE_%s_ENABLED %d' % (e.name.upper(), enabled)) > =20 > - out('#include "trace/event-internal.h"', > - '', > + out('', > '#endif /* TRACE__GENERATED_EVENTS_H */') > diff --git a/trace/control-internal.h b/trace/control-internal.h > index 828c1fc..52b6b72 100644 > --- a/trace/control-internal.h > +++ b/trace/control-internal.h > @@ -15,7 +15,7 @@ > #include "qom/cpu.h" > =20 > =20 > -extern TraceEvent trace_events[]; > +extern TraceEvent *trace_events[]; > extern int trace_events_enabled_count; > =20 > =20 > diff --git a/trace/control.c b/trace/control.c > index a103560..9107919 100644 > --- a/trace/control.c > +++ b/trace/control.c > @@ -106,7 +106,7 @@ void trace_event_iter_init(TraceEventIter *iter, cons= t char *pattern) > TraceEvent *trace_event_iter_next(TraceEventIter *iter) > { > while (iter->event < TRACE_EVENT_COUNT) { > - TraceEvent *ev =3D &(trace_events[iter->event]); > + TraceEvent *ev =3D trace_events[iter->event]; > iter->event++; > if (!iter->pattern || > pattern_glob(iter->pattern, > --=20 > 2.7.4 >=20 --/asd063ZXkk5ILJU Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEcBAEBAgAGBQJX5TfuAAoJEJykq7OBq3PIW0MIAI1HAhhLeFbQFusmJmBMbPYh YJymOLnxftXgW5yJKcgLN5jlmQBQ1AZOg9YEPALTUcs7kkHN+iFaiXegZDvgxXN5 Q+7lP60zpwDsUp0iyjP7hXWq+8LdgGDixmSyw6xbb7h/uSPNXcA6BDRnieRX9fQO IbV7LArvLt87Z0oekp46ev8UbxyzQJvFjznHIIcG6XU20F5Bvip+miC+uPM180Bg xlyLWfNTZbnGnxjOZOzm1+h2VwNDd4dtYfNdhgJBXR5Hju1birvOEfxZIDCvsrHi uoAxMkOO2fUBzUco26dFJo4taBuv5DTLp2SOsQO9ksCtsTQMv2bn4sZ4AOlklUM= =SeXJ -----END PGP SIGNATURE----- --/asd063ZXkk5ILJU--