]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
conf: Add virCPUDefAddFeatureIfMissing
authorJiri Denemark <jdenemar@redhat.com>
Thu, 19 Nov 2020 17:44:48 +0000 (18:44 +0100)
committerJiri Denemark <jdenemar@redhat.com>
Tue, 24 Nov 2020 19:13:23 +0000 (20:13 +0100)
This new function adds a feature to a CPU definition only if it is not
present there yet.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Tim Wiederhake <twiederh@redhat.com>
src/conf/cpu_conf.c
src/conf/cpu_conf.h
src/libvirt_private.syms

index 2367d36c3296f1dcef2c95cfff3d25d74f9e5c6d..5ff87cb41c851389d7ae737b69387c8eb5eaed23 100644 (file)
@@ -861,6 +861,7 @@ virCPUDefFormatBuf(virBufferPtr buf,
 typedef enum {
     VIR_CPU_ADD_FEATURE_MODE_EXCLUSIVE, /* Fail if feature exists */
     VIR_CPU_ADD_FEATURE_MODE_UPDATE,    /* Add feature or update policy */
+    VIR_CPU_ADD_FEATURE_MODE_NEW,       /* Add feature if it does not exist */
 } virCPUDefAddFeatureMode;
 
 static int
@@ -876,6 +877,9 @@ virCPUDefAddFeatureInternal(virCPUDefPtr def,
 
     if ((feat = virCPUDefFindFeature(def, name))) {
         switch (mode) {
+        case VIR_CPU_ADD_FEATURE_MODE_NEW:
+            return 0;
+
         case VIR_CPU_ADD_FEATURE_MODE_UPDATE:
             feat->policy = policy;
             return 0;
@@ -920,6 +924,16 @@ virCPUDefAddFeature(virCPUDefPtr def,
 }
 
 
+int
+virCPUDefAddFeatureIfMissing(virCPUDefPtr def,
+                             const char *name,
+                             int policy)
+{
+    return virCPUDefAddFeatureInternal(def, name, policy,
+                                       VIR_CPU_ADD_FEATURE_MODE_NEW);
+}
+
+
 virCPUFeatureDefPtr
 virCPUDefFindFeature(virCPUDefPtr def,
                      const char *name)
index 3ef14b7932e7d7ee264d917c13d17cb74c8d72c7..b744b06c2d454279a26939a00ad3dea885d0fe78 100644 (file)
@@ -229,6 +229,11 @@ virCPUDefUpdateFeature(virCPUDefPtr cpu,
                        const char *name,
                        int policy);
 
+int
+virCPUDefAddFeatureIfMissing(virCPUDefPtr def,
+                             const char *name,
+                             int policy);
+
 virCPUFeatureDefPtr
 virCPUDefFindFeature(virCPUDefPtr def,
                      const char *name);
index 79a23f34cba2f7351c25724ddf43abf1f2ad6199..f5a8209efd011b68bd4d7d19404ddb080d68be85 100644 (file)
@@ -96,6 +96,7 @@ virDomainCheckpointTypeToString;
 virCPUCacheModeTypeFromString;
 virCPUCacheModeTypeToString;
 virCPUDefAddFeature;
+virCPUDefAddFeatureIfMissing;
 virCPUDefCheckFeatures;
 virCPUDefCopy;
 virCPUDefCopyModel;