diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c index b5669246b4..285c7eee44 100644 --- a/src/cpu/cpu.c +++ b/src/cpu/cpu.c @@ -1190,6 +1190,25 @@ virCPUDataIsIdentical(const virCPUData *a, } +/** + * virCPUDataGetHost: + * + */ +virCPUData* +virCPUDataGetHost(void) +{ + struct cpuArchDriver *driver; + + if (!(driver = cpuGetSubDriver(virArchFromHost()))) + return NULL; + + if (!driver->dataGetHost) + return NULL; + + return driver->dataGetHost(); +} + + /** * virCPUArchIsSupported: * diff --git a/src/cpu/cpu.h b/src/cpu/cpu.h index d3e5ca79f2..071b33fe76 100644 --- a/src/cpu/cpu.h +++ b/src/cpu/cpu.h @@ -130,6 +130,9 @@ typedef virCPUCompareResult (*virCPUArchDataIsIdentical)(const virCPUData *a, const virCPUData *b); +typedef virCPUData * +(*virCPUArchDataGetHost)(void); + struct cpuArchDriver { const char *name; const virArch *arch; @@ -155,6 +158,7 @@ struct cpuArchDriver { virCPUArchValidateFeatures validateFeatures; virCPUArchDataAddFeature dataAddFeature; virCPUArchDataIsIdentical dataIsIdentical; + virCPUArchDataGetHost dataGetHost; }; @@ -291,6 +295,9 @@ virCPUCompareResult virCPUDataIsIdentical(const virCPUData *a, const virCPUData *b); +virCPUData* +virCPUDataGetHost(void); + bool virCPUArchIsSupported(virArch arch); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 5a0282ee30..9ee8fda25f 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1462,6 +1462,7 @@ virCPUDataAddFeature; virCPUDataCheckFeature; virCPUDataFormat; virCPUDataFree; +virCPUDataGetHost; virCPUDataIsIdentical; virCPUDataNew; virCPUDataNewCopy;