]> xenbits.xensource.com Git - libvirt.git/commitdiff
cpu: Rework cpuDataFree
authorJiri Denemark <jdenemar@redhat.com>
Thu, 2 Feb 2017 14:37:40 +0000 (15:37 +0100)
committerJiri Denemark <jdenemar@redhat.com>
Fri, 24 Feb 2017 13:10:57 +0000 (14:10 +0100)
The new API is called virCPUDataFree. Individual CPU drivers are no
longer required to implement their own freeing function unless they need
to free architecture specific data from virCPUData.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
17 files changed:
src/bhyve/bhyve_capabilities.c
src/cpu/cpu.c
src/cpu/cpu.h
src/cpu/cpu_arm.c
src/cpu/cpu_ppc64.c
src/cpu/cpu_s390.c
src/cpu/cpu_x86.c
src/libvirt_private.syms
src/libxl/libxl_capabilities.c
src/qemu/qemu_capabilities.c
src/qemu/qemu_monitor_json.c
src/qemu/qemu_parse_command.c
src/qemu/qemu_process.c
src/vmware/vmware_conf.c
src/vz/vz_driver.c
tests/cputest.c
tests/qemumonitorjsontest.c

index 1dc0593aff00ad785640a7863982ee8c85ff93ba..52d6ca7829114e9f5ce4feb2209f68fd20d0edf0 100644 (file)
@@ -68,7 +68,7 @@ virBhyveCapsInitCPU(virCapsPtr caps,
     ret = 0;
 
  cleanup:
-    cpuDataFree(data);
+    virCPUDataFree(data);
 
     return ret;
 
index 6a808a0c17c780bc30199bd0ad342ed6ec2f259c..051a58040eb4d1a4150c5cae5b4b9352fac87950 100644 (file)
@@ -331,7 +331,7 @@ virCPUDataNew(virArch arch)
 
 
 /**
- * cpuDataFree:
+ * virCPUDataFree:
  *
  * @data: CPU data structure to be freed
  *
@@ -340,26 +340,19 @@ virCPUDataNew(virArch arch)
  * Returns nothing.
  */
 void
-cpuDataFree(virCPUDataPtr data)
+virCPUDataFree(virCPUDataPtr data)
 {
     struct cpuArchDriver *driver;
 
     VIR_DEBUG("data=%p", data);
 
-    if (data == NULL)
+    if (!data)
         return;
 
-    if ((driver = cpuGetSubDriver(data->arch)) == NULL)
-        return;
-
-    if (driver->free == NULL) {
-        virReportError(VIR_ERR_NO_SUPPORT,
-                       _("cannot free CPU data for %s architecture"),
-                       virArchToString(data->arch));
-        return;
-    }
-
-    (driver->free)(data);
+    if ((driver = cpuGetSubDriver(data->arch)) && driver->dataFree)
+        driver->dataFree(data);
+    else
+        VIR_FREE(data);
 }
 
 
index ceb1e7256066c0a8f3b568ac979e48a3f7516bbf..0324284b91605db5a35cce3f65efcdf15fe192ac 100644 (file)
@@ -116,7 +116,7 @@ struct cpuArchDriver {
     virCPUArchCompare   compare;
     cpuArchDecode       decode;
     cpuArchEncode       encode;
-    cpuArchDataFree     free;
+    cpuArchDataFree     dataFree;
     cpuArchNodeData     nodeData;
     cpuArchBaseline     baseline;
     virCPUArchUpdate    update;
@@ -166,7 +166,7 @@ virCPUDataPtr
 virCPUDataNew(virArch arch);
 
 void
-cpuDataFree (virCPUDataPtr data);
+virCPUDataFree(virCPUDataPtr data);
 
 virCPUDataPtr
 cpuNodeData (virArch arch);
index 653b06b2f9f01cc3ce91927cff1eb1f112aa3ad5..3a0ee2b14785b40aad5b567ddc6d3e8e5cb60e42 100644 (file)
@@ -37,12 +37,6 @@ static const virArch archs[] = {
     VIR_ARCH_AARCH64,
 };
 
-static void
-armDataFree(virCPUDataPtr data)
-{
-    VIR_FREE(data);
-}
-
 
 static int
 virCPUarmUpdate(virCPUDefPtr guest,
@@ -117,7 +111,6 @@ struct cpuArchDriver cpuDriverArm = {
     .compare = virCPUarmCompare,
     .decode = NULL,
     .encode = NULL,
-    .free = armDataFree,
     .nodeData = NULL,
     .baseline = armBaseline,
     .update = virCPUarmUpdate,
index 180ad87d18c951fc3ffa30ea322577861188fff1..a7c8545db99525bcc574ec9db1b806560f6f6751 100644 (file)
@@ -705,7 +705,7 @@ ppc64DriverDecode(virCPUDefPtr cpu,
 }
 
 static void
-ppc64DriverFree(virCPUDataPtr data)
+virCPUppc64DataFree(virCPUDataPtr data)
 {
     if (!data)
         return;
@@ -741,7 +741,7 @@ ppc64DriverNodeData(virArch arch)
     return nodeData;
 
  error:
-    ppc64DriverFree(nodeData);
+    virCPUppc64DataFree(nodeData);
     return NULL;
 }
 
@@ -901,7 +901,7 @@ struct cpuArchDriver cpuDriverPPC64 = {
     .compare    = virCPUppc64Compare,
     .decode     = ppc64DriverDecode,
     .encode     = NULL,
-    .free       = ppc64DriverFree,
+    .dataFree   = virCPUppc64DataFree,
     .nodeData   = ppc64DriverNodeData,
     .baseline   = ppc64DriverBaseline,
     .update     = virCPUppc64Update,
index 0248328db44e95867cf68e883b3551588289a7b7..9503e8e2bfd03f4176605c4b1b9538dca8744f7e 100644 (file)
 
 static const virArch archs[] = { VIR_ARCH_S390, VIR_ARCH_S390X };
 
-static void
-s390DataFree(virCPUDataPtr data)
-{
-    VIR_FREE(data);
-}
-
 static virCPUCompareResult
 virCPUs390Compare(virCPUDefPtr host ATTRIBUTE_UNUSED,
                   virCPUDefPtr cpu ATTRIBUTE_UNUSED,
@@ -115,7 +109,6 @@ struct cpuArchDriver cpuDriverS390 = {
     .compare    = virCPUs390Compare,
     .decode     = NULL,
     .encode     = NULL,
-    .free       = s390DataFree,
     .nodeData   = NULL,
     .baseline   = NULL,
     .update     = virCPUs390Update,
index 0058abef7521f111b7eac20446d92e7837fc7956..3b540f99cc12913ea0adccaa88d01997ee6ff837 100644 (file)
@@ -304,7 +304,7 @@ virCPUx86DataClear(virCPUx86Data *data)
 
 
 static void
-x86FreeCPUData(virCPUDataPtr data)
+virCPUx86DataFree(virCPUDataPtr data)
 {
     if (!data)
         return;
@@ -1455,7 +1455,7 @@ virCPUx86DataParse(xmlXPathContextPtr ctxt)
     return cpuData;
 
  error:
-    x86FreeCPUData(cpuData);
+    virCPUx86DataFree(cpuData);
     cpuData = NULL;
     goto cleanup;
 }
@@ -1641,7 +1641,7 @@ x86Compute(virCPUDefPtr host,
     return ret;
 
  error:
-    x86FreeCPUData(guestData);
+    virCPUx86DataFree(guestData);
     ret = VIR_CPU_COMPARE_ERROR;
     goto cleanup;
 }
@@ -2033,12 +2033,12 @@ x86Encode(virArch arch,
     return 0;
 
  error:
-    x86FreeCPUData(data_forced);
-    x86FreeCPUData(data_required);
-    x86FreeCPUData(data_optional);
-    x86FreeCPUData(data_disabled);
-    x86FreeCPUData(data_forbidden);
-    x86FreeCPUData(data_vendor);
+    virCPUx86DataFree(data_forced);
+    virCPUx86DataFree(data_required);
+    virCPUx86DataFree(data_optional);
+    virCPUx86DataFree(data_disabled);
+    virCPUx86DataFree(data_forbidden);
+    virCPUx86DataFree(data_vendor);
     return -1;
 }
 
@@ -2380,7 +2380,7 @@ x86NodeData(virArch arch)
     return cpuData;
 
  error:
-    x86FreeCPUData(cpuData);
+    virCPUx86DataFree(cpuData);
     return NULL;
 }
 #endif
@@ -2718,7 +2718,7 @@ struct cpuArchDriver cpuDriverX86 = {
     .compare    = virCPUx86Compare,
     .decode     = x86DecodeCPUData,
     .encode     = x86Encode,
-    .free       = x86FreeCPUData,
+    .dataFree   = virCPUx86DataFree,
 #if defined(__i386__) || defined(__x86_64__)
     .nodeData   = x86NodeData,
 #else
index fb4b0043725771343f46235d8d62574718b7ba5e..4887f616b5a30d15885c37d6fbef5bd4abc2e337 100644 (file)
@@ -984,7 +984,6 @@ virSecretObjSetValueSize;
 # cpu/cpu.h
 cpuBaseline;
 cpuBaselineXML;
-cpuDataFree;
 cpuDecode;
 cpuEncode;
 cpuNodeData;
@@ -994,6 +993,7 @@ virCPUCompareXML;
 virCPUConvertLegacy;
 virCPUDataCheckFeature;
 virCPUDataFormat;
+virCPUDataFree;
 virCPUDataNew;
 virCPUDataParse;
 virCPUGetModels;
index 622e9f6bb1c8a5985ec31f388c917a5ce85d462e..117055cf236bf285275c14cf1b0051dea013cd5a 100644 (file)
@@ -145,7 +145,7 @@ libxlCapsNodeData(virCPUDefPtr cpu, libxl_hwcap hwcap,
     return cpudata;
 
  error:
-    cpuDataFree(cpudata);
+    virCPUDataFree(cpudata);
     return NULL;
 }
 
@@ -198,7 +198,7 @@ libxlCapsInitCPU(virCapsPtr caps, libxl_physinfo *phy_info,
     }
 
  cleanup:
-    cpuDataFree(data);
+    virCPUDataFree(data);
 
     return ret;
 
index 29ca3d4f907af77cf1f13ff78dc8ff914fd84a7e..6f60a00ef4b262b908c62421f9d929b330277c02 100644 (file)
@@ -1090,7 +1090,7 @@ virQEMUCapsInitCPU(virCapsPtr caps,
     ret = 0;
 
  cleanup:
-    cpuDataFree(data);
+    virCPUDataFree(data);
 
     return ret;
 
index 334eff1b7559c08eefb8d1824ab144248ef16dd6..a5421cf301ef9f8d5a1aeb525058f5c100285055 100644 (file)
@@ -6571,7 +6571,7 @@ qemuMonitorJSONParseCPUx86Features(virJSONValuePtr data)
     return cpudata;
 
  error:
-    cpuDataFree(cpudata);
+    virCPUDataFree(cpudata);
     return NULL;
 }
 
index 405e6554995765053eb92665d40e9b64a6821b87..a215027c1d3184206d11ee7ca27e21fb2eb5e75a 100644 (file)
@@ -1606,7 +1606,7 @@ qemuParseCommandLineCPU(virDomainDefPtr dom,
                 goto cleanup;
 
             is_32bit = (virCPUDataCheckFeature(cpuData, "lm") != 1);
-            cpuDataFree(cpuData);
+            virCPUDataFree(cpuData);
         } else if (model) {
             is_32bit = STREQ(model, "qemu32");
         }
index 760507d9575909b5ea47d116dc3e31cb99fb85f9..8b8b9d9cc01c1965fa689440b8a9f5501a27dbb5 100644 (file)
@@ -3815,7 +3815,7 @@ qemuProcessVerifyGuestCPU(virQEMUDriverPtr driver,
     ret = true;
 
  cleanup:
-    cpuDataFree(guestcpu);
+    virCPUDataFree(guestcpu);
     return ret;
 }
 
index 4222f4e3807aa9c3311c3357d3522b6abdb3ce02..5b1b5f5fdcbb063527d2c7d5d27d47ece92cb35e 100644 (file)
@@ -118,7 +118,7 @@ vmwareCapsInit(void)
 
  cleanup:
     virCPUDefFree(cpu);
-    cpuDataFree(data);
+    virCPUDataFree(data);
 
     return caps;
 
index 4408591170cd68a6d6a4acdad0a3c4fb6c0fca30..1ca9fd726fe4f7cdd416b083828e81e0afd2f779 100644 (file)
@@ -151,7 +151,7 @@ vzBuildCapabilities(void)
     }
 
  cleanup:
-    cpuDataFree(data);
+    virCPUDataFree(data);
     return caps;
 
  error:
index 8612e920ee8a0ead2c0bb22a53651d232e5233fc..8d761af614e4bb846612eb45797da4217cb264a0 100644 (file)
@@ -439,7 +439,7 @@ cpuTestHasFeature(const void *arg)
     ret = 0;
 
  cleanup:
-    cpuDataFree(hostData);
+    virCPUDataFree(hostData);
     virCPUDefFree(host);
     return ret;
 }
@@ -489,7 +489,7 @@ cpuTestCPUID(bool guest, const void *arg)
  cleanup:
     VIR_FREE(hostFile);
     VIR_FREE(host);
-    cpuDataFree(hostData);
+    virCPUDataFree(hostData);
     virCPUDefFree(cpu);
     VIR_FREE(result);
     return ret;
@@ -549,7 +549,7 @@ cpuTestJSONCPUID(const void *arg)
 
  cleanup:
     qemuMonitorTestFree(testMon);
-    cpuDataFree(cpuData);
+    virCPUDataFree(cpuData);
     virCPUDefFree(cpu);
     VIR_FREE(result);
     VIR_FREE(json);
index 5b2d6bb343efcd3b7745319e2ca5957350ba6c19..402c87d4553e76f4ce9e5e9b5b22ffa9e1191d4d 100644 (file)
@@ -2410,7 +2410,7 @@ testQemuMonitorJSONGetCPUData(const void *opaque)
     VIR_FREE(dataFile);
     VIR_FREE(jsonStr);
     VIR_FREE(actual);
-    cpuDataFree(cpuData);
+    virCPUDataFree(cpuData);
     qemuMonitorTestFree(test);
     return ret;
 }
@@ -2455,7 +2455,7 @@ testQemuMonitorJSONGetNonExistingCPUData(const void *opaque)
     ret = 0;
  cleanup:
     qemuMonitorTestFree(test);
-    cpuDataFree(cpuData);
+    virCPUDataFree(cpuData);
     return ret;
 }