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