]> Pileus Git - ~andy/linux/blobdiff - include/linux/time.h
timekeeping: Switch HAS_PERSISTENT_CLOCK to ALWAYS_USE_PERSISTENT_CLOCK
[~andy/linux] / include / linux / time.h
index b51e664c83e7237e17e02f0b5752ce586f87dbd4..476e1d7b2c3755a728ce538e0ed31137481f47c5 100644 (file)
@@ -1,33 +1,10 @@
 #ifndef _LINUX_TIME_H
 #define _LINUX_TIME_H
 
-#include <linux/types.h>
-
-#ifdef __KERNEL__
 # include <linux/cache.h>
 # include <linux/seqlock.h>
 # include <linux/math64.h>
-#endif
-
-#ifndef _STRUCT_TIMESPEC
-#define _STRUCT_TIMESPEC
-struct timespec {
-       __kernel_time_t tv_sec;                 /* seconds */
-       long            tv_nsec;                /* nanoseconds */
-};
-#endif
-
-struct timeval {
-       __kernel_time_t         tv_sec;         /* seconds */
-       __kernel_suseconds_t    tv_usec;        /* microseconds */
-};
-
-struct timezone {
-       int     tz_minuteswest; /* minutes west of Greenwich */
-       int     tz_dsttime;     /* type of dst correction */
-};
-
-#ifdef __KERNEL__
+#include <uapi/linux/time.h>
 
 extern struct timezone sys_tz;
 
@@ -138,6 +115,17 @@ static inline bool timespec_valid_strict(const struct timespec *ts)
        return true;
 }
 
+extern bool persistent_clock_exist;
+
+#ifdef ALWAYS_USE_PERSISTENT_CLOCK
+#define has_persistent_clock() true
+#else
+static inline bool has_persistent_clock(void)
+{
+       return persistent_clock_exist;
+}
+#endif
+
 extern void read_persistent_clock(struct timespec *ts);
 extern void read_boot_clock(struct timespec *ts);
 extern int update_persistent_clock(struct timespec now);
@@ -181,6 +169,7 @@ extern int do_setitimer(int which, struct itimerval *value,
                        struct itimerval *ovalue);
 extern unsigned int alarm_setitimer(unsigned int seconds);
 extern int do_getitimer(int which, struct itimerval *value);
+extern int __getnstimeofday(struct timespec *tv);
 extern void getnstimeofday(struct timespec *tv);
 extern void getrawmonotonic(struct timespec *ts);
 extern void getnstime_raw_and_real(struct timespec *ts_raw,
@@ -280,51 +269,4 @@ static __always_inline void timespec_add_ns(struct timespec *a, u64 ns)
        a->tv_nsec = ns;
 }
 
-#endif /* __KERNEL__ */
-
-/*
- * Names of the interval timers, and structure
- * defining a timer setting:
- */
-#define        ITIMER_REAL             0
-#define        ITIMER_VIRTUAL          1
-#define        ITIMER_PROF             2
-
-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 */
-};
-
-/*
- * The IDs of the various system clocks (for POSIX.1b interval timers):
- */
-#define CLOCK_REALTIME                 0
-#define CLOCK_MONOTONIC                        1
-#define CLOCK_PROCESS_CPUTIME_ID       2
-#define CLOCK_THREAD_CPUTIME_ID                3
-#define CLOCK_MONOTONIC_RAW            4
-#define CLOCK_REALTIME_COARSE          5
-#define CLOCK_MONOTONIC_COARSE         6
-#define CLOCK_BOOTTIME                 7
-#define CLOCK_REALTIME_ALARM           8
-#define CLOCK_BOOTTIME_ALARM           9
-
-/*
- * The IDs of various hardware clocks:
- */
-#define CLOCK_SGI_CYCLE                        10
-#define MAX_CLOCKS                     16
-#define CLOCKS_MASK                    (CLOCK_REALTIME | CLOCK_MONOTONIC)
-#define CLOCKS_MONO                    CLOCK_MONOTONIC
-
-/*
- * The various flags for setting POSIX.1b interval timers:
- */
-#define TIMER_ABSTIME                  0x01
-
 #endif