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@xxxxxxxxxx> --- Notes: Version 3: - ACKed in v2 - no change Version 2: - no change src/bhyve/bhyve_capabilities.c | 2 +- src/cpu/cpu.c | 21 +++++++-------------- src/cpu/cpu.h | 4 ++-- src/cpu/cpu_arm.c | 7 ------- src/cpu/cpu_ppc64.c | 6 +++--- src/cpu/cpu_s390.c | 7 ------- src/cpu/cpu_x86.c | 22 +++++++++++----------- src/libvirt_private.syms | 2 +- src/libxl/libxl_capabilities.c | 4 ++-- src/qemu/qemu_capabilities.c | 2 +- src/qemu/qemu_monitor_json.c | 2 +- src/qemu/qemu_parse_command.c | 2 +- src/qemu/qemu_process.c | 2 +- src/vmware/vmware_conf.c | 2 +- src/vz/vz_driver.c | 2 +- tests/cputest.c | 6 +++--- tests/qemumonitorjsontest.c | 4 ++-- 17 files changed, 38 insertions(+), 59 deletions(-) diff --git a/src/bhyve/bhyve_capabilities.c b/src/bhyve/bhyve_capabilities.c index 1dc0593af..52d6ca782 100644 --- a/src/bhyve/bhyve_capabilities.c +++ b/src/bhyve/bhyve_capabilities.c @@ -68,7 +68,7 @@ virBhyveCapsInitCPU(virCapsPtr caps, ret = 0; cleanup: - cpuDataFree(data); + virCPUDataFree(data); return ret; diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c index 6a808a0c1..051a58040 100644 --- a/src/cpu/cpu.c +++ b/src/cpu/cpu.c @@ -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); } diff --git a/src/cpu/cpu.h b/src/cpu/cpu.h index ceb1e7256..0324284b9 100644 --- a/src/cpu/cpu.h +++ b/src/cpu/cpu.h @@ -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); diff --git a/src/cpu/cpu_arm.c b/src/cpu/cpu_arm.c index 653b06b2f..3a0ee2b14 100644 --- a/src/cpu/cpu_arm.c +++ b/src/cpu/cpu_arm.c @@ -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, diff --git a/src/cpu/cpu_ppc64.c b/src/cpu/cpu_ppc64.c index 180ad87d1..a7c8545db 100644 --- a/src/cpu/cpu_ppc64.c +++ b/src/cpu/cpu_ppc64.c @@ -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, diff --git a/src/cpu/cpu_s390.c b/src/cpu/cpu_s390.c index 0248328db..9503e8e2b 100644 --- a/src/cpu/cpu_s390.c +++ b/src/cpu/cpu_s390.c @@ -33,12 +33,6 @@ 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, diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c index 0058abef7..3b540f99c 100644 --- a/src/cpu/cpu_x86.c +++ b/src/cpu/cpu_x86.c @@ -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 diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 67a17c35f..145e23bd8 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -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; diff --git a/src/libxl/libxl_capabilities.c b/src/libxl/libxl_capabilities.c index 622e9f6bb..117055cf2 100644 --- a/src/libxl/libxl_capabilities.c +++ b/src/libxl/libxl_capabilities.c @@ -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; diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index f31a9ce6e..5c0353159 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -1092,7 +1092,7 @@ virQEMUCapsInitCPU(virCapsPtr caps, ret = 0; cleanup: - cpuDataFree(data); + virCPUDataFree(data); return ret; diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 24c1e600a..c8e1764f8 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -6597,7 +6597,7 @@ qemuMonitorJSONParseCPUx86Features(virJSONValuePtr data) return cpudata; error: - cpuDataFree(cpudata); + virCPUDataFree(cpudata); return NULL; } diff --git a/src/qemu/qemu_parse_command.c b/src/qemu/qemu_parse_command.c index 405e65549..a215027c1 100644 --- a/src/qemu/qemu_parse_command.c +++ b/src/qemu/qemu_parse_command.c @@ -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"); } diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 1d7128037..82ff95d20 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -3816,7 +3816,7 @@ qemuProcessVerifyGuestCPU(virQEMUDriverPtr driver, ret = true; cleanup: - cpuDataFree(guestcpu); + virCPUDataFree(guestcpu); return ret; } diff --git a/src/vmware/vmware_conf.c b/src/vmware/vmware_conf.c index 4222f4e38..5b1b5f5fd 100644 --- a/src/vmware/vmware_conf.c +++ b/src/vmware/vmware_conf.c @@ -118,7 +118,7 @@ vmwareCapsInit(void) cleanup: virCPUDefFree(cpu); - cpuDataFree(data); + virCPUDataFree(data); return caps; diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c index 440859117..1ca9fd726 100644 --- a/src/vz/vz_driver.c +++ b/src/vz/vz_driver.c @@ -151,7 +151,7 @@ vzBuildCapabilities(void) } cleanup: - cpuDataFree(data); + virCPUDataFree(data); return caps; error: diff --git a/tests/cputest.c b/tests/cputest.c index 8612e920e..8d761af61 100644 --- a/tests/cputest.c +++ b/tests/cputest.c @@ -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); diff --git a/tests/qemumonitorjsontest.c b/tests/qemumonitorjsontest.c index 5b2d6bb34..402c87d45 100644 --- a/tests/qemumonitorjsontest.c +++ b/tests/qemumonitorjsontest.c @@ -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; } -- 2.11.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list