[libvirt] [PATCH 1/2] cpu: Add support for overriding path to CPU map XML file

Jiri Denemark jdenemar at redhat.com
Thu Nov 25 17:24:11 UTC 2010


---
 src/cpu/cpu_map.c        |   21 +++++++++++++++++++--
 src/cpu/cpu_map.h        |    3 +++
 src/libvirt_private.syms |    1 +
 3 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/src/cpu/cpu_map.c b/src/cpu/cpu_map.c
index 0c5ff8a..86bc670 100644
--- a/src/cpu/cpu_map.c
+++ b/src/cpu/cpu_map.c
@@ -32,6 +32,8 @@
 
 #define CPUMAPFILE PKGDATADIR "/cpu_map.xml"
 
+static char *cpumap;
+
 VIR_ENUM_IMPL(cpuMapElement, CPU_MAP_ELEMENT_LAST,
     "vendor",
     "feature",
@@ -81,6 +83,7 @@ int cpuMapLoad(const char *arch,
     char *xpath = NULL;
     int ret = -1;
     int element;
+    const char *mapfile = (cpumap ? cpumap : CPUMAPFILE);
 
     if (arch == NULL) {
         virCPUReportError(VIR_ERR_INTERNAL_ERROR,
@@ -94,10 +97,10 @@ int cpuMapLoad(const char *arch,
         return -1;
     }
 
-    if ((xml = xmlParseFile(CPUMAPFILE)) == NULL) {
+    if ((xml = xmlParseFile(mapfile)) == NULL) {
         virCPUReportError(VIR_ERR_INTERNAL_ERROR,
                 _("cannot parse CPU map file: %s"),
-                CPUMAPFILE);
+                mapfile);
         goto cleanup;
     }
 
@@ -139,3 +142,17 @@ no_memory:
     virReportOOMError();
     goto cleanup;
 }
+
+
+int
+cpuMapOverride(const char *path)
+{
+    char *map;
+
+    if (!(map = strdup(path)))
+        return -1;
+
+    VIR_FREE(cpumap);
+    cpumap = map;
+    return 0;
+}
diff --git a/src/cpu/cpu_map.h b/src/cpu/cpu_map.h
index e26c7c1..acf4cc4 100644
--- a/src/cpu/cpu_map.h
+++ b/src/cpu/cpu_map.h
@@ -48,4 +48,7 @@ cpuMapLoad(const char *arch,
            cpuMapLoadCallback cb,
            void *data);
 
+extern int
+cpuMapOverride(const char *path);
+
 #endif /* __VIR_CPU_MAP_H__ */
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 33e52e2..864652e 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -105,6 +105,7 @@ cpuDecode;
 cpuEncode;
 cpuGuestData;
 cpuHasFeature;
+cpuMapOverride;
 cpuNodeData;
 cpuUpdate;
 
-- 
1.7.3.2




More information about the libvir-list mailing list