linux/include/uapi/linux/time.h

/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_TIME_H
#define _UAPI_LINUX_TIME_H

#include <linux/types.h>
#include <linux/time_types.h>

#ifndef __KERNEL__
#ifndef _STRUCT_TIMESPEC
#define _STRUCT_TIMESPEC
struct timespec {
	__kernel_old_time_t	tv_sec;		/* seconds */
	long			tv_nsec;	/* nanoseconds */
};
#endif

struct timeval {
	__kernel_old_time_t	tv_sec;		/* seconds */
	__kernel_suseconds_t	tv_usec;	/* microseconds */
};

struct itimerspec {
	struct timespec it_interval;/* timer period */
	struct timespec it_value;	/* timer expiration */
};

struct itimerval {
	struct timeval it_interval;/* timer interval */
	struct timeval it_value;	/* current value */
};
#endif

struct timezone {};

/*
 * Names of the interval timers, and structure
 * defining a timer setting:
 */
#define ITIMER_REAL
#define ITIMER_VIRTUAL
#define ITIMER_PROF

/*
 * The IDs of the various system clocks (for POSIX.1b interval timers):
 */
#define CLOCK_REALTIME
#define CLOCK_MONOTONIC
#define CLOCK_PROCESS_CPUTIME_ID
#define CLOCK_THREAD_CPUTIME_ID
#define CLOCK_MONOTONIC_RAW
#define CLOCK_REALTIME_COARSE
#define CLOCK_MONOTONIC_COARSE
#define CLOCK_BOOTTIME
#define CLOCK_REALTIME_ALARM
#define CLOCK_BOOTTIME_ALARM
/*
 * The driver implementing this got removed. The clock ID is kept as a
 * place holder. Do not reuse!
 */
#define CLOCK_SGI_CYCLE
#define CLOCK_TAI

#define MAX_CLOCKS
#define CLOCKS_MASK
#define CLOCKS_MONO

/*
 * The various flags for setting POSIX.1b interval timers:
 */
#define TIMER_ABSTIME

#endif /* _UAPI_LINUX_TIME_H */