From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: qemu-devel@nongnu.org, tanishdesai37@gmail.com,
stefanha@redhat.com, mads@ynddal.dk
Subject: Re: [PATCH 03/14] trace/ftrace: move snprintf+write from tracepoints to ftrace.c
Date: Tue, 26 Aug 2025 12:40:33 +0100 [thread overview]
Message-ID: <aK2dMdD1i88PFn1j@redhat.com> (raw)
In-Reply-To: <20250822122655.1353197-4-pbonzini@redhat.com>
On Fri, Aug 22, 2025 at 02:26:44PM +0200, Paolo Bonzini wrote:
> This simplifies the Python code and reduces the size of the tracepoints.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
> tests/tracetool/ftrace.h | 28 ++++++----------------------
> trace/ftrace.h | 1 +
> trace/ftrace.c | 15 +++++++++++++++
> scripts/tracetool/backend/ftrace.py | 12 ++----------
> 4 files changed, 24 insertions(+), 32 deletions(-)
>
> diff --git a/tests/tracetool/ftrace.h b/tests/tracetool/ftrace.h
> index fe22ea0f09f..1dfe4239413 100644
> --- a/tests/tracetool/ftrace.h
> +++ b/tests/tracetool/ftrace.h
> @@ -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 */
snip
> diff --git a/trace/ftrace.c b/trace/ftrace.c
> index 9749543d9b2..6875faedb9c 100644
> --- a/trace/ftrace.c
> +++ b/trace/ftrace.c
> @@ -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);
You're just copying the existing code pattern which is fine for now so
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
More generally though, IMHO, QEMU would be better off bringing in
gnulib's 'ignore_value' macro, but simplified since we don't care
about ancient GCC
#define ignore_value(x) \
(__extension__ ({ __typeof__ (x) __x = (x); (void) __x; }))
so that we don't need to play games with extra variables. eg
ignore_value(write(trace_marker_fd, ftrace_buf, trlen));
With regards,
Daniel
[1] https://github.com/coreutils/gnulib/blob/master/lib/ignore-value.h#L38
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2025-08-26 11:42 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-22 12:26 [RFC PATCH 00/14] tracetool: add Rust support Paolo Bonzini
2025-08-22 12:26 ` [PATCH 01/14] treewide: write "unsigned long int" instead of "long unsigned int" Paolo Bonzini
2025-08-25 6:40 ` Manos Pitsidianakis
2025-08-25 9:18 ` Paolo Bonzini
2025-08-25 7:24 ` Zhao Liu
2025-08-26 11:15 ` Daniel P. Berrangé
2025-08-26 11:33 ` Peter Maydell
2025-08-22 12:26 ` [PATCH 02/14] rust: move dependencies to rust/Cargo.toml Paolo Bonzini
2025-08-25 7:04 ` Manos Pitsidianakis
2025-08-25 7:24 ` Zhao Liu
2025-08-27 19:12 ` Stefan Hajnoczi
2025-08-22 12:26 ` [PATCH 03/14] trace/ftrace: move snprintf+write from tracepoints to ftrace.c Paolo Bonzini
2025-08-25 7:09 ` Manos Pitsidianakis
2025-08-25 9:00 ` Zhao Liu
2025-08-26 11:40 ` Daniel P. Berrangé [this message]
2025-08-26 11:45 ` Peter Maydell
2025-08-26 11:58 ` Daniel P. Berrangé
2025-08-27 19:12 ` Stefan Hajnoczi
2025-08-22 12:26 ` [PATCH 04/14] tracetool: add CHECK_TRACE_EVENT_GET_STATE Paolo Bonzini
2025-08-26 11:44 ` Daniel P. Berrangé
2025-08-27 19:13 ` Stefan Hajnoczi
2025-08-22 12:26 ` [PATCH 05/14] tracetool/backend: remove redundant trace event checks Paolo Bonzini
2025-08-26 11:44 ` Daniel P. Berrangé
2025-08-27 19:15 ` Stefan Hajnoczi
2025-08-22 12:26 ` [PATCH 06/14] tracetool: Add Rust format support Paolo Bonzini
2025-08-25 7:03 ` Manos Pitsidianakis
2025-08-25 9:42 ` Paolo Bonzini
2025-08-25 7:22 ` Manos Pitsidianakis
2025-08-26 11:49 ` Daniel P. Berrangé
2025-08-22 12:26 ` [PATCH 07/14] rust: add trace crate Paolo Bonzini
2025-08-25 7:18 ` Manos Pitsidianakis
2025-08-25 9:54 ` Zhao Liu
2025-08-22 12:26 ` [PATCH 08/14] rust: qdev: add minimal clock bindings Paolo Bonzini
2025-08-25 7:50 ` Zhao Liu
2025-08-25 7:32 ` Manos Pitsidianakis
2025-08-25 9:58 ` Paolo Bonzini
2025-08-22 12:26 ` [PATCH 09/14] rust: pl011: add tracepoints Paolo Bonzini
2025-08-22 12:26 ` [PATCH 10/14] tracetool/simple: add Rust support Paolo Bonzini
2025-08-26 11:53 ` Daniel P. Berrangé
2025-09-19 10:51 ` Paolo Bonzini
2025-08-22 12:26 ` [PATCH 11/14] log: change qemu_loglevel to unsigned Paolo Bonzini
2025-08-25 7:07 ` Manos Pitsidianakis
2025-08-25 7:56 ` Zhao Liu
2025-08-26 13:52 ` Philippe Mathieu-Daudé
2025-08-22 12:26 ` [PATCH 12/14] tracetool/log: add Rust support Paolo Bonzini
2025-08-22 12:26 ` [PATCH 13/14] tracetool/ftrace: " Paolo Bonzini
2025-08-22 12:26 ` [PATCH 14/14] tracetool/syslog: " Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aK2dMdD1i88PFn1j@redhat.com \
--to=berrange@redhat.com \
--cc=mads@ynddal.dk \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
--cc=tanishdesai37@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.