]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu_monitor: add qemuMonitorGetStatsByQOMPath
authorAmneesh Singh <natto@weirdnatto.in>
Wed, 7 Sep 2022 10:34:21 +0000 (16:04 +0530)
committerMartin Kletzander <mkletzan@redhat.com>
Wed, 19 Oct 2022 13:58:29 +0000 (15:58 +0200)
This function returns the virJSONValue object which has the
same qom_path as specified.

Signed-off-by: Amneesh Singh <natto@weirdnatto.in>
src/qemu/qemu_monitor.c
src/qemu/qemu_monitor.h

index 9e54bb180e673d8aae698709f233c83a12f32afa..d09c561e47606b344bbc5e45e1d4a91d1bbae567 100644 (file)
@@ -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;
+}
index 8ca68301b419c27d857a2b6c1e9122f3ac3b229b..5a84a4d0956ce3609135d232fe962f0f11a3b655 100644 (file)
@@ -1562,3 +1562,7 @@ qemuMonitorQueryStats(qemuMonitor *mon,
 
 GHashTable *
 qemuMonitorExtractQueryStats(virJSONValue *info);
+
+virJSONValue *
+qemuMonitorGetStatsByQOMPath(virJSONValue *arr,
+                             char *qom_path);