Each backend generates the same trace_event_get_state_dynamic_by_id()
call for the TRACE....DSTATE() macro body, so when multiple backends
are enabled, the same check is repeated:
#define TRACE_TEST_WIBBLE_BACKEND_DSTATE() ( \
QEMU_TEST_WIBBLE_ENABLED() || \
trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
tracepoint_enabled(qemu, test_wibble) || \
false)
Expanding the use of the 'backend.check_trace_event_get_state'
attr in the C header generator removes the duplication, in the
same way that the Rust generator already does.
Signed-off-by: Daniel P. Berrangé <[email protected]>
---
scripts/tracetool/backend/__init__.py | 4 ++--
scripts/tracetool/backend/ftrace.py | 4 ----
scripts/tracetool/backend/log.py | 4 ----
scripts/tracetool/backend/simple.py | 5 -----
scripts/tracetool/backend/syslog.py | 4 ----
scripts/tracetool/format/h.py | 8 +++++++-
tests/tracetool/all.h | 22 ++++++++--------------
7 files changed, 17 insertions(+), 34 deletions(-)
diff --git a/scripts/tracetool/backend/__init__.py
b/scripts/tracetool/backend/__init__.py
index 9109a783c72..72f549c77c4 100644
--- a/scripts/tracetool/backend/__init__.py
+++ b/scripts/tracetool/backend/__init__.py
@@ -133,8 +133,8 @@ def generate_begin(self, events, group):
def generate(self, event, group, check_trace_event_get_state=None):
self._run_function("generate_%s", event, group,
check_trace_event_get_state=check_trace_event_get_state)
- def generate_backend_dstate(self, event, group):
- self._run_function("generate_%s_backend_dstate", event, group)
+ def generate_backend_dstate(self, event, group,
check_trace_event_get_state=None):
+ self._run_function("generate_%s_backend_dstate", event, group,
check_trace_event_get_state=check_trace_event_get_state)
def generate_end(self, events, group):
self._run_function("generate_%s_end", events, group)
diff --git a/scripts/tracetool/backend/ftrace.py
b/scripts/tracetool/backend/ftrace.py
index e304ef21999..94cffc45a9d 100644
--- a/scripts/tracetool/backend/ftrace.py
+++ b/scripts/tracetool/backend/ftrace.py
@@ -40,10 +40,6 @@ def generate_h(event, group):
argnames=argnames)
-def generate_h_backend_dstate(event, group):
- out(' trace_event_get_state_dynamic_by_id(%(event_id)s) || \\',
- event_id="TRACE_" + event.name.upper())
-
def generate_rs(event, group):
out(' let format_string = c"%(fmt)s\\n";',
' unsafe {bindings::ftrace_write(format_string.as_ptr() as
*const c_char, %(args)s);}',
diff --git a/scripts/tracetool/backend/log.py b/scripts/tracetool/backend/log.py
index 9e3e5046f5f..577ee158584 100644
--- a/scripts/tracetool/backend/log.py
+++ b/scripts/tracetool/backend/log.py
@@ -41,10 +41,6 @@ def generate_h(event, group):
argnames=argnames)
-def generate_h_backend_dstate(event, group):
- out(' trace_event_get_state_dynamic_by_id(%(event_id)s) || \\',
- event_id="TRACE_" + event.name.upper())
-
def generate_rs(event, group):
out(' let format_string = c"%(fmt)s\\n";',
' if (unsafe { bindings::qemu_loglevel } & bindings::LOG_TRACE)
!= 0 {',
diff --git a/scripts/tracetool/backend/simple.py
b/scripts/tracetool/backend/simple.py
index e22683c7d2a..15f27e26bd5 100644
--- a/scripts/tracetool/backend/simple.py
+++ b/scripts/tracetool/backend/simple.py
@@ -42,11 +42,6 @@ def generate_h(event, group):
args=", ".join(event.args.names()))
-def generate_h_backend_dstate(event, group):
- out(' trace_event_get_state_dynamic_by_id(%(event_id)s) || \\',
- event_id="TRACE_" + event.name.upper())
-
-
def generate_c_begin(events, group):
out('#include "trace/simple.h"',
'')
diff --git a/scripts/tracetool/backend/syslog.py
b/scripts/tracetool/backend/syslog.py
index 746efd35fb9..ba269cb6a33 100644
--- a/scripts/tracetool/backend/syslog.py
+++ b/scripts/tracetool/backend/syslog.py
@@ -43,7 +43,3 @@ def generate_rs(event, group):
' unsafe {::trace::syslog(::trace::LOG_INFO,
format_string.as_ptr() as *const c_char, %(args)s);}',
fmt=expand_format_string(event.fmt, event.name + " "),
args=event.args.rust_call_varargs())
-
-def generate_h_backend_dstate(event, group):
- out(' trace_event_get_state_dynamic_by_id(%(event_id)s) || \\',
- event_id="TRACE_" + event.name.upper())
diff --git a/scripts/tracetool/format/h.py b/scripts/tracetool/format/h.py
index 6ffb7256e31..5ad3a419f82 100644
--- a/scripts/tracetool/format/h.py
+++ b/scripts/tracetool/format/h.py
@@ -55,7 +55,13 @@ def generate(events, backend, group):
api=e.api(e.QEMU_BACKEND_DSTATE))
if "disable" not in e.properties:
- backend.generate_backend_dstate(e, group)
+ backend.generate_backend_dstate(e, group,
check_trace_event_get_state=False)
+
+ if backend.check_trace_event_get_state:
+ event_id = 'TRACE_' + e.name.upper()
+ out(' trace_event_get_state_dynamic_by_id(%(event_id)s) ||
\\',
+ event_id=event_id)
+ backend.generate_backend_dstate(e, group,
check_trace_event_get_state=True)
out(' false)')
diff --git a/tests/tracetool/all.h b/tests/tracetool/all.h
index 41fa4d0e8a2..5627c1d8930 100644
--- a/tests/tracetool/all.h
+++ b/tests/tracetool/all.h
@@ -44,11 +44,8 @@ void _simple_trace_test_wibble(void *context, int value);
#define TRACE_TEST_BLAH_BACKEND_DSTATE() ( \
QEMU_TEST_BLAH_ENABLED() || \
- trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
- trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
- trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
- trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
tracepoint_enabled(qemu, test_blah) || \
+ trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
false)
static inline void trace_test_blah(void *context, const char *filename)
@@ -58,26 +55,23 @@ static inline void trace_test_blah(void *context, const
char *filename)
if (trace_event_get_state(TRACE_TEST_BLAH)) {
#line 4 "trace-events"
ftrace_write("test_blah " "Blah context=%p filename=%s" "\n" ,
context, filename);
-#line 62 "all.h"
+#line 59 "all.h"
if (qemu_loglevel_mask(LOG_TRACE)) {
#line 4 "trace-events"
qemu_log("test_blah " "Blah context=%p filename=%s" "\n", context,
filename);
-#line 66 "all.h"
+#line 63 "all.h"
}
_simple_trace_test_blah(context, filename);
#line 4 "trace-events"
syslog(LOG_INFO, "test_blah " "Blah context=%p filename=%s" , context,
filename);
-#line 71 "all.h"
+#line 68 "all.h"
}
}
#define TRACE_TEST_WIBBLE_BACKEND_DSTATE() ( \
QEMU_TEST_WIBBLE_ENABLED() || \
- trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
- trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
- trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
- trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
tracepoint_enabled(qemu, test_wibble) || \
+ trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
false)
static inline void trace_test_wibble(void *context, int value)
@@ -87,16 +81,16 @@ static inline void trace_test_wibble(void *context, int
value)
if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
#line 5 "trace-events"
ftrace_write("test_wibble " "Wibble context=%p value=%d" "\n" ,
context, value);
-#line 91 "all.h"
+#line 85 "all.h"
if (qemu_loglevel_mask(LOG_TRACE)) {
#line 5 "trace-events"
qemu_log("test_wibble " "Wibble context=%p value=%d" "\n",
context, value);
-#line 95 "all.h"
+#line 89 "all.h"
}
_simple_trace_test_wibble(context, value);
#line 5 "trace-events"
syslog(LOG_INFO, "test_wibble " "Wibble context=%p value=%d" ,
context, value);
-#line 100 "all.h"
+#line 94 "all.h"
}
}
#endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */
--
2.55.0