diff options
Diffstat (limited to 'libhw/host_alarmclock.c')
-rw-r--r-- | libhw/host_alarmclock.c | 8 |
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); } |