linux/include/uapi/linux/time.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
   2#ifndef _UAPI_LINUX_TIME_H
   3#define _UAPI_LINUX_TIME_H
   4
   5#include <linux/types.h>
   6
   7
   8#ifndef _STRUCT_TIMESPEC
   9#define _STRUCT_TIMESPEC
  10struct timespec {
  11        __kernel_time_t tv_sec;                 /* seconds */
  12        long            tv_nsec;                /* nanoseconds */
  13};
  14#endif
  15
  16struct timeval {
  17        __kernel_time_t         tv_sec;         /* seconds */
  18        __kernel_suseconds_t    tv_usec;        /* microseconds */
  19};
  20
  21struct timezone {
  22        int     tz_minuteswest; /* minutes west of Greenwich */
  23        int     tz_dsttime;     /* type of dst correction */
  24};
  25
  26
  27/*
  28 * Names of the interval timers, and structure
  29 * defining a timer setting:
  30 */
  31#define ITIMER_REAL             0
  32#define ITIMER_VIRTUAL          1
  33#define ITIMER_PROF             2
  34
  35struct itimerspec {
  36        struct timespec it_interval;    /* timer period */
  37        struct timespec it_value;       /* timer expiration */
  38};
  39
  40struct itimerval {
  41        struct timeval it_interval;     /* timer interval */
  42        struct timeval it_value;        /* current value */
  43};
  44
  45#ifndef __kernel_timespec
  46struct __kernel_timespec {
  47        __kernel_time64_t       tv_sec;                 /* seconds */
  48        long long               tv_nsec;                /* nanoseconds */
  49};
  50#endif
  51
  52/*
  53 * legacy timeval structure, only embedded in structures that
  54 * traditionally used 'timeval' to pass time intervals (not absolute
  55 * times). Do not add new users. If user space fails to compile
  56 * here, this is probably because it is not y2038 safe and needs to
  57 * be changed to use another interface.
  58 */
  59struct __kernel_old_timeval {
  60        __kernel_long_t tv_sec;
  61        __kernel_long_t tv_usec;
  62};
  63
  64/*
  65 * The IDs of the various system clocks (for POSIX.1b interval timers):
  66 */
  67#define CLOCK_REALTIME                  0
  68#define CLOCK_MONOTONIC                 1
  69#define CLOCK_PROCESS_CPUTIME_ID        2
  70#define CLOCK_THREAD_CPUTIME_ID         3
  71#define CLOCK_MONOTONIC_RAW             4
  72#define CLOCK_REALTIME_COARSE           5
  73#define CLOCK_MONOTONIC_COARSE          6
  74#define CLOCK_BOOTTIME                  7
  75#define CLOCK_REALTIME_ALARM            8
  76#define CLOCK_BOOTTIME_ALARM            9
  77/*
  78 * The driver implementing this got removed. The clock ID is kept as a
  79 * place holder. Do not reuse!
  80 */
  81#define CLOCK_SGI_CYCLE                 10
  82#define CLOCK_TAI                       11
  83
  84#define MAX_CLOCKS                      16
  85#define CLOCKS_MASK                     (CLOCK_REALTIME | CLOCK_MONOTONIC)
  86#define CLOCKS_MONO                     CLOCK_MONOTONIC
  87
  88/*
  89 * The various flags for setting POSIX.1b interval timers:
  90 */
  91#define TIMER_ABSTIME                   0x01
  92
  93#endif /* _UAPI_LINUX_TIME_H */
  94