提交 6ef9c202 编写于 作者: J Jiri Denemark

cpu: Introduce virCPUValidateFeatures

This new API may be used to check whether all features used in a CPU
definition are valid (e.g., libvirt knows their name, their policy is
supported, etc.). Leaving this API unimplemented in an arch subdriver
means libvirt does not restrict CPU features usable on the associated
architectures.
Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
上级 2ba32a86
......@@ -1076,3 +1076,32 @@ virCPUCopyMigratable(virArch arch,
else
return virCPUDefCopy(cpu);
}
/**
* virCPUValidateFeatures:
*
* @arch: CPU architecture
* @cpu: CPU definition to be checked
*
* Checks whether all CPU features specified in @cpu are valid.
*
* Returns 0 on success (all features are valid), -1 on error.
*/
int
virCPUValidateFeatures(virArch arch,
virCPUDefPtr cpu)
{
struct cpuArchDriver *driver;
VIR_DEBUG("arch=%s, cpu=%p, nfeatures=%zu",
virArchToString(arch), cpu, cpu->nfeatures);
if (!(driver = cpuGetSubDriver(arch)))
return -1;
if (driver->validateFeatures)
return driver->validateFeatures(cpu);
else
return 0;
}
......@@ -121,6 +121,9 @@ typedef int
typedef virCPUDefPtr
(*virCPUArchCopyMigratable)(virCPUDefPtr cpu);
typedef int
(*virCPUArchValidateFeatures)(virCPUDefPtr cpu);
struct cpuArchDriver {
const char *name;
const virArch *arch;
......@@ -142,6 +145,7 @@ struct cpuArchDriver {
virCPUArchConvertLegacy convertLegacy;
virCPUArchExpandFeatures expandFeatures;
virCPUArchCopyMigratable copyMigratable;
virCPUArchValidateFeatures validateFeatures;
};
......@@ -258,6 +262,11 @@ virCPUDefPtr
virCPUCopyMigratable(virArch arch,
virCPUDefPtr cpu);
int
virCPUValidateFeatures(virArch arch,
virCPUDefPtr cpu)
ATTRIBUTE_NONNULL(2);
/* virCPUDataFormat and virCPUDataParse are implemented for unit tests only and
* have no real-life usage
*/
......
......@@ -1097,6 +1097,7 @@ virCPUProbeHost;
virCPUTranslate;
virCPUUpdate;
virCPUUpdateLive;
virCPUValidateFeatures;
# cpu/cpu_x86.h
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册