]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
conf: Fix @mode member of _virDomainTimerDef struct
authorMichal Privoznik <mprivozn@redhat.com>
Sun, 23 Jan 2022 21:08:03 +0000 (22:08 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Wed, 26 Jan 2022 09:49:24 +0000 (10:49 +0100)
The @mode member of the _virDomainTimerDef struct stores
values of the virDomainTimerModeType enum, or -1 for the
default value (when user provided no value in XML).

This is needlessly complicated. Introduce new value to the enum
which reflects the default state.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/conf/domain_conf.c
src/conf/domain_conf.h
src/libxl/xen_common.c

index 9358ce937c6da18fcbd9fa4fec4c259986d6b4e2..088546692bfefa1f2c659150375cbb266fed8ade 100644 (file)
@@ -1207,6 +1207,7 @@ VIR_ENUM_IMPL(virDomainTimerTickpolicy,
 
 VIR_ENUM_IMPL(virDomainTimerMode,
               VIR_DOMAIN_TIMER_MODE_LAST,
+              "none",
               "auto",
               "native",
               "emulate",
@@ -5001,7 +5002,7 @@ virDomainDefPostParseTimer(virDomainDef *def)
                 return -1;
              }
 
-            if (timer->mode != -1) {
+            if (timer->mode) {
                 virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
                                _("timer %s doesn't support setting of "
                                  "timer mode"),
@@ -12053,10 +12054,9 @@ virDomainTimerDefParseXML(xmlNodePtr node,
         goto error;
     }
 
-    def->mode = -1;
     mode = virXMLPropString(node, "mode");
     if (mode != NULL) {
-        if ((def->mode = virDomainTimerModeTypeFromString(mode)) < 0) {
+        if ((def->mode = virDomainTimerModeTypeFromString(mode)) <= 0) {
             virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
                            _("unknown timer mode '%s'"), mode);
             goto error;
@@ -26133,16 +26133,9 @@ virDomainTimerDefFormat(virBuffer *buf,
         if (def->frequency > 0)
             virBufferAsprintf(buf, " frequency='%llu'", def->frequency);
 
-        if (def->mode != -1) {
-            const char *mode
-                = virDomainTimerModeTypeToString(def->mode);
-            if (!mode) {
-                virReportError(VIR_ERR_INTERNAL_ERROR,
-                               _("unexpected timer mode %d"),
-                               def->mode);
-                return -1;
-            }
-            virBufferAsprintf(buf, " mode='%s'", mode);
+        if (def->mode) {
+            virBufferAsprintf(buf, " mode='%s'",
+                              virDomainTimerModeTypeToString(def->mode));
         }
     }
 
index 975140a2185708c308457e6f0d8413fa27f1d3d2..0731007355d5f47ab8501872ceca7ba405d2b49a 100644 (file)
@@ -2383,7 +2383,8 @@ typedef enum {
 } virDomainTimerTickpolicyType;
 
 typedef enum {
-    VIR_DOMAIN_TIMER_MODE_AUTO = 0,
+    VIR_DOMAIN_TIMER_MODE_NONE = 0,
+    VIR_DOMAIN_TIMER_MODE_AUTO,
     VIR_DOMAIN_TIMER_MODE_NATIVE,
     VIR_DOMAIN_TIMER_MODE_EMULATE,
     VIR_DOMAIN_TIMER_MODE_PARAVIRT,
@@ -2422,7 +2423,7 @@ struct _virDomainTimerDef {
 
     /* frequency & mode are only valid for name='tsc' */
     unsigned long long frequency; /* in Hz, unspecified = 0 */
-    int mode;       /* auto|native|emulate|paravirt */
+    int mode;   /* enum virDomainTimerModeType */
 };
 
 typedef enum {
index 81b9e2a3effef05afbd1f9fd962d73304169f42d..fc975f129919cf1ab58ca42c353fc2e32484e5b7 100644 (file)
@@ -627,7 +627,7 @@ xenParseHypervisorFeatures(virConf *conf, virDomainDef *def)
             timer->name = VIR_DOMAIN_TIMER_NAME_HPET;
             timer->present = virTristateBoolFromBool(val);
             timer->tickpolicy = VIR_DOMAIN_TIMER_TICKPOLICY_NONE;
-            timer->mode = -1;
+            timer->mode = VIR_DOMAIN_TIMER_MODE_NONE;
             timer->track = VIR_DOMAIN_TIMER_TRACK_NONE;
 
             def->clock.timers[def->clock.ntimers - 1] = timer;