summaryrefslogtreecommitdiff
path: root/libhw/host_alarmclock.c
diff options
context:
space:
mode:
Diffstat (limited to 'libhw/host_alarmclock.c')
-rw-r--r--libhw/host_alarmclock.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/libhw/host_alarmclock.c b/libhw/host_alarmclock.c
index 4f43fc7..1d26f1a 100644
--- a/libhw/host_alarmclock.c
+++ b/libhw/host_alarmclock.c
@@ -110,7 +110,7 @@ static bool hostclock_add_trigger(implements_alarmclock *_alarmclock,
trigger->cb = cb;
trigger->cb_arg = cb_arg;
- cr_disable_interrupts();
+ bool saved = cr_save_and_disable_interrupts();
struct alarmclock_trigger **dst = &alarmclock->queue;
while (*dst && fire_at_ns >= (*dst)->fire_at_ns)
dst = &(*dst)->next;
@@ -145,7 +145,7 @@ static bool hostclock_add_trigger(implements_alarmclock *_alarmclock,
if (timer_settime(alarmclock->timer_id, TIMER_ABSTIME, &alarmspec, NULL) != 0)
error(1, errno, "timer_settime");
}
- cr_enable_interrupts();
+ cr_restore_interrupts(saved);
return false;
}
@@ -158,7 +158,7 @@ static void hostclock_del_trigger(implements_alarmclock *_alarmclock,
assert(alarmclock);
assert(trigger);
- cr_disable_interrupts();
+ bool saved = cr_save_and_disable_interrupts();
if (trigger->alarmclock == alarmclock) {
if (!trigger->prev)
alarmclock->queue = trigger->next;
@@ -170,5 +170,5 @@ static void hostclock_del_trigger(implements_alarmclock *_alarmclock,
trigger->prev = NULL;
trigger->next = NULL;
}
- cr_enable_interrupts();
+ cr_restore_interrupts(saved);
}