[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 43/43] qobject: move dump_qobject() from bloc
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH v3 43/43] qobject: move dump_qobject() from block/ to qobject/ |
Date: |
Fri, 09 Jun 2017 14:40:57 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) |
Marc-André Lureau <address@hidden> writes:
> Hi
>
> ----- Original Message -----
>> >
>> > The title claims "move dump_qobject() from block/ to qobject/", but
>> > that's not what the patch does. It *replaces* dump_qobject() by
>> > qobject_to_string(). The former dumps to a callback, the latter to a
>> > dynamic string buffer.
>> >
>> > Providing dump functionality in one way doesn't preclude the other way:
>> > given callback, one could define a callback that builds up a string
>> > buffer, and given buffer, one could (and you actually do) pass the
>> > buffer to a callback. That's less efficient, though.
>> >
>> > Trading efficiency for ease-of-use should be okay here, but I'm cc'ing
>> > Max and Kevin to double-check.
>>
>> I believe convenience is more important than efficiency here. It's easy to
>> call qobject_to_string(foo) from gdb for example, with a callback, it's less
>> easy.
>>
>> (fprintf or monitor_fprintf will both build an internal buffer anyway,
>> efficiency is probably similar)
monitor_vprintf() formats to a dynamic buffer, which it passes to
monitor_puts(). monitor_puts() uses a line buffer.
fprintf() can be unbuffered, line-buffered, or fully buffered.
Converting everything to a string first is different: the string buffer
holds *everything* rather than just a line or some fixed size.
> Hmm, there are more allocations in qobject_to_string() though
Re: [Qemu-devel] [PATCH v3 00/43] qobject/qapi: add uint type, no-reply, 2017/06/07
Re: [Qemu-devel] [PATCH v3 00/43] qobject/qapi: add uint type, no-reply, 2017/06/07
Re: [Qemu-devel] [PATCH v3 00/43] qobject/qapi: add uint type, Markus Armbruster, 2017/06/09