xref: /aosp_15_r20/external/ltp/include/lapi/common_timers.h (revision 49cdfc7efb34551c7342be41a7384b9c40d7cab7)
1*49cdfc7eSAndroid Build Coastguard Worker /*
2*49cdfc7eSAndroid Build Coastguard Worker  * File: common_timers.h
3*49cdfc7eSAndroid Build Coastguard Worker  *
4*49cdfc7eSAndroid Build Coastguard Worker  * Keep all the common defines/checks for the timer tests here
5*49cdfc7eSAndroid Build Coastguard Worker  */
6*49cdfc7eSAndroid Build Coastguard Worker 
7*49cdfc7eSAndroid Build Coastguard Worker #ifndef LAPI_COMMON_TIMERS_H__
8*49cdfc7eSAndroid Build Coastguard Worker #define LAPI_COMMON_TIMERS_H__
9*49cdfc7eSAndroid Build Coastguard Worker 
10*49cdfc7eSAndroid Build Coastguard Worker #include "config.h"
11*49cdfc7eSAndroid Build Coastguard Worker #include "lapi/syscalls.h"
12*49cdfc7eSAndroid Build Coastguard Worker #include "lapi/posix_clocks.h"
13*49cdfc7eSAndroid Build Coastguard Worker 
14*49cdfc7eSAndroid Build Coastguard Worker #ifndef NSEC_PER_SEC
15*49cdfc7eSAndroid Build Coastguard Worker #define NSEC_PER_SEC (1000000000LL)
16*49cdfc7eSAndroid Build Coastguard Worker #endif
17*49cdfc7eSAndroid Build Coastguard Worker 
18*49cdfc7eSAndroid Build Coastguard Worker static const clock_t clock_list[] = {
19*49cdfc7eSAndroid Build Coastguard Worker 	CLOCK_REALTIME,
20*49cdfc7eSAndroid Build Coastguard Worker 	CLOCK_MONOTONIC,
21*49cdfc7eSAndroid Build Coastguard Worker 	CLOCK_PROCESS_CPUTIME_ID,
22*49cdfc7eSAndroid Build Coastguard Worker 	CLOCK_THREAD_CPUTIME_ID,
23*49cdfc7eSAndroid Build Coastguard Worker 	CLOCK_BOOTTIME,
24*49cdfc7eSAndroid Build Coastguard Worker 	CLOCK_BOOTTIME_ALARM,
25*49cdfc7eSAndroid Build Coastguard Worker 	CLOCK_REALTIME_ALARM,
26*49cdfc7eSAndroid Build Coastguard Worker 	CLOCK_TAI,
27*49cdfc7eSAndroid Build Coastguard Worker };
28*49cdfc7eSAndroid Build Coastguard Worker /* CLOCKS_DEFINED is the number of clock sources defined for sure */
29*49cdfc7eSAndroid Build Coastguard Worker #define CLOCKS_DEFINED (sizeof(clock_list) / sizeof(*clock_list))
30*49cdfc7eSAndroid Build Coastguard Worker /* MAX_CLOCKS is the maximum number of clock sources supported by kernel */
31*49cdfc7eSAndroid Build Coastguard Worker #define MAX_CLOCKS 16
32*49cdfc7eSAndroid Build Coastguard Worker 
33*49cdfc7eSAndroid Build Coastguard Worker #define CLOCK_TO_STR(def_name)	\
34*49cdfc7eSAndroid Build Coastguard Worker 	case def_name:		\
35*49cdfc7eSAndroid Build Coastguard Worker 		return #def_name;
36*49cdfc7eSAndroid Build Coastguard Worker 
get_clock_str(const int clock_id)37*49cdfc7eSAndroid Build Coastguard Worker static inline const char *get_clock_str(const int clock_id)
38*49cdfc7eSAndroid Build Coastguard Worker {
39*49cdfc7eSAndroid Build Coastguard Worker 	switch (clock_id) {
40*49cdfc7eSAndroid Build Coastguard Worker 	CLOCK_TO_STR(CLOCK_REALTIME);
41*49cdfc7eSAndroid Build Coastguard Worker 	CLOCK_TO_STR(CLOCK_MONOTONIC);
42*49cdfc7eSAndroid Build Coastguard Worker 	CLOCK_TO_STR(CLOCK_PROCESS_CPUTIME_ID);
43*49cdfc7eSAndroid Build Coastguard Worker 	CLOCK_TO_STR(CLOCK_THREAD_CPUTIME_ID);
44*49cdfc7eSAndroid Build Coastguard Worker 	CLOCK_TO_STR(CLOCK_BOOTTIME);
45*49cdfc7eSAndroid Build Coastguard Worker 	CLOCK_TO_STR(CLOCK_BOOTTIME_ALARM);
46*49cdfc7eSAndroid Build Coastguard Worker 	CLOCK_TO_STR(CLOCK_REALTIME_ALARM);
47*49cdfc7eSAndroid Build Coastguard Worker 	CLOCK_TO_STR(CLOCK_TAI);
48*49cdfc7eSAndroid Build Coastguard Worker 	default:
49*49cdfc7eSAndroid Build Coastguard Worker 		return "CLOCK_!?!?!?";
50*49cdfc7eSAndroid Build Coastguard Worker 	}
51*49cdfc7eSAndroid Build Coastguard Worker }
52*49cdfc7eSAndroid Build Coastguard Worker 
possibly_unsupported(clock_t clock)53*49cdfc7eSAndroid Build Coastguard Worker static inline int possibly_unsupported(clock_t clock)
54*49cdfc7eSAndroid Build Coastguard Worker {
55*49cdfc7eSAndroid Build Coastguard Worker 	switch (clock) {
56*49cdfc7eSAndroid Build Coastguard Worker 	case CLOCK_BOOTTIME:
57*49cdfc7eSAndroid Build Coastguard Worker 	case CLOCK_BOOTTIME_ALARM:
58*49cdfc7eSAndroid Build Coastguard Worker 	case CLOCK_REALTIME_ALARM:
59*49cdfc7eSAndroid Build Coastguard Worker 	case CLOCK_TAI:
60*49cdfc7eSAndroid Build Coastguard Worker 			return 1;
61*49cdfc7eSAndroid Build Coastguard Worker 	default:
62*49cdfc7eSAndroid Build Coastguard Worker 			return 0;
63*49cdfc7eSAndroid Build Coastguard Worker 	}
64*49cdfc7eSAndroid Build Coastguard Worker }
65*49cdfc7eSAndroid Build Coastguard Worker 
66*49cdfc7eSAndroid Build Coastguard Worker #include "lapi/syscalls.h"
67*49cdfc7eSAndroid Build Coastguard Worker 
68*49cdfc7eSAndroid Build Coastguard Worker #include <time.h>
69*49cdfc7eSAndroid Build Coastguard Worker #include <unistd.h>
70*49cdfc7eSAndroid Build Coastguard Worker 
71*49cdfc7eSAndroid Build Coastguard Worker /* timer_t in kernel(int) is different from  Glibc definition(void*).
72*49cdfc7eSAndroid Build Coastguard Worker  * Use the kernel definition for syscall tests
73*49cdfc7eSAndroid Build Coastguard Worker  */
74*49cdfc7eSAndroid Build Coastguard Worker typedef int kernel_timer_t;
75*49cdfc7eSAndroid Build Coastguard Worker 
76*49cdfc7eSAndroid Build Coastguard Worker #endif /* LAPI_COMMON_TIMERS_H__ */
77