The API is useful for creating virCPUData in a hypervisor driver from
data we got by querying the hypervisor.
Signed-off-by: Jiri Denemark <jdenemar(a)redhat.com>
---
Notes:
Version 3:
- ACKed in v2
- better commit message
Version 2:
- no change
src/cpu/cpu_x86.c | 22 ++++++++++++++++++++++
src/cpu/cpu_x86.h | 3 +++
src/libvirt_private.syms | 1 +
3 files changed, 26 insertions(+)
diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
index ab5e5257d..b3bccd176 100644
--- a/src/cpu/cpu_x86.c
+++ b/src/cpu/cpu_x86.c
@@ -2756,6 +2756,28 @@ virCPUx86DataSetVendor(virCPUDataPtr cpuData,
}
+int
+virCPUx86DataAddFeature(virCPUDataPtr cpuData,
+ const char *name)
+{
+ virCPUx86FeaturePtr feature;
+ virCPUx86MapPtr map;
+
+ if (!(map = virCPUx86GetMap()))
+ return -1;
+
+ /* ignore unknown features */
+ if (!(feature = x86FeatureFind(map, name)) &&
+ !(feature = x86FeatureFindInternal(name)))
+ return 0;
+
+ if (x86DataAdd(&cpuData->data.x86, &feature->data) < 0)
+ return -1;
+
+ return 0;
+}
+
+
struct cpuArchDriver cpuDriverX86 = {
.name = "x86",
.arch = archs,
diff --git a/src/cpu/cpu_x86.h b/src/cpu/cpu_x86.h
index ab5394914..91ec43fea 100644
--- a/src/cpu/cpu_x86.h
+++ b/src/cpu/cpu_x86.h
@@ -39,4 +39,7 @@ int virCPUx86DataSetSignature(virCPUDataPtr cpuData,
int virCPUx86DataSetVendor(virCPUDataPtr cpuData,
const char *vendor);
+int virCPUx86DataAddFeature(virCPUDataPtr cpuData,
+ const char *name);
+
#endif /* __VIR_CPU_X86_H__ */
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index e39c89f0e..30679107e 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -1003,6 +1003,7 @@ virCPUUpdate;
# cpu/cpu_x86.h
virCPUx86DataAddCPUID;
+virCPUx86DataAddFeature;
virCPUx86DataSetSignature;
virCPUx86DataSetVendor;
--
2.11.1