|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PULL 11/25] trace: don't emit TraceEvent structs when 'nop' backend is used
From: Daniel P. Berrangé <berrange@xxxxxxxxxx>
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 <marcandre.lureau@xxxxxxxxxx>
Signed-off-by: Daniel P. Berrangé <berrange@xxxxxxxxxx>
Message-id: 20261102142844.3464712-12-berrange@xxxxxxxxxx
Signed-off-by: Stefan Hajnoczi <stefanha@xxxxxxxxxx>
---
tests/tracetool/nop.h | 6 +--
tests/tracetool/nop.c | 29 ---------------
scripts/tracetool/format/c.py | 69 ++++++++++++++++++-----------------
scripts/tracetool/format/h.py | 14 ++++---
4 files changed, 46 insertions(+), 72 deletions(-)
diff --git a/tests/tracetool/nop.h b/tests/tracetool/nop.h
index 443f5e0cf6e..64b6b005684 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
#define TRACE_TEST_BLAH_ENABLED 1
#define TRACE_TEST_WIBBLE_ENABLED 1
diff --git a/tests/tracetool/nop.c b/tests/tracetool/nop.c
index f83d06252ea..d34cc0ca742 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/scripts/tracetool/format/c.py b/scripts/tracetool/format/c.py
index de1c154a881..5f6669c917c 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 4dc1ad7eb15..6ffb7256e31 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:
--
2.56.0
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |