From bf1a881715c905c67f7d38dcd5bd6c2afbff1f9b Mon Sep 17 00:00:00 2001 From: Jiri Denemark Date: Tue, 11 Apr 2017 20:45:07 +0200 Subject: [PATCH] cpu: Introduce virCPUGetHostIsSupported Sometimes we want to call virCPUGetHost only when it is implemented for a given architecture to avoid logging expected and possibly misleading errors. The new virCPUGetHostIsSupported API may be used to guard such calls to virCPUGetHost. Signed-off-by: Jiri Denemark --- src/cpu/cpu.c | 20 ++++++++++++++++++++ src/cpu/cpu.h | 3 +++ src/libvirt_private.syms | 1 + 3 files changed, 24 insertions(+) diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c index 8a407ac18c..702b14dbb7 100644 --- a/src/cpu/cpu.c +++ b/src/cpu/cpu.c @@ -357,6 +357,26 @@ virCPUDataFree(virCPUDataPtr data) } +/** + * virCPUGetHostIsSupported: + * + * @arch: CPU architecture + * + * Check whether virCPUGetHost is supported for @arch. + * + * Returns true if virCPUGetHost is supported, false otherwise. + */ +bool +virCPUGetHostIsSupported(virArch arch) +{ + struct cpuArchDriver *driver; + + VIR_DEBUG("arch=%s", virArchToString(arch)); + + return (driver = cpuGetSubDriver(arch)) && driver->getHost; +} + + /** * virCPUGetHost: * diff --git a/src/cpu/cpu.h b/src/cpu/cpu.h index 352445c40b..c6ca111e97 100644 --- a/src/cpu/cpu.h +++ b/src/cpu/cpu.h @@ -183,6 +183,9 @@ virCPUDataNew(virArch arch); void virCPUDataFree(virCPUDataPtr data); +bool +virCPUGetHostIsSupported(virArch arch); + virCPUDefPtr virCPUGetHost(virArch arch, virCPUType type, diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index ba6b05d4be..181e178753 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1039,6 +1039,7 @@ virCPUDataNew; virCPUDataParse; virCPUExpandFeatures; virCPUGetHost; +virCPUGetHostIsSupported; virCPUGetModels; virCPUProbeHost; virCPUTranslate;