[libvirt] [PATCH 3/3] conf: capabilities: Refactor API for setting guest capability features

Ján Tomko jtomko at redhat.com
Tue Nov 12 17:13:54 UTC 2019


On Tue, Nov 12, 2019 at 02:33:46PM +0100, Peter Krempa wrote:
>Remove the need to pass around strings and switch to the enum values
>instead.
>
>Signed-off-by: Peter Krempa <pkrempa at redhat.com>
>---
> src/conf/capabilities.c        | 68 ++++++++++++++++++----------------
> src/conf/capabilities.h        | 11 ++++--
> src/libvirt_private.syms       |  1 +
> src/libxl/libxl_capabilities.c | 46 +++++++----------------
> src/qemu/qemu_capabilities.c   | 34 +++++++----------
> src/test/test_driver.c         |  6 +--
> tests/testutilsqemu.c          |  6 +--
> 7 files changed, 76 insertions(+), 96 deletions(-)
>
>diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c
>index 1666e1e496..6e5dde7394 100644
>--- a/src/conf/capabilities.c
>+++ b/src/conf/capabilities.c
>@@ -557,49 +557,55 @@ static const struct virCapsGuestFeatureInfo virCapsGuestFeatureInfos[VIR_CAPS_GU
> };
>
>
>+static void
>+virCapabilitiesAddGuestFeatureInternal(virCapsGuestPtr guest,
>+                                       virCapsGuestFeatureType feature,
>+                                       bool defaultOn,
>+                                       bool toggle)
>+{
>+    guest->features[feature].present = true;
>+
>+    if (virCapsGuestFeatureInfos[feature].togglesRequired) {
>+        guest->features[feature].defaultOn = virTristateSwitchFromBool(defaultOn);
>+        guest->features[feature].toggle = virTristateBoolFromBool(toggle);
>+    }
>+}
>+
>+
> /**
>  * virCapabilitiesAddGuestFeature:
>  * @guest: guest to associate feature with
>- * @name: name of feature ('pae', 'acpi', 'apic')
>- * @defaultOn: true if it defaults to on
>- * @toggle: true if its state can be toggled
>+ * @feature: feature to add
>  *
>  * Registers a feature for a guest domain.
>  */
>-virCapsGuestFeaturePtr
>+void
> virCapabilitiesAddGuestFeature(virCapsGuestPtr guest,
>-                               const char *name,
>-                               bool defaultOn,
>-                               bool toggle)
>+                               virCapsGuestFeatureType feature)
> {
>-    virCapsGuestFeaturePtr feature = NULL;
>-    bool togglesRequired = false;
>-    size_t i;
>-
>-    for (i = 0; i < VIR_CAPS_GUEST_FEATURE_TYPE_LAST; i++) {
>-        if (STRNEQ(name, virCapsGuestFeatureInfos[i].name))
>-            continue;
>-
>-        feature = guest->features + i;
>-        togglesRequired = virCapsGuestFeatureInfos[i].togglesRequired;
>-    }
>-
>-    if (!feature) {
>-        virReportError(VIR_ERR_INTERNAL_ERROR,
>-                       _("invalid feature '%s'"), name);
>-        return NULL;
>-    }
>-
>-    feature->present = true;
>+    virCapabilitiesAddGuestFeatureInternal(guest, feature, false, false);
>+}
>
>-    if (togglesRequired) {
>-        feature->defaultOn = virTristateSwitchFromBool(defaultOn);
>-        feature->toggle = virTristateBoolFromBool(toggle);
>-    }
>
>-    return feature;
>+/**
>+ * virCapabilitiesAddGuestFeatureToggle:

consider using 'WithToggle' instead of Toggle

Jano

>+ * @guest: guest to associate feature with
>+ * @feature: feature to add
>+ * @defaultOn: true if it defaults to on
>+ * @toggle: true if its state can be toggled
>+ *
>+ * Registers a feature with toggles for a guest domain.
>+ */
>+void
>+virCapabilitiesAddGuestFeatureToggle(virCapsGuestPtr guest,
>+                                     virCapsGuestFeatureType feature,
>+                                     bool defaultOn,
>+                                     bool toggle)
>+{
>+    virCapabilitiesAddGuestFeatureInternal(guest, feature, defaultOn, toggle);
> }
>
>+
> /**
>  * virCapabilitiesHostSecModelAddBaseLabel
>  * @secmodel: Security model to add a base label for
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20191112/3fff4adb/attachment-0001.sig>


More information about the libvir-list mailing list