[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