> The 'nop' backend is a short-hand for no trace probe usage > at all. The emitted functions become a no-op, and as such > there is no need to emit the TraceEvent structs, nor the > DSTATE variables they reference. > > Reviewed-by: Marc-André Lureau <[email protected]> > Signed-off-by: Daniel P. Berrangé <[email protected]> > Message-ID: <[email protected]> > --- > scripts/tracetool/format/c.py | 75 ++++++++++++++++++----------------- > scripts/tracetool/format/h.py | 16 +++++--- > tests/tracetool/nop.c | 29 -------------- > tests/tracetool/nop.h | 6 +-- > 4 files changed, 50 insertions(+), 76 deletions(-) > > diff --git a/scripts/tracetool/format/c.py b/scripts/tracetool/format/c.py > index de1c154a8819..5f6669c917c7 100644 > --- a/scripts/tracetool/format/c.py > +++ b/scripts/tracetool/format/c.py > @@ -29,41 +29,42 @@ def generate(events, backend, group): > '#include "%s"' % header, > '') > > - for e in events: > - out('uint8_t %s;' % e.api(e.QEMU_DSTATE)) > + if len(list(backend.backend_modules())): > + for e in events: > + out('uint8_t %s;' % e.api(e.QEMU_DSTATE)) > > - for e in events: > - out('TraceEvent %(event)s = {', > - '#ifdef CONFIG_TRACE_SIMPLE', > - ' .id = 0,', > - '#endif', > - ' .name = \"%(name)s\",', > - ' .sstate = %(sstate)s,', > - ' .dstate = &%(dstate)s', > + for e in events: > + out('TraceEvent %(event)s = {', > + '#ifdef CONFIG_TRACE_SIMPLE', > + ' .id = 0,', > + '#endif', > + ' .name = \"%(name)s\",', > + ' .sstate = %(sstate)s,', > + ' .dstate = &%(dstate)s', > + '};', > + event = e.api(e.QEMU_EVENT), > + name = e.name, > + sstate = "TRACE_%s_ENABLED" % e.name.upper(), > + dstate = e.api(e.QEMU_DSTATE)) > + > + out('TraceEvent *%(group)s_trace_events[] = {', > + group = group.lower()) > + > + for e in events: > + out(' &%(event)s,', event = e.api(e.QEMU_EVENT)) > + > + out(' NULL,', > '};', > - event = e.api(e.QEMU_EVENT), > - name = e.name, > - sstate = "TRACE_%s_ENABLED" % e.name.upper(), > - dstate = e.api(e.QEMU_DSTATE)) > + '') > > - out('TraceEvent *%(group)s_trace_events[] = {', > - group = group.lower()) > + out('static void trace_%(group)s_register_events(void)', > + '{', > + ' trace_event_register_group(%(group)s_trace_events);', > + '}', > + 'trace_init(trace_%(group)s_register_events)', > + group = group.lower()) > > - for e in events: > - out(' &%(event)s,', event = e.api(e.QEMU_EVENT)) > - > - out(' NULL,', > - '};', > - '') > - > - out('static void trace_%(group)s_register_events(void)', > - '{', > - ' trace_event_register_group(%(group)s_trace_events);', > - '}', > - 'trace_init(trace_%(group)s_register_events)', > - group = group.lower()) > - > - backend.generate_begin(active_events, group) > - for event in active_events: > - backend.generate(event, group) > - backend.generate_end(active_events, group) > + backend.generate_begin(active_events, group) > + for event in active_events: > + backend.generate(event, group) > + backend.generate_end(active_events, group) > diff --git a/scripts/tracetool/format/h.py b/scripts/tracetool/format/h.py > index 4dc1ad7eb158..6ffb7256e314 100644 > --- a/scripts/tracetool/format/h.py > +++ b/scripts/tracetool/format/h.py > @@ -27,12 +27,16 @@ def generate(events, backend, group): > '#include "%s"' % header, > '') > > - for e in events: > - out('extern TraceEvent %(event)s;', > - event = e.api(e.QEMU_EVENT)) > + if len(list(backend.backend_modules())): > + for e in events: > + out('extern TraceEvent %(event)s;', > + event = e.api(e.QEMU_EVENT)) > > - for e in events: > - out('extern uint8_t %s;' % e.api(e.QEMU_DSTATE)) > + for e in events: > + out('extern uint8_t %s;' % e.api(e.QEMU_DSTATE)) > + else: > + for e in events: > + out('#define %s 0' % e.api(e.QEMU_DSTATE)) > > # static state > for e in events: > diff --git a/tests/tracetool/nop.c b/tests/tracetool/nop.c > index f83d06252eaa..d34cc0ca7426 100644 > --- a/tests/tracetool/nop.c > +++ b/tests/tracetool/nop.c > @@ -5,32 +5,3 @@ > #include "qemu/module.h" > #include "trace-testsuite.h" > > -uint8_t _TRACE_TEST_BLAH_DSTATE; > -uint8_t _TRACE_TEST_WIBBLE_DSTATE; > -TraceEvent _TRACE_TEST_BLAH_EVENT = { > -#ifdef CONFIG_TRACE_SIMPLE > - .id = 0, > -#endif > - .name = "test_blah", > - .sstate = TRACE_TEST_BLAH_ENABLED, > - .dstate = &_TRACE_TEST_BLAH_DSTATE > -}; > -TraceEvent _TRACE_TEST_WIBBLE_EVENT = { > -#ifdef CONFIG_TRACE_SIMPLE > - .id = 0, > -#endif > - .name = "test_wibble", > - .sstate = TRACE_TEST_WIBBLE_ENABLED, > - .dstate = &_TRACE_TEST_WIBBLE_DSTATE > -}; > -TraceEvent *testsuite_trace_events[] = { > - &_TRACE_TEST_BLAH_EVENT, > - &_TRACE_TEST_WIBBLE_EVENT, > - NULL, > -}; > - > -static void trace_testsuite_register_events(void) > -{ > - trace_event_register_group(testsuite_trace_events); > -} > -trace_init(trace_testsuite_register_events) > diff --git a/tests/tracetool/nop.h b/tests/tracetool/nop.h > index 443f5e0cf6ee..64b6b0056841 100644 > --- a/tests/tracetool/nop.h > +++ b/tests/tracetool/nop.h > @@ -6,10 +6,8 @@ > > #include "trace/control.h" > > -extern TraceEvent _TRACE_TEST_BLAH_EVENT; > -extern TraceEvent _TRACE_TEST_WIBBLE_EVENT; > -extern uint8_t _TRACE_TEST_BLAH_DSTATE; > -extern uint8_t _TRACE_TEST_WIBBLE_DSTATE; > +#define _TRACE_TEST_BLAH_DSTATE 0 > +#define _TRACE_TEST_WIBBLE_DSTATE 0
The rust generator should be adjusted too -- Marc-André Lureau <[email protected]>
