]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
Add ability to store other metadata in the qemu capabilities object
authorDaniel P. Berrange <berrange@redhat.com>
Wed, 22 Aug 2012 10:11:28 +0000 (11:11 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Thu, 13 Sep 2012 11:26:41 +0000 (12:26 +0100)
Add struct fields and APIs to allow the qemu capabilities object
to store version, arch, machines & cpu names, etc

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
src/qemu/qemu_capabilities.c
src/qemu/qemu_capabilities.h

index 387a58180d82150d170a30cc6f1ebe6cb9f6d432..784ba8889cd72e937c260e80fcce28ef4625564e 100644 (file)
@@ -183,6 +183,18 @@ struct _qemuCaps {
     virObject object;
 
     virBitmapPtr flags;
+
+    unsigned int version;
+    unsigned int kvmVersion;
+
+    char *arch;
+
+    size_t ncpuDefinitions;
+    char **cpuDefinitions;
+
+    size_t nmachineTypes;
+    char **machineTypes;
+    char **machineAliases;
 };
 
 
@@ -1718,6 +1730,21 @@ no_memory:
 void qemuCapsDispose(void *obj)
 {
     qemuCapsPtr caps = obj;
+    size_t i;
+
+    VIR_FREE(caps->arch);
+
+    for (i = 0 ; i < caps->nmachineTypes ; i++) {
+        VIR_FREE(caps->machineTypes[i]);
+        VIR_FREE(caps->machineAliases[i]);
+    }
+    VIR_FREE(caps->machineTypes);
+    VIR_FREE(caps->machineAliases);
+
+    for (i = 0 ; i < caps->ncpuDefinitions ; i++) {
+        VIR_FREE(caps->cpuDefinitions[i]);
+    }
+    VIR_FREE(caps->cpuDefinitions);
 
     virBitmapFree(caps->flags);
 }
@@ -1768,3 +1795,54 @@ qemuCapsGet(qemuCapsPtr caps,
     else
         return b;
 }
+
+
+const char *qemuCapsGetArch(qemuCapsPtr caps)
+{
+    return caps->arch;
+}
+
+
+unsigned int qemuCapsGetVersion(qemuCapsPtr caps)
+{
+    return caps->version;
+}
+
+
+unsigned int qemuCapsGetKVMVersion(qemuCapsPtr caps)
+{
+    return caps->kvmVersion;
+}
+
+
+size_t qemuCapsGetCPUDefinitions(qemuCapsPtr caps,
+                                 char ***names)
+{
+    *names = caps->cpuDefinitions;
+    return caps->ncpuDefinitions;
+}
+
+
+size_t qemuCapsGetMachineTypes(qemuCapsPtr caps,
+                               char ***names)
+{
+    *names = caps->machineTypes;
+    return caps->nmachineTypes;
+}
+
+
+const char *qemuCapsGetCanonicalMachine(qemuCapsPtr caps,
+                                        const char *name)
+
+{
+    size_t i;
+
+    for (i = 0 ; i < caps->nmachineTypes ; i++) {
+        if (!caps->machineAliases[i])
+            continue;
+        if (STREQ(caps->machineAliases[i], name))
+            return caps->machineTypes[i];
+    }
+
+    return name;
+}
index 67e28ae64345afe66793570f274c3da78a537bc6..05e4ad11c705db9a02ba40a3a62c6d92441060b0 100644 (file)
@@ -164,6 +164,16 @@ bool qemuCapsGet(qemuCapsPtr caps,
 
 char *qemuCapsFlagsString(qemuCapsPtr caps);
 
+const char *qemuCapsGetArch(qemuCapsPtr caps);
+unsigned int qemuCapsGetVersion(qemuCapsPtr caps);
+unsigned int qemuCapsGetKVMVersion(qemuCapsPtr caps);
+size_t qemuCapsGetCPUDefinitions(qemuCapsPtr caps,
+                                 char ***names);
+size_t qemuCapsGetMachineTypes(qemuCapsPtr caps,
+                               char ***names);
+const char *qemuCapsGetCanonicalMachine(qemuCapsPtr caps,
+                                        const char *name);
+
 virCapsPtr qemuCapsInit(virCapsPtr old_caps);
 
 int qemuCapsProbeMachineTypes(const char *binary,