mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
cpu: Rework cpuDataFree
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>
This commit is contained in:
parent
5acdd4a6b4
commit
f6d55a5f42
@ -68,7 +68,7 @@ virBhyveCapsInitCPU(virCapsPtr caps,
|
|||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
cpuDataFree(data);
|
virCPUDataFree(data);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@ -331,7 +331,7 @@ virCPUDataNew(virArch arch)
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cpuDataFree:
|
* virCPUDataFree:
|
||||||
*
|
*
|
||||||
* @data: CPU data structure to be freed
|
* @data: CPU data structure to be freed
|
||||||
*
|
*
|
||||||
@ -340,26 +340,19 @@ virCPUDataNew(virArch arch)
|
|||||||
* Returns nothing.
|
* Returns nothing.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
cpuDataFree(virCPUDataPtr data)
|
virCPUDataFree(virCPUDataPtr data)
|
||||||
{
|
{
|
||||||
struct cpuArchDriver *driver;
|
struct cpuArchDriver *driver;
|
||||||
|
|
||||||
VIR_DEBUG("data=%p", data);
|
VIR_DEBUG("data=%p", data);
|
||||||
|
|
||||||
if (data == NULL)
|
if (!data)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ((driver = cpuGetSubDriver(data->arch)) == NULL)
|
if ((driver = cpuGetSubDriver(data->arch)) && driver->dataFree)
|
||||||
return;
|
driver->dataFree(data);
|
||||||
|
else
|
||||||
if (driver->free == NULL) {
|
VIR_FREE(data);
|
||||||
virReportError(VIR_ERR_NO_SUPPORT,
|
|
||||||
_("cannot free CPU data for %s architecture"),
|
|
||||||
virArchToString(data->arch));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
(driver->free)(data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -116,7 +116,7 @@ struct cpuArchDriver {
|
|||||||
virCPUArchCompare compare;
|
virCPUArchCompare compare;
|
||||||
cpuArchDecode decode;
|
cpuArchDecode decode;
|
||||||
cpuArchEncode encode;
|
cpuArchEncode encode;
|
||||||
cpuArchDataFree free;
|
cpuArchDataFree dataFree;
|
||||||
cpuArchNodeData nodeData;
|
cpuArchNodeData nodeData;
|
||||||
cpuArchBaseline baseline;
|
cpuArchBaseline baseline;
|
||||||
virCPUArchUpdate update;
|
virCPUArchUpdate update;
|
||||||
@ -166,7 +166,7 @@ virCPUDataPtr
|
|||||||
virCPUDataNew(virArch arch);
|
virCPUDataNew(virArch arch);
|
||||||
|
|
||||||
void
|
void
|
||||||
cpuDataFree (virCPUDataPtr data);
|
virCPUDataFree(virCPUDataPtr data);
|
||||||
|
|
||||||
virCPUDataPtr
|
virCPUDataPtr
|
||||||
cpuNodeData (virArch arch);
|
cpuNodeData (virArch arch);
|
||||||
|
@ -37,12 +37,6 @@ static const virArch archs[] = {
|
|||||||
VIR_ARCH_AARCH64,
|
VIR_ARCH_AARCH64,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
|
||||||
armDataFree(virCPUDataPtr data)
|
|
||||||
{
|
|
||||||
VIR_FREE(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
virCPUarmUpdate(virCPUDefPtr guest,
|
virCPUarmUpdate(virCPUDefPtr guest,
|
||||||
@ -117,7 +111,6 @@ struct cpuArchDriver cpuDriverArm = {
|
|||||||
.compare = virCPUarmCompare,
|
.compare = virCPUarmCompare,
|
||||||
.decode = NULL,
|
.decode = NULL,
|
||||||
.encode = NULL,
|
.encode = NULL,
|
||||||
.free = armDataFree,
|
|
||||||
.nodeData = NULL,
|
.nodeData = NULL,
|
||||||
.baseline = armBaseline,
|
.baseline = armBaseline,
|
||||||
.update = virCPUarmUpdate,
|
.update = virCPUarmUpdate,
|
||||||
|
@ -705,7 +705,7 @@ ppc64DriverDecode(virCPUDefPtr cpu,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ppc64DriverFree(virCPUDataPtr data)
|
virCPUppc64DataFree(virCPUDataPtr data)
|
||||||
{
|
{
|
||||||
if (!data)
|
if (!data)
|
||||||
return;
|
return;
|
||||||
@ -741,7 +741,7 @@ ppc64DriverNodeData(virArch arch)
|
|||||||
return nodeData;
|
return nodeData;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
ppc64DriverFree(nodeData);
|
virCPUppc64DataFree(nodeData);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -901,7 +901,7 @@ struct cpuArchDriver cpuDriverPPC64 = {
|
|||||||
.compare = virCPUppc64Compare,
|
.compare = virCPUppc64Compare,
|
||||||
.decode = ppc64DriverDecode,
|
.decode = ppc64DriverDecode,
|
||||||
.encode = NULL,
|
.encode = NULL,
|
||||||
.free = ppc64DriverFree,
|
.dataFree = virCPUppc64DataFree,
|
||||||
.nodeData = ppc64DriverNodeData,
|
.nodeData = ppc64DriverNodeData,
|
||||||
.baseline = ppc64DriverBaseline,
|
.baseline = ppc64DriverBaseline,
|
||||||
.update = virCPUppc64Update,
|
.update = virCPUppc64Update,
|
||||||
|
@ -33,12 +33,6 @@
|
|||||||
|
|
||||||
static const virArch archs[] = { VIR_ARCH_S390, VIR_ARCH_S390X };
|
static const virArch archs[] = { VIR_ARCH_S390, VIR_ARCH_S390X };
|
||||||
|
|
||||||
static void
|
|
||||||
s390DataFree(virCPUDataPtr data)
|
|
||||||
{
|
|
||||||
VIR_FREE(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
static virCPUCompareResult
|
static virCPUCompareResult
|
||||||
virCPUs390Compare(virCPUDefPtr host ATTRIBUTE_UNUSED,
|
virCPUs390Compare(virCPUDefPtr host ATTRIBUTE_UNUSED,
|
||||||
virCPUDefPtr cpu ATTRIBUTE_UNUSED,
|
virCPUDefPtr cpu ATTRIBUTE_UNUSED,
|
||||||
@ -115,7 +109,6 @@ struct cpuArchDriver cpuDriverS390 = {
|
|||||||
.compare = virCPUs390Compare,
|
.compare = virCPUs390Compare,
|
||||||
.decode = NULL,
|
.decode = NULL,
|
||||||
.encode = NULL,
|
.encode = NULL,
|
||||||
.free = s390DataFree,
|
|
||||||
.nodeData = NULL,
|
.nodeData = NULL,
|
||||||
.baseline = NULL,
|
.baseline = NULL,
|
||||||
.update = virCPUs390Update,
|
.update = virCPUs390Update,
|
||||||
|
@ -304,7 +304,7 @@ virCPUx86DataClear(virCPUx86Data *data)
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
x86FreeCPUData(virCPUDataPtr data)
|
virCPUx86DataFree(virCPUDataPtr data)
|
||||||
{
|
{
|
||||||
if (!data)
|
if (!data)
|
||||||
return;
|
return;
|
||||||
@ -1455,7 +1455,7 @@ virCPUx86DataParse(xmlXPathContextPtr ctxt)
|
|||||||
return cpuData;
|
return cpuData;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
x86FreeCPUData(cpuData);
|
virCPUx86DataFree(cpuData);
|
||||||
cpuData = NULL;
|
cpuData = NULL;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
@ -1641,7 +1641,7 @@ x86Compute(virCPUDefPtr host,
|
|||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
x86FreeCPUData(guestData);
|
virCPUx86DataFree(guestData);
|
||||||
ret = VIR_CPU_COMPARE_ERROR;
|
ret = VIR_CPU_COMPARE_ERROR;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
@ -2033,12 +2033,12 @@ x86Encode(virArch arch,
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
x86FreeCPUData(data_forced);
|
virCPUx86DataFree(data_forced);
|
||||||
x86FreeCPUData(data_required);
|
virCPUx86DataFree(data_required);
|
||||||
x86FreeCPUData(data_optional);
|
virCPUx86DataFree(data_optional);
|
||||||
x86FreeCPUData(data_disabled);
|
virCPUx86DataFree(data_disabled);
|
||||||
x86FreeCPUData(data_forbidden);
|
virCPUx86DataFree(data_forbidden);
|
||||||
x86FreeCPUData(data_vendor);
|
virCPUx86DataFree(data_vendor);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2380,7 +2380,7 @@ x86NodeData(virArch arch)
|
|||||||
return cpuData;
|
return cpuData;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
x86FreeCPUData(cpuData);
|
virCPUx86DataFree(cpuData);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -2718,7 +2718,7 @@ struct cpuArchDriver cpuDriverX86 = {
|
|||||||
.compare = virCPUx86Compare,
|
.compare = virCPUx86Compare,
|
||||||
.decode = x86DecodeCPUData,
|
.decode = x86DecodeCPUData,
|
||||||
.encode = x86Encode,
|
.encode = x86Encode,
|
||||||
.free = x86FreeCPUData,
|
.dataFree = virCPUx86DataFree,
|
||||||
#if defined(__i386__) || defined(__x86_64__)
|
#if defined(__i386__) || defined(__x86_64__)
|
||||||
.nodeData = x86NodeData,
|
.nodeData = x86NodeData,
|
||||||
#else
|
#else
|
||||||
|
@ -984,7 +984,6 @@ virSecretObjSetValueSize;
|
|||||||
# cpu/cpu.h
|
# cpu/cpu.h
|
||||||
cpuBaseline;
|
cpuBaseline;
|
||||||
cpuBaselineXML;
|
cpuBaselineXML;
|
||||||
cpuDataFree;
|
|
||||||
cpuDecode;
|
cpuDecode;
|
||||||
cpuEncode;
|
cpuEncode;
|
||||||
cpuNodeData;
|
cpuNodeData;
|
||||||
@ -994,6 +993,7 @@ virCPUCompareXML;
|
|||||||
virCPUConvertLegacy;
|
virCPUConvertLegacy;
|
||||||
virCPUDataCheckFeature;
|
virCPUDataCheckFeature;
|
||||||
virCPUDataFormat;
|
virCPUDataFormat;
|
||||||
|
virCPUDataFree;
|
||||||
virCPUDataNew;
|
virCPUDataNew;
|
||||||
virCPUDataParse;
|
virCPUDataParse;
|
||||||
virCPUGetModels;
|
virCPUGetModels;
|
||||||
|
@ -145,7 +145,7 @@ libxlCapsNodeData(virCPUDefPtr cpu, libxl_hwcap hwcap,
|
|||||||
return cpudata;
|
return cpudata;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
cpuDataFree(cpudata);
|
virCPUDataFree(cpudata);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -198,7 +198,7 @@ libxlCapsInitCPU(virCapsPtr caps, libxl_physinfo *phy_info,
|
|||||||
}
|
}
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
cpuDataFree(data);
|
virCPUDataFree(data);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@ -1090,7 +1090,7 @@ virQEMUCapsInitCPU(virCapsPtr caps,
|
|||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
cpuDataFree(data);
|
virCPUDataFree(data);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@ -6571,7 +6571,7 @@ qemuMonitorJSONParseCPUx86Features(virJSONValuePtr data)
|
|||||||
return cpudata;
|
return cpudata;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
cpuDataFree(cpudata);
|
virCPUDataFree(cpudata);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1606,7 +1606,7 @@ qemuParseCommandLineCPU(virDomainDefPtr dom,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
is_32bit = (virCPUDataCheckFeature(cpuData, "lm") != 1);
|
is_32bit = (virCPUDataCheckFeature(cpuData, "lm") != 1);
|
||||||
cpuDataFree(cpuData);
|
virCPUDataFree(cpuData);
|
||||||
} else if (model) {
|
} else if (model) {
|
||||||
is_32bit = STREQ(model, "qemu32");
|
is_32bit = STREQ(model, "qemu32");
|
||||||
}
|
}
|
||||||
|
@ -3815,7 +3815,7 @@ qemuProcessVerifyGuestCPU(virQEMUDriverPtr driver,
|
|||||||
ret = true;
|
ret = true;
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
cpuDataFree(guestcpu);
|
virCPUDataFree(guestcpu);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -118,7 +118,7 @@ vmwareCapsInit(void)
|
|||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
virCPUDefFree(cpu);
|
virCPUDefFree(cpu);
|
||||||
cpuDataFree(data);
|
virCPUDataFree(data);
|
||||||
|
|
||||||
return caps;
|
return caps;
|
||||||
|
|
||||||
|
@ -151,7 +151,7 @@ vzBuildCapabilities(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
cpuDataFree(data);
|
virCPUDataFree(data);
|
||||||
return caps;
|
return caps;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
|
@ -439,7 +439,7 @@ cpuTestHasFeature(const void *arg)
|
|||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
cpuDataFree(hostData);
|
virCPUDataFree(hostData);
|
||||||
virCPUDefFree(host);
|
virCPUDefFree(host);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -489,7 +489,7 @@ cpuTestCPUID(bool guest, const void *arg)
|
|||||||
cleanup:
|
cleanup:
|
||||||
VIR_FREE(hostFile);
|
VIR_FREE(hostFile);
|
||||||
VIR_FREE(host);
|
VIR_FREE(host);
|
||||||
cpuDataFree(hostData);
|
virCPUDataFree(hostData);
|
||||||
virCPUDefFree(cpu);
|
virCPUDefFree(cpu);
|
||||||
VIR_FREE(result);
|
VIR_FREE(result);
|
||||||
return ret;
|
return ret;
|
||||||
@ -549,7 +549,7 @@ cpuTestJSONCPUID(const void *arg)
|
|||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
qemuMonitorTestFree(testMon);
|
qemuMonitorTestFree(testMon);
|
||||||
cpuDataFree(cpuData);
|
virCPUDataFree(cpuData);
|
||||||
virCPUDefFree(cpu);
|
virCPUDefFree(cpu);
|
||||||
VIR_FREE(result);
|
VIR_FREE(result);
|
||||||
VIR_FREE(json);
|
VIR_FREE(json);
|
||||||
|
@ -2410,7 +2410,7 @@ testQemuMonitorJSONGetCPUData(const void *opaque)
|
|||||||
VIR_FREE(dataFile);
|
VIR_FREE(dataFile);
|
||||||
VIR_FREE(jsonStr);
|
VIR_FREE(jsonStr);
|
||||||
VIR_FREE(actual);
|
VIR_FREE(actual);
|
||||||
cpuDataFree(cpuData);
|
virCPUDataFree(cpuData);
|
||||||
qemuMonitorTestFree(test);
|
qemuMonitorTestFree(test);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -2455,7 +2455,7 @@ testQemuMonitorJSONGetNonExistingCPUData(const void *opaque)
|
|||||||
ret = 0;
|
ret = 0;
|
||||||
cleanup:
|
cleanup:
|
||||||
qemuMonitorTestFree(test);
|
qemuMonitorTestFree(test);
|
||||||
cpuDataFree(cpuData);
|
virCPUDataFree(cpuData);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user