tracetool: drop the probe "__nocheck__" wrapping

Every generated inline probe function is wrapped with a
trivial caller that has a hard-coded condition test:

  static inline void _nocheck__trace_test_wibble(void * context, int value)
  {
      tracepoint(qemu, test_wibble, context, value);
  }

  static inline void trace_test_wibble(void * context, int value)
  {
    if (true) {
        _nocheck__trace_test_wibble(context, value);
    }
  }

This was introduced for TCG probes back in

  864a2178: trace: [tcg] Do not generate TCG code to trace dynamically-disabled events

but is obsolete since

  126d4123 tracing: excise the tcg related from tracetool

This commit removes the wrapping such that we have

  static inline void trace_test_wibble(void * context, int value)
  {
      tracepoint(qemu, test_wibble, context, value);
  }

The default build of qemu-system-x86_64 on Fedora with the
'log' backend, has its size reduced by 1 MB

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20250916081638.764020-7-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
Daniel P. Berrangé 2025-09-16 09:16:36 +01:00 committed by Stefan Hajnoczi
parent da949d495d
commit c47db9b1db
8 changed files with 16 additions and 115 deletions

View file

@ -338,7 +338,6 @@ class Event(object):
return self._FMT.findall(self.fmt)
QEMU_TRACE = "trace_%(name)s"
QEMU_TRACE_NOCHECK = "_nocheck__" + QEMU_TRACE
QEMU_TRACE_TCG = QEMU_TRACE + "_tcg"
QEMU_DSTATE = "_TRACE_%(NAME)s_DSTATE"
QEMU_BACKEND_DSTATE = "TRACE_%(NAME)s_BACKEND_DSTATE"

View file

@ -64,7 +64,7 @@ def generate(events, backend, group):
out('',
'static inline void %(api)s(%(args)s)',
'{',
api=e.api(e.QEMU_TRACE_NOCHECK),
api=e.api(),
args=e.args)
if "disable" not in e.properties:
@ -72,20 +72,6 @@ def generate(events, backend, group):
out('}')
cond = "true"
out('',
'static inline void %(api)s(%(args)s)',
'{',
' if (%(cond)s) {',
' %(api_nocheck)s(%(names)s);',
' }',
'}',
api=e.api(),
api_nocheck=e.api(e.QEMU_TRACE_NOCHECK),
args=e.args,
names=", ".join(e.args.names()),
cond=cond)
backend.generate_end(events, group)

View file

@ -29,31 +29,17 @@ extern uint16_t _TRACE_TEST_WIBBLE_DSTATE;
QEMU_TEST_BLAH_ENABLED() || \
false)
static inline void _nocheck__trace_test_blah(void *context, const char *filename)
{
QEMU_TEST_BLAH(context, filename);
}
static inline void trace_test_blah(void *context, const char *filename)
{
if (true) {
_nocheck__trace_test_blah(context, filename);
}
QEMU_TEST_BLAH(context, filename);
}
#define TRACE_TEST_WIBBLE_BACKEND_DSTATE() ( \
QEMU_TEST_WIBBLE_ENABLED() || \
false)
static inline void _nocheck__trace_test_wibble(void *context, int value)
static inline void trace_test_wibble(void *context, int value)
{
QEMU_TEST_WIBBLE(context, value);
}
static inline void trace_test_wibble(void *context, int value)
{
if (true) {
_nocheck__trace_test_wibble(context, value);
}
}
#endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */

View file

@ -19,7 +19,7 @@ extern uint16_t _TRACE_TEST_WIBBLE_DSTATE;
trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
false)
static inline void _nocheck__trace_test_blah(void *context, const char *filename)
static inline void trace_test_blah(void *context, const char *filename)
{
{
char ftrace_buf[MAX_TRACE_STRLEN];
@ -36,18 +36,11 @@ static inline void _nocheck__trace_test_blah(void *context, const char *filename
}
}
static inline void trace_test_blah(void *context, const char *filename)
{
if (true) {
_nocheck__trace_test_blah(context, filename);
}
}
#define TRACE_TEST_WIBBLE_BACKEND_DSTATE() ( \
trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
false)
static inline void _nocheck__trace_test_wibble(void *context, int value)
static inline void trace_test_wibble(void *context, int value)
{
{
char ftrace_buf[MAX_TRACE_STRLEN];
@ -57,17 +50,10 @@ static inline void _nocheck__trace_test_wibble(void *context, int value)
#line 5 "trace-events"
trlen = snprintf(ftrace_buf, MAX_TRACE_STRLEN,
"test_wibble " "Wibble context=%p value=%d" "\n" , context, value);
#line 61 "ftrace.h"
#line 54 "ftrace.h"
trlen = MIN(trlen, MAX_TRACE_STRLEN - 1);
unused = write(trace_marker_fd, ftrace_buf, trlen);
}
}
}
static inline void trace_test_wibble(void *context, int value)
{
if (true) {
_nocheck__trace_test_wibble(context, value);
}
}
#endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */

View file

@ -19,7 +19,7 @@ extern uint16_t _TRACE_TEST_WIBBLE_DSTATE;
trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
false)
static inline void _nocheck__trace_test_blah(void *context, const char *filename)
static inline void trace_test_blah(void *context, const char *filename)
{
if (trace_event_get_state(TRACE_TEST_BLAH) && qemu_loglevel_mask(LOG_TRACE)) {
#line 4 "trace-events"
@ -28,30 +28,16 @@ static inline void _nocheck__trace_test_blah(void *context, const char *filename
}
}
static inline void trace_test_blah(void *context, const char *filename)
{
if (true) {
_nocheck__trace_test_blah(context, filename);
}
}
#define TRACE_TEST_WIBBLE_BACKEND_DSTATE() ( \
trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
false)
static inline void _nocheck__trace_test_wibble(void *context, int value)
static inline void trace_test_wibble(void *context, int value)
{
if (trace_event_get_state(TRACE_TEST_WIBBLE) && qemu_loglevel_mask(LOG_TRACE)) {
#line 5 "trace-events"
qemu_log("test_wibble " "Wibble context=%p value=%d" "\n", context, value);
#line 48 "log.h"
}
}
static inline void trace_test_wibble(void *context, int value)
{
if (true) {
_nocheck__trace_test_wibble(context, value);
#line 41 "log.h"
}
}
#endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */

View file

@ -20,35 +20,21 @@ void _simple_trace_test_wibble(void *context, int value);
trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
false)
static inline void _nocheck__trace_test_blah(void *context, const char *filename)
static inline void trace_test_blah(void *context, const char *filename)
{
if (trace_event_get_state(TRACE_TEST_BLAH)) {
_simple_trace_test_blah(context, filename);
}
}
static inline void trace_test_blah(void *context, const char *filename)
{
if (true) {
_nocheck__trace_test_blah(context, filename);
}
}
#define TRACE_TEST_WIBBLE_BACKEND_DSTATE() ( \
trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
false)
static inline void _nocheck__trace_test_wibble(void *context, int value)
static inline void trace_test_wibble(void *context, int value)
{
if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
_simple_trace_test_wibble(context, value);
}
}
static inline void trace_test_wibble(void *context, int value)
{
if (true) {
_nocheck__trace_test_wibble(context, value);
}
}
#endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */

View file

@ -19,7 +19,7 @@ extern uint16_t _TRACE_TEST_WIBBLE_DSTATE;
trace_event_get_state_dynamic_by_id(TRACE_TEST_BLAH) || \
false)
static inline void _nocheck__trace_test_blah(void *context, const char *filename)
static inline void trace_test_blah(void *context, const char *filename)
{
if (trace_event_get_state(TRACE_TEST_BLAH)) {
#line 4 "trace-events"
@ -28,30 +28,16 @@ static inline void _nocheck__trace_test_blah(void *context, const char *filename
}
}
static inline void trace_test_blah(void *context, const char *filename)
{
if (true) {
_nocheck__trace_test_blah(context, filename);
}
}
#define TRACE_TEST_WIBBLE_BACKEND_DSTATE() ( \
trace_event_get_state_dynamic_by_id(TRACE_TEST_WIBBLE) || \
false)
static inline void _nocheck__trace_test_wibble(void *context, int value)
static inline void trace_test_wibble(void *context, int value)
{
if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
#line 5 "trace-events"
syslog(LOG_INFO, "test_wibble " "Wibble context=%p value=%d" , context, value);
#line 48 "syslog.h"
}
}
static inline void trace_test_wibble(void *context, int value)
{
if (true) {
_nocheck__trace_test_wibble(context, value);
#line 41 "syslog.h"
}
}
#endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */

View file

@ -25,31 +25,17 @@ extern uint16_t _TRACE_TEST_WIBBLE_DSTATE;
tracepoint_enabled(qemu, test_blah) || \
false)
static inline void _nocheck__trace_test_blah(void *context, const char *filename)
{
tracepoint(qemu, test_blah, context, filename);
}
static inline void trace_test_blah(void *context, const char *filename)
{
if (true) {
_nocheck__trace_test_blah(context, filename);
}
tracepoint(qemu, test_blah, context, filename);
}
#define TRACE_TEST_WIBBLE_BACKEND_DSTATE() ( \
tracepoint_enabled(qemu, test_wibble) || \
false)
static inline void _nocheck__trace_test_wibble(void *context, int value)
static inline void trace_test_wibble(void *context, int value)
{
tracepoint(qemu, test_wibble, context, value);
}
static inline void trace_test_wibble(void *context, int value)
{
if (true) {
_nocheck__trace_test_wibble(context, value);
}
}
#endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */