提交 8b094cd0 编写于 作者: T Thomas Gleixner 提交者: John Stultz

time: Consolidate the time accessor prototypes

Right now we have time related prototypes in 3 different header
files. Move it to a single timekeeping header file and move the core
internal stuff into a core private header.
Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
Signed-off-by: NJohn Stultz <john.stultz@linaro.org>
上级 7d489d15
...@@ -326,17 +326,6 @@ static inline void timerfd_clock_was_set(void) { } ...@@ -326,17 +326,6 @@ static inline void timerfd_clock_was_set(void) { }
#endif #endif
extern void hrtimers_resume(void); extern void hrtimers_resume(void);
extern ktime_t ktime_get(void);
extern ktime_t ktime_get_real(void);
extern ktime_t ktime_get_boottime(void);
extern ktime_t ktime_get_monotonic_offset(void);
extern ktime_t ktime_get_clocktai(void);
extern ktime_t ktime_get_update_offsets_tick(ktime_t *offs_real,
ktime_t *offs_boot,
ktime_t *offs_tai);
extern ktime_t ktime_get_update_offsets_now(ktime_t *offs_real,
ktime_t *offs_boot,
ktime_t *offs_tai);
DECLARE_PER_CPU(struct tick_device, tick_cpu_device); DECLARE_PER_CPU(struct tick_device, tick_cpu_device);
......
...@@ -250,12 +250,6 @@ static inline __must_check bool ktime_to_timespec64_cond(const ktime_t kt, ...@@ -250,12 +250,6 @@ static inline __must_check bool ktime_to_timespec64_cond(const ktime_t kt,
#define LOW_RES_NSEC TICK_NSEC #define LOW_RES_NSEC TICK_NSEC
#define KTIME_LOW_RES (ktime_t){ .tv64 = LOW_RES_NSEC } #define KTIME_LOW_RES (ktime_t){ .tv64 = LOW_RES_NSEC }
/* Get the monotonic time in timespec format: */
extern void ktime_get_ts(struct timespec *ts);
/* Get the real (wall-) time in timespec format: */
#define ktime_get_real_ts(ts) getnstimeofday(ts)
static inline ktime_t ns_to_ktime(u64 ns) static inline ktime_t ns_to_ktime(u64 ns)
{ {
static const ktime_t ktime_zero = { .tv64 = 0 }; static const ktime_t ktime_zero = { .tv64 = 0 };
...@@ -270,4 +264,6 @@ static inline ktime_t ms_to_ktime(u64 ms) ...@@ -270,4 +264,6 @@ static inline ktime_t ms_to_ktime(u64 ms)
return ktime_add_ms(ktime_zero, ms); return ktime_add_ms(ktime_zero, ms);
} }
# include <linux/timekeeping.h>
#endif #endif
...@@ -99,25 +99,7 @@ static inline bool timespec_valid_strict(const struct timespec *ts) ...@@ -99,25 +99,7 @@ static inline bool timespec_valid_strict(const struct timespec *ts)
return true; return true;
} }
extern bool persistent_clock_exist; extern struct timespec timespec_trunc(struct timespec t, unsigned gran);
static inline bool has_persistent_clock(void)
{
return persistent_clock_exist;
}
extern void read_persistent_clock(struct timespec *ts);
extern void read_boot_clock(struct timespec *ts);
extern int persistent_clock_is_local;
extern int update_persistent_clock(struct timespec now);
void timekeeping_init(void);
extern int timekeeping_suspended;
unsigned long get_seconds(void);
struct timespec current_kernel_time(void);
struct timespec __current_kernel_time(void); /* does not take xtime_lock */
struct timespec get_monotonic_coarse(void);
void timekeeping_inject_sleeptime(struct timespec *delta);
#define CURRENT_TIME (current_kernel_time()) #define CURRENT_TIME (current_kernel_time())
#define CURRENT_TIME_SEC ((struct timespec) { get_seconds(), 0 }) #define CURRENT_TIME_SEC ((struct timespec) { get_seconds(), 0 })
...@@ -135,33 +117,14 @@ void timekeeping_inject_sleeptime(struct timespec *delta); ...@@ -135,33 +117,14 @@ void timekeeping_inject_sleeptime(struct timespec *delta);
extern u32 (*arch_gettimeoffset)(void); extern u32 (*arch_gettimeoffset)(void);
#endif #endif
extern void do_gettimeofday(struct timeval *tv);
extern int do_settimeofday(const struct timespec *tv);
extern int do_sys_settimeofday(const struct timespec *tv,
const struct timezone *tz);
#define do_posix_clock_monotonic_gettime(ts) ktime_get_ts(ts)
extern long do_utimes(int dfd, const char __user *filename, struct timespec *times, int flags);
struct itimerval; struct itimerval;
extern int do_setitimer(int which, struct itimerval *value, extern int do_setitimer(int which, struct itimerval *value,
struct itimerval *ovalue); struct itimerval *ovalue);
extern unsigned int alarm_setitimer(unsigned int seconds);
extern int do_getitimer(int which, struct itimerval *value); 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,
struct timespec *ts_real);
extern void getboottime(struct timespec *ts);
extern void monotonic_to_bootbased(struct timespec *ts);
extern void get_monotonic_boottime(struct timespec *ts);
extern struct timespec timespec_trunc(struct timespec t, unsigned gran); extern unsigned int alarm_setitimer(unsigned int seconds);
extern int timekeeping_valid_for_hres(void);
extern u64 timekeeping_max_deferment(void); extern long do_utimes(int dfd, const char __user *filename, struct timespec *times, int flags);
extern int timekeeping_inject_offset(struct timespec *ts);
extern s32 timekeeping_get_tai_offset(void);
extern void timekeeping_set_tai_offset(s32 tai_offset);
extern void timekeeping_clocktai(struct timespec *ts);
struct tms; struct tms;
extern void do_sys_times(struct tms *); extern void do_sys_times(struct tms *);
......
#ifndef _LINUX_TIMEKEEPING_H
#define _LINUX_TIMEKEEPING_H
/* Included from linux/ktime.h */
void timekeeping_init(void);
extern int timekeeping_suspended;
/*
* Get and set timeofday
*/
extern void do_gettimeofday(struct timeval *tv);
extern int do_settimeofday(const struct timespec *tv);
extern int do_sys_settimeofday(const struct timespec *tv,
const struct timezone *tz);
/*
* Kernel time accessors
*/
unsigned long get_seconds(void);
struct timespec current_kernel_time(void);
/* does not take xtime_lock */
struct timespec __current_kernel_time(void);
/*
* timespec based interfaces
*/
struct timespec get_monotonic_coarse(void);
extern void getrawmonotonic(struct timespec *ts);
extern void monotonic_to_bootbased(struct timespec *ts);
extern void get_monotonic_boottime(struct timespec *ts);
extern void ktime_get_ts(struct timespec *ts);
extern int __getnstimeofday(struct timespec *tv);
extern void getnstimeofday(struct timespec *tv);
extern void getboottime(struct timespec *ts);
#define do_posix_clock_monotonic_gettime(ts) ktime_get_ts(ts)
#define ktime_get_real_ts(ts) getnstimeofday(ts)
/*
* ktime_t based interfaces
*/
extern ktime_t ktime_get(void);
extern ktime_t ktime_get_real(void);
extern ktime_t ktime_get_boottime(void);
extern ktime_t ktime_get_monotonic_offset(void);
extern ktime_t ktime_get_clocktai(void);
/*
* RTC specific
*/
extern void timekeeping_inject_sleeptime(struct timespec *delta);
/*
* PPS accessor
*/
extern void getnstime_raw_and_real(struct timespec *ts_raw,
struct timespec *ts_real);
/*
* Persistent clock related interfaces
*/
extern bool persistent_clock_exist;
extern int persistent_clock_is_local;
static inline bool has_persistent_clock(void)
{
return persistent_clock_exist;
}
extern void read_persistent_clock(struct timespec *ts);
extern void read_boot_clock(struct timespec *ts);
extern int update_persistent_clock(struct timespec now);
#endif
...@@ -54,6 +54,8 @@ ...@@ -54,6 +54,8 @@
#include <trace/events/timer.h> #include <trace/events/timer.h>
#include "timekeeping.h"
/* /*
* The timer bases: * The timer bases:
* *
......
...@@ -49,6 +49,8 @@ ...@@ -49,6 +49,8 @@
#include <linux/export.h> #include <linux/export.h>
#include <linux/hashtable.h> #include <linux/hashtable.h>
#include "timekeeping.h"
/* /*
* Management arrays for POSIX timers. Timers are now kept in static hash table * Management arrays for POSIX timers. Timers are now kept in static hash table
* with 512 entries. * with 512 entries.
......
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
#include <linux/hrtimer.h> #include <linux/hrtimer.h>
#include <linux/tick.h> #include <linux/tick.h>
#include "timekeeping.h"
extern seqlock_t jiffies_lock; extern seqlock_t jiffies_lock;
#define CS_NAME_LEN 32 #define CS_NAME_LEN 32
......
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
#include <asm/unistd.h> #include <asm/unistd.h>
#include "timeconst.h" #include "timeconst.h"
#include "timekeeping.h"
/* /*
* The timezone where the local system is located. Used as a default by some * The timezone where the local system is located. Used as a default by some
......
#ifndef _KERNEL_TIME_TIMEKEEPING_H
#define _KERNEL_TIME_TIMEKEEPING_H
/*
* Internal interfaces for kernel/time/
*/
extern ktime_t ktime_get_update_offsets_tick(ktime_t *offs_real,
ktime_t *offs_boot,
ktime_t *offs_tai);
extern ktime_t ktime_get_update_offsets_now(ktime_t *offs_real,
ktime_t *offs_boot,
ktime_t *offs_tai);
extern int timekeeping_valid_for_hres(void);
extern u64 timekeeping_max_deferment(void);
extern int timekeeping_inject_offset(struct timespec *ts);
extern s32 timekeeping_get_tai_offset(void);
extern void timekeeping_set_tai_offset(s32 tai_offset);
extern void timekeeping_clocktai(struct timespec *ts);
#endif
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册