summaryrefslogtreecommitdiff
path: root/libhw_generic/alarmclock.c
diff options
context:
space:
mode:
Diffstat (limited to 'libhw_generic/alarmclock.c')
-rw-r--r--libhw_generic/alarmclock.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/libhw_generic/alarmclock.c b/libhw_generic/alarmclock.c
index 3364f72..a16f2f6 100644
--- a/libhw_generic/alarmclock.c
+++ b/libhw_generic/alarmclock.c
@@ -15,7 +15,10 @@ static void alarmclock_sleep_intrhandler(void *_arg) {
}
void alarmclock_sleep_until_ns(implements_alarmclock *clock, uint64_t abstime_ns) {
+ bool saved = cr_save_and_disable_interrupts();
cid_t cid = cr_getcid();
struct alarmclock_trigger trigger;
VCALL(clock, add_trigger, &trigger, abstime_ns, alarmclock_sleep_intrhandler, &cid);
+ cr_pause_and_yield();
+ cr_restore_interrupts(saved);
}