aboutsummaryrefslogtreecommitdiffstats
path: root/sys/freebsd/ktimer.txt
blob: 63240a287f1bb8902808af50ddaa1a183ff6b791 (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
# Copyright 2020 syzkaller project authors. All rights reserved.
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.

include <time.h>
include <signal.h>

resource timerid[int32]

type signalno int32[0:33]

ktimer_create(id flags[clock_id], evp ptr[in, sigevent], timerid ptr[out, timerid])
ktimer_delete(timerid timerid)
ktimer_settime(timerid timerid, flags flags[timer_flags], value ptr[in, itimerspec], ovalue ptr[out, itimerspec])
ktimer_gettime(timerid timerid, value ptr[out, itimerspec])
ktimer_getoverrun(timerid timerid)

define SIGEVENT_SIZE	sizeof(struct sigevent)

sigevent {
	notify	flags[sigev_notify, int32]
	signo	signalno
	val	sigval
	u	sigevent_u
} [size[SIGEVENT_SIZE]]

sigevent_u [
	tid		pid
	thr		sigevent_thread
	ke_flags	flags[evflags, int16]
	spare		array[intptr, 8]
]

sigevent_thread {
	func	ptr[in, text[target]]
	attr	buffer[in]
}

itimerspec {
	interv	timespec
	value	timespec
}

sigval [
	sival_int	int32
	sival_ptr	intptr
	sigval_int	int32
	sigval_ptr	intptr
]

sigev_notify = SIGEV_NONE, SIGEV_SIGNAL, SIGEV_THREAD, SIGEV_KEVENT, SIGEV_THREAD_ID