trace/ftrace: move snprintf+write from tracepoints to ftrace.c

This simplifies the Python code and reduces the size of the tracepoints.

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Message-ID: <20250929154938.594389-6-pbonzini@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
Paolo Bonzini
2025-09-29 17:49:27 +02:00
committed by Stefan Hajnoczi
parent 6f94ad27f0
commit 02d4a4a674
4 changed files with 24 additions and 32 deletions

View File

@@ -28,18 +28,10 @@ def generate_h(event, group):
if len(event.args) > 0:
argnames = ", " + argnames
out(' {',
' char ftrace_buf[MAX_TRACE_STRLEN];',
' int unused __attribute__ ((unused));',
' int trlen;',
' if (trace_event_get_state(%(event_id)s)) {',
out(' if (trace_event_get_state(%(event_id)s)) {',
'#line %(event_lineno)d "%(event_filename)s"',
' trlen = snprintf(ftrace_buf, MAX_TRACE_STRLEN,',
' "%(name)s " %(fmt)s "\\n" %(argnames)s);',
' ftrace_write("%(name)s " %(fmt)s "\\n" %(argnames)s);',
'#line %(out_next_lineno)d "%(out_filename)s"',
' trlen = MIN(trlen, MAX_TRACE_STRLEN - 1);',
' unused = write(trace_marker_fd, ftrace_buf, trlen);',
' }',
' }',
name=event.name,
args=event.args,

View File

@@ -21,18 +21,10 @@ extern uint16_t _TRACE_TEST_WIBBLE_DSTATE;
static inline void trace_test_blah(void *context, const char *filename)
{
{
char ftrace_buf[MAX_TRACE_STRLEN];
int unused __attribute__ ((unused));
int trlen;
if (trace_event_get_state(TRACE_TEST_BLAH)) {
if (trace_event_get_state(TRACE_TEST_BLAH)) {
#line 4 "trace-events"
trlen = snprintf(ftrace_buf, MAX_TRACE_STRLEN,
"test_blah " "Blah context=%p filename=%s" "\n" , context, filename);
#line 33 "ftrace.h"
trlen = MIN(trlen, MAX_TRACE_STRLEN - 1);
unused = write(trace_marker_fd, ftrace_buf, trlen);
}
ftrace_write("test_blah " "Blah context=%p filename=%s" "\n" , context, filename);
#line 28 "ftrace.h"
}
}
@@ -42,18 +34,10 @@ static inline void trace_test_blah(void *context, const char *filename)
static inline void trace_test_wibble(void *context, int value)
{
{
char ftrace_buf[MAX_TRACE_STRLEN];
int unused __attribute__ ((unused));
int trlen;
if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
if (trace_event_get_state(TRACE_TEST_WIBBLE)) {
#line 5 "trace-events"
trlen = snprintf(ftrace_buf, MAX_TRACE_STRLEN,
"test_wibble " "Wibble context=%p value=%d" "\n" , context, value);
#line 54 "ftrace.h"
trlen = MIN(trlen, MAX_TRACE_STRLEN - 1);
unused = write(trace_marker_fd, ftrace_buf, trlen);
}
ftrace_write("test_wibble " "Wibble context=%p value=%d" "\n" , context, value);
#line 41 "ftrace.h"
}
}
#endif /* TRACE_TESTSUITE_GENERATED_TRACERS_H */

View File

@@ -38,6 +38,21 @@ static int find_mount(char *mount_point, const char *fstype)
return ret;
}
void ftrace_write(const char *fmt, ...)
{
char ftrace_buf[MAX_TRACE_STRLEN];
int unused __attribute__ ((unused));
int trlen;
va_list ap;
va_start(ap, fmt);
trlen = vsnprintf(ftrace_buf, MAX_TRACE_STRLEN, fmt, ap);
va_end(ap);
trlen = MIN(trlen, MAX_TRACE_STRLEN - 1);
unused = write(trace_marker_fd, ftrace_buf, trlen);
}
bool ftrace_init(void)
{
char mount_point[PATH_MAX];

View File

@@ -8,5 +8,6 @@
extern int trace_marker_fd;
bool ftrace_init(void);
G_GNUC_PRINTF(1, 2) void ftrace_write(const char *fmt, ...);
#endif /* TRACE_FTRACE_H */