提交 8ab4351a 编写于 作者: J John Stultz 提交者: Thomas Gleixner

hrtimer: Cleanup direct access to wall_to_monotonic

Provides an accessor function to replace hrtimer.c's
direct access of wall_to_monotonic.

This will allow wall_to_monotonic to be made static as
planned in Documentation/feature-removal-schedule.txt
Signed-off-by: NJohn Stultz <johnstul@us.ibm.com>
LKML-Reference: <1279068988-21864-9-git-send-email-johnstul@us.ibm.com>
Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
上级 9f31f577
...@@ -126,7 +126,8 @@ extern int timekeeping_suspended; ...@@ -126,7 +126,8 @@ extern int timekeeping_suspended;
unsigned long get_seconds(void); unsigned long get_seconds(void);
struct timespec current_kernel_time(void); struct timespec current_kernel_time(void);
struct timespec __current_kernel_time(void); /* does not hold xtime_lock */ struct timespec __current_kernel_time(void); /* does not take xtime_lock */
struct timespec __get_wall_to_monotonic(void); /* does not take xtime_lock */
struct timespec get_monotonic_coarse(void); struct timespec get_monotonic_coarse(void);
#define CURRENT_TIME (current_kernel_time()) #define CURRENT_TIME (current_kernel_time())
......
...@@ -90,7 +90,7 @@ static void hrtimer_get_softirq_time(struct hrtimer_cpu_base *base) ...@@ -90,7 +90,7 @@ static void hrtimer_get_softirq_time(struct hrtimer_cpu_base *base)
do { do {
seq = read_seqbegin(&xtime_lock); seq = read_seqbegin(&xtime_lock);
xts = __current_kernel_time(); xts = __current_kernel_time();
tom = wall_to_monotonic; tom = __get_wall_to_monotonic();
} while (read_seqretry(&xtime_lock, seq)); } while (read_seqretry(&xtime_lock, seq));
xtim = timespec_to_ktime(xts); xtim = timespec_to_ktime(xts);
...@@ -612,7 +612,7 @@ static int hrtimer_reprogram(struct hrtimer *timer, ...@@ -612,7 +612,7 @@ static int hrtimer_reprogram(struct hrtimer *timer,
static void retrigger_next_event(void *arg) static void retrigger_next_event(void *arg)
{ {
struct hrtimer_cpu_base *base; struct hrtimer_cpu_base *base;
struct timespec realtime_offset; struct timespec realtime_offset, wtm;
unsigned long seq; unsigned long seq;
if (!hrtimer_hres_active()) if (!hrtimer_hres_active())
...@@ -620,10 +620,9 @@ static void retrigger_next_event(void *arg) ...@@ -620,10 +620,9 @@ static void retrigger_next_event(void *arg)
do { do {
seq = read_seqbegin(&xtime_lock); seq = read_seqbegin(&xtime_lock);
set_normalized_timespec(&realtime_offset, wtm = __get_wall_to_monotonic();
-wall_to_monotonic.tv_sec,
-wall_to_monotonic.tv_nsec);
} while (read_seqretry(&xtime_lock, seq)); } while (read_seqretry(&xtime_lock, seq));
set_normalized_timespec(&realtime_offset, -wtm.tv_sec, -wtm.tv_nsec);
base = &__get_cpu_var(hrtimer_bases); base = &__get_cpu_var(hrtimer_bases);
......
...@@ -858,6 +858,11 @@ struct timespec __current_kernel_time(void) ...@@ -858,6 +858,11 @@ struct timespec __current_kernel_time(void)
return xtime; return xtime;
} }
struct timespec __get_wall_to_monotonic(void)
{
return wall_to_monotonic;
}
struct timespec current_kernel_time(void) struct timespec current_kernel_time(void)
{ {
struct timespec now; struct timespec now;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册