VIR_ENUM_IMPL(virDomainTimerTickpolicy,
VIR_DOMAIN_TIMER_TICKPOLICY_LAST,
+ "none",
"delay",
"catchup",
"merge",
if (timer->name == VIR_DOMAIN_TIMER_NAME_KVMCLOCK ||
timer->name == VIR_DOMAIN_TIMER_NAME_HYPERVCLOCK) {
- if (timer->tickpolicy != -1) {
+ if (timer->tickpolicy) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("timer %s doesn't support setting of "
"timer tickpolicy"),
&def->present) < 0)
goto error;
- def->tickpolicy = -1;
tickpolicy = virXMLPropString(node, "tickpolicy");
if (tickpolicy != NULL) {
- if ((def->tickpolicy = virDomainTimerTickpolicyTypeFromString(tickpolicy)) < 0) {
+ if ((def->tickpolicy = virDomainTimerTickpolicyTypeFromString(tickpolicy)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown timer tickpolicy '%s'"), tickpolicy);
goto error;
virTristateBoolTypeToString(def->present));
}
- if (def->tickpolicy != -1) {
- const char *tickpolicy
- = virDomainTimerTickpolicyTypeToString(def->tickpolicy);
- if (!tickpolicy) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("unexpected timer tickpolicy %d"),
- def->tickpolicy);
- return -1;
- }
- virBufferAsprintf(buf, " tickpolicy='%s'", tickpolicy);
+ if (def->tickpolicy) {
+ virBufferAsprintf(buf, " tickpolicy='%s'",
+ virDomainTimerTickpolicyTypeToString(def->tickpolicy));
}
if ((def->name == VIR_DOMAIN_TIMER_NAME_PLATFORM)
} virDomainTimerTrackType;
typedef enum {
- VIR_DOMAIN_TIMER_TICKPOLICY_DELAY = 0,
+ VIR_DOMAIN_TIMER_TICKPOLICY_NONE = 0,
+ VIR_DOMAIN_TIMER_TICKPOLICY_DELAY,
VIR_DOMAIN_TIMER_TICKPOLICY_CATCHUP,
VIR_DOMAIN_TIMER_TICKPOLICY_MERGE,
VIR_DOMAIN_TIMER_TICKPOLICY_DISCARD,
struct _virDomainTimerDef {
int name;
virTristateBool present;
- int tickpolicy; /* none|catchup|merge|discard */
+ int tickpolicy; /* enum virDomainTimerTickpolicyType */
virDomainTimerCatchupDef catchup;
timer = g_new0(virDomainTimerDef, 1);
timer->name = VIR_DOMAIN_TIMER_NAME_TSC;
timer->present = VIR_TRISTATE_BOOL_YES;
- timer->tickpolicy = -1;
+ timer->tickpolicy = VIR_DOMAIN_TIMER_TICKPOLICY_NONE;
timer->mode = VIR_DOMAIN_TIMER_MODE_AUTO;
timer->track = -1;
if (STREQ_NULLABLE(tscmode, "always_emulate"))
timer = g_new0(virDomainTimerDef, 1);
timer->name = VIR_DOMAIN_TIMER_NAME_HPET;
timer->present = virTristateBoolFromBool(val);
- timer->tickpolicy = -1;
+ timer->tickpolicy = VIR_DOMAIN_TIMER_TICKPOLICY_NONE;
timer->mode = -1;
timer->track = -1;
}
switch (def->timers[i]->tickpolicy) {
- case -1:
+ case VIR_DOMAIN_TIMER_TICKPOLICY_NONE:
case VIR_DOMAIN_TIMER_TICKPOLICY_DELAY:
/* This is the default - missed ticks delivered when
next scheduled, at normal rate */
case VIR_DOMAIN_TIMER_NAME_PIT:
switch (def->clock.timers[i]->tickpolicy) {
- case -1:
+ case VIR_DOMAIN_TIMER_TICKPOLICY_NONE:
case VIR_DOMAIN_TIMER_TICKPOLICY_DELAY:
/* delay is the default if we don't have kernel
(kvm-pit), otherwise, the default is catchup. */
case VIR_DOMAIN_TIMER_TICKPOLICY_DISCARD:
virBufferAddLit(&buf, ",kvm-no-adjvtime=on");
break;
- case -1:
+ case VIR_DOMAIN_TIMER_TICKPOLICY_NONE:
case VIR_DOMAIN_TIMER_TICKPOLICY_CATCHUP:
case VIR_DOMAIN_TIMER_TICKPOLICY_MERGE:
break;
}
switch (timer->tickpolicy) {
- case -1:
+ case VIR_DOMAIN_TIMER_TICKPOLICY_NONE:
case VIR_DOMAIN_TIMER_TICKPOLICY_DELAY:
/* This is the default - missed ticks delivered when
next scheduled, at normal rate */
case VIR_DOMAIN_TIMER_NAME_PIT:
switch (timer->tickpolicy) {
- case -1:
+ case VIR_DOMAIN_TIMER_TICKPOLICY_NONE:
case VIR_DOMAIN_TIMER_TICKPOLICY_DELAY:
case VIR_DOMAIN_TIMER_TICKPOLICY_DISCARD:
break;
}
switch (timer->tickpolicy) {
- case -1:
+ case VIR_DOMAIN_TIMER_TICKPOLICY_NONE:
case VIR_DOMAIN_TIMER_TICKPOLICY_DELAY:
case VIR_DOMAIN_TIMER_TICKPOLICY_DISCARD:
break;