blob: 28bcd14e68bcdf84799fa3897ec40965e14499e5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
/* libhw_cr/tests/test_alarmclock.c - Tests for host_alarmclock.c
*
* Copyright (C) 2025 Luke T. Shumaker <lukeshu@lukeshu.com>
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
#define IMPLEMENTATION_FOR_LIBHW_GENERIC_ALARMCLOCK_H YES
#include <libhw/generic/alarmclock.h>
#define IMPLEMENTATION_FOR_LIBHW_HOST_ALARMCLOCK_H YES
#include <libhw/host_alarmclock.h>
#include "test.h"
static void intrhandler(void *) {}
int main() {
struct hostclock alarmclock = {
.clock_id = CLOCK_MONOTONIC,
};
int arg1 = 42;
int arg2 = 67;
struct alarmclock_trigger trig1 = {};
struct alarmclock_trigger trig2 = {};
uint64_t now = hostclock_get_time_ns(&alarmclock);
hostclock_add_trigger(&alarmclock, &trig1, now+(20*NS_PER_S), intrhandler, &arg1);
test_assert(alarmclock.queue.front == &trig1);
test_assert(trig1.front == NULL);
test_assert(trig1.rear == NULL);
test_assert(alarmclock.queue.rear == &trig1);
hostclock_add_trigger(&alarmclock, &trig2, now+(30*NS_PER_S), intrhandler, &arg2);
test_assert(alarmclock.queue.front == &trig1);
test_assert(trig1.front == NULL);
test_assert(trig1.rear == &trig2);
test_assert(trig2.front == &trig1);
test_assert(trig2.rear == NULL);
test_assert(alarmclock.queue.rear == &trig2);
hostclock_del_trigger(&alarmclock, &trig2);
test_assert(alarmclock.queue.front == &trig1);
test_assert(trig1.front == NULL);
test_assert(trig1.rear == NULL);
test_assert(alarmclock.queue.rear == &trig1);
hostclock_del_trigger(&alarmclock, &trig1);
test_assert(alarmclock.queue.front == NULL);
test_assert(alarmclock.queue.rear == NULL);
return 0;
}
|