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