qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 1/8] qemu-error: introduce error_report_nolf


From: Ladi Prosek
Subject: Re: [Qemu-devel] [PATCH v2 1/8] qemu-error: introduce error_report_nolf
Date: Mon, 17 Jul 2017 08:54:18 +0200

On Fri, Jul 14, 2017 at 12:41 PM, Daniel P. Berrange
<address@hidden> wrote:
> On Thu, Jul 13, 2017 at 02:32:06PM +0100, Stefan Hajnoczi wrote:
>> On Thu, Jul 13, 2017 at 01:02:30PM +0200, Ladi Prosek wrote:
>> > +/*
>> > + * Print an error message to current monitor if we have one, else to 
>> > stderr.
>> > + * Format arguments like sprintf().  The resulting message should be a
>> > + * single phrase, with no trailing punctuation.  The no-LF version allows
>> > + * additional text to be appended with error_printf() or error_vprintf().
>> > + * Make sure to always close with a newline after all text is printed.
>> > + * Prepends the current location.
>> > + * It's wrong to call this in a QMP monitor.  Use error_setg() there.
>> > + */
>> > +void error_report_nolf(const char *fmt, ...)
>> > +{
>> > +    va_list ap;
>> > +
>> > +    va_start(ap, fmt);
>> > +    error_vreport_nolf(fmt, ap);
>> > +    va_end(ap);
>> >  }
>>
>> Each call to this function prepends the timestamp, so it cannot really
>> be used for a sequence of prints in a single line.
>>
>> It's a little ugly but I expected something along the lines of
>> g_strdup_vprintf() in virtio_error():
>>
>>   char *msg;
>>
>>   va_start(ap, fmt);
>>   msg = g_strdup_vprintf(fmt, ap);
>>   va_end(ap);
>>
>>   error_report("%s: %s", DEVICE(vdev)->id, msg);
>>
>>   g_free(msg);
>
> You could get the same thing by turning virtio_Error into a macro with
> a few games. Rename the current method to virtio_error_impl() and then
> define:
>
>   #define virtio_error(dev, fmt, ...) \
>      virtio_error_impl(dev, "%s: " fmt, DEVICE(dev)->id, __VA_ARGS__)

Neat! I think I'll stick with a function though. This doesn't allocate
but it adds a little bit of code to each call site which has the
potential of slowing down the fast no-error path (I have no data, just
the general keeping-the-code-compact-is-good principle). Holler if you
disagree!

> 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

[Prev in Thread] Current Thread [Next in Thread]