blob: 7b311c034002d15069309f36b6be630492c57099 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
/* libhw/alarmclock.c - Device-independent <libhw/generic/alarmclock.h> utilities
*
* Copyright (C) 2024 Luke T. Shumaker <lukeshu@lukeshu.com>
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
#include <libcr/coroutine.h>
#include <libmisc/vcall.h>
#include <libhw/generic/alarmclock.h>
static void alarmclock_sleep_intrhandler(void *_arg) {
cid_t *cid = _arg;
cr_unpause_from_intrhandler(*cid);
}
void alarmclock_sleep_until_ns(implements_alarmclock *clock, uint64_t abstime_ns) {
cid_t cid = cr_getcid();
struct alarmclock_trigger trigger;
VCALL(clock, add_trigger, &trigger, abstime_ns, alarmclock_sleep_intrhandler, &cid);
}
|