On Tue, Aug 26, 2025 at 12:45:42PM +0100, Peter Maydell wrote:
> On Tue, 26 Aug 2025 at 12:42, Daniel P. Berrangé <[email protected]> wrote:
> >
> > 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.
> 
> > > +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é <[email protected]>
> >
> >
> > 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));
> 
> Isn't there a way to write that that explicitly tells
> the compiler "this is unused" (i.e. with the 'unused'
> attribute) rather than relying on a particular construct
> to not trigger a warning?

I think what the code is already doing is the closest to making it
explicit, but that needs the extra variable which is unpleasant.

It is annoyng that 'warn_unused_result' doesn't let you just cast
to (void) to discard a result without warnings :-(

With regards,
Daniel
-- 
|: 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 :|


Reply via email to