From: Amneesh Singh Date: Wed, 7 Sep 2022 10:34:21 +0000 (+0530) Subject: qemu_monitor: add qemuMonitorGetStatsByQOMPath X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=b86c77dff2e5c865b03001e8729b0740c0fa93d0;p=libvirt.git qemu_monitor: add qemuMonitorGetStatsByQOMPath This function returns the virJSONValue object which has the same qom_path as specified. Signed-off-by: Amneesh Singh --- diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index 9e54bb180e..d09c561e47 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -1537,6 +1537,7 @@ qemuMonitorGetCPUInfoLegacy(struct qemuMonitorQueryCpusEntry *cpuentries, vcpus[i].tid = cpuentries[i].tid; vcpus[i].halted = cpuentries[i].halted; vcpus[i].qemu_id = cpuentries[i].qemu_id; + vcpus[i].qom_path = g_strdup(cpuentries[i].qom_path); } /* for legacy hotplug to work we need to fake the vcpu count added by @@ -4445,3 +4446,39 @@ qemuMonitorExtractQueryStats(virJSONValue *info) return g_steal_pointer(&hash_table); } + + +/** + * qemuMonitorStatsSchemaByQOMPath: + * @arr: Array of objects returned by qemuMonitorQueryStats + * + * Returns the object which matches the QOM path of the vCPU + * + * Returns NULL on failure. + */ +virJSONValue * +qemuMonitorGetStatsByQOMPath(virJSONValue *arr, + char *qom_path) +{ + size_t i; + + if (!virJSONValueIsArray(arr) || !qom_path) + return NULL; + + for (i = 0; i < virJSONValueArraySize(arr); i++) { + virJSONValue *obj = virJSONValueArrayGet(arr, i); + const char *test_qom_path = NULL; + + if (!obj) + return NULL; + + test_qom_path = virJSONValueObjectGetString(obj, "qom-path"); + if (!test_qom_path) + return NULL; + + if (STRCASEEQ(qom_path, test_qom_path)) + return obj; + } + + return NULL; +} diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index 8ca68301b4..5a84a4d095 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -1562,3 +1562,7 @@ qemuMonitorQueryStats(qemuMonitor *mon, GHashTable * qemuMonitorExtractQueryStats(virJSONValue *info); + +virJSONValue * +qemuMonitorGetStatsByQOMPath(virJSONValue *arr, + char *qom_path);