summaryrefslogtreecommitdiff
path: root/libhw_generic/alarmclock.c
diff options
context:
space:
mode:
authorLuke T. Shumaker <lukeshu@lukeshu.com>2024-11-15 00:46:44 -0700
committerLuke T. Shumaker <lukeshu@lukeshu.com>2024-11-19 20:15:48 -0700
commit5e04cdf350f9cede59263b52c2271f7c066439e3 (patch)
tree9d731c522a5a6d7b1bd49293f0350da1f4e2bd47 /libhw_generic/alarmclock.c
parent712f71f1a7c6d06ce9f8f011c5d5c03add0e9d72 (diff)
libcr: Begone with PRE_RUNNABLE
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);
}