]> xenbits.xensource.com Git - libvirt.git/commitdiff
cpu_conf: Introduce virCPUDefFilterFeatures
authorJiri Denemark <jdenemar@redhat.com>
Fri, 7 Jun 2019 12:07:10 +0000 (14:07 +0200)
committerJiri Denemark <jdenemar@redhat.com>
Wed, 19 Jun 2019 22:22:37 +0000 (00:22 +0200)
This new internal API can be used for in place filtering of CPU features
in virCPUDef.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/conf/cpu_conf.c
src/conf/cpu_conf.h
src/libvirt_private.syms

index 825df88246f48d87900662111b04c3a360558f5f..675d214c50194ee53933c09fe23e92e3b630d118 100644 (file)
@@ -908,6 +908,28 @@ virCPUDefFindFeature(virCPUDefPtr def,
 }
 
 
+int
+virCPUDefFilterFeatures(virCPUDefPtr cpu,
+                        virCPUDefFeatureFilter filter,
+                        void *opaque)
+{
+    size_t i = 0;
+
+    while (i < cpu->nfeatures) {
+        if (filter(cpu->features[i].name, opaque)) {
+            i++;
+            continue;
+        }
+
+        VIR_FREE(cpu->features[i].name);
+        if (VIR_DELETE_ELEMENT_INPLACE(cpu->features, i, cpu->nfeatures) < 0)
+            return -1;
+    }
+
+    return 0;
+}
+
+
 bool
 virCPUDefIsEqual(virCPUDefPtr src,
                  virCPUDefPtr dst,
index 562e0de531b8e1ba03a11bfe7dc4be163461b5fa..906ef5368ef30f223be919315e344b3361ed4952 100644 (file)
@@ -219,6 +219,11 @@ virCPUFeatureDefPtr
 virCPUDefFindFeature(virCPUDefPtr def,
                      const char *name);
 
+int
+virCPUDefFilterFeatures(virCPUDefPtr cpu,
+                        virCPUDefFeatureFilter filter,
+                        void *opaque);
+
 virCPUDefPtr *
 virCPUDefListParse(const char **xmlCPUs,
                    unsigned int ncpus,
index 0e6a39b59beb2881e796ab9735c7111752c204ad..228cd929b4d379f7a3ee9356f2afa545873f3d33 100644 (file)
@@ -77,6 +77,7 @@ virCPUDefCopy;
 virCPUDefCopyModel;
 virCPUDefCopyModelFilter;
 virCPUDefCopyWithoutModel;
+virCPUDefFilterFeatures;
 virCPUDefFindFeature;
 virCPUDefFormat;
 virCPUDefFormatBuf;