[libvirt] [PATCH 06/12] qemu: monitor: Convert common code to a macro

Ján Tomko jtomko at redhat.com
Wed Mar 11 08:34:43 UTC 2015


On Tue, Mar 10, 2015 at 05:26:35PM +0100, Peter Krempa wrote:
> The function that is extracting block stats data from the QMP monitor
> reply contains a lot of repeated code. Since I'd be changing each of the
> copies in the next patch, lets convert it to a macro right away.
> ---
>  src/qemu/qemu_monitor_json.c | 77 ++++++++++----------------------------------
>  1 file changed, 17 insertions(+), 60 deletions(-)
> 

> +#define QEMU_MONITOR_JSON_BLOCK_STAT(NAME, VAR, MANDATORY)                     \
> +    if (MANDATORY || virJSONValueObjectHasKey(stats, NAME)) {                  \
> +        if (virJSONValueObjectGetNumberLong(stats, NAME, &VAR) < 0) {          \
> +            virReportError(VIR_ERR_INTERNAL_ERROR,                             \
> +                           _("cannot read %s statistic"), NAME);               \
> +            goto cleanup;                                                      \
> +        }                                                                      \
> +    }
> +     QEMU_MONITOR_JSON_BLOCK_STAT("rd_bytes", bstats->rd_bytes, true);
> +     QEMU_MONITOR_JSON_BLOCK_STAT("wr_bytes", bstats->wr_bytes, true);
> +     QEMU_MONITOR_JSON_BLOCK_STAT("rd_operations", bstats->rd_req, true);
> +     QEMU_MONITOR_JSON_BLOCK_STAT("wr_operations", bstats->wr_req, true);
> +     QEMU_MONITOR_JSON_BLOCK_STAT("rd_total_time_ns", bstats->rd_total_times, false);
> +     QEMU_MONITOR_JSON_BLOCK_STAT("wr_total_time_ns", bstats->wr_total_times, false);
> +     QEMU_MONITOR_JSON_BLOCK_STAT("flush_operations", bstats->flush_req, false);
> +     QEMU_MONITOR_JSON_BLOCK_STAT("flush_total_time_ns", bstats->flush_total_times, false);
> +#undef QEMU_MONITOR_JSON_BLOCK_STAT
> 

This macro could also use a verb.

Jan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150311/780c7f39/attachment-0001.sig>


More information about the libvir-list mailing list