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 Workerstatic 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 Workerstatic 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