1/*
2 * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _SYSTEM_USER_TIMER_DEFS_H
6#define _SYSTEM_USER_TIMER_DEFS_H
7
8
9#include <limits.h>
10#include <time.h>
11
12#include <SupportDefs.h>
13
14
15#define CLOCK_PROCESS_USER_CPUTIME_ID	((clockid_t)-4)
16	/* clock measuring the used user CPU time of the current process */
17
18// limits
19#define MAX_USER_TIMERS_PER_TEAM		_POSIX_TIMER_MAX
20	// maximum numbers of user-defined user timers (timer_create())
21#define MAX_USER_TIMER_OVERRUN_COUNT	INT_MAX
22	// cap value of a timer's overrun counter
23
24#if MAX_USER_TIMER_OVERRUN_COUNT < _POSIX_DELAYTIMER_MAX
25#	error "MAX_USER_TIMER_OVERRUN_COUNT < _POSIX_DELAYTIMER_MAX"
26#endif
27
28#define USER_TIMER_REAL_TIME_ID				0
29	// predefined ID for the real time timer
30#define USER_TIMER_TEAM_TOTAL_TIME_ID		1
31	// predefined ID for the team's total (kernel + user) time timer
32#define USER_TIMER_TEAM_USER_TIME_ID		2
33	// predefined ID for the team's user time timer
34#define USER_TIMER_FIRST_USER_DEFINED_ID	3
35	// first ID assigned to a user-defined timer (timer_create())
36
37// _kern_create_user_timer() flag:
38#define USER_TIMER_SIGNAL_THREAD			0x01
39	// send the signal to the thread instead of the team (valid only for thread
40	// timers)
41
42
43struct user_timer_info {
44	bigtime_t	remaining_time;
45	bigtime_t	interval;
46	uint32		overrun_count;
47};
48
49
50#endif	/* _SYSTEM_USER_TIMER_DEFS_H */
51