@ -303,10 +303,11 @@ void getnstimeofday(struct timespec *ts)
seq = read_seqbegin ( & tk - > lock ) ;
ts - > tv_sec = tk - > xtime_sec ;
ts - > tv_ nsec = timekeeping_get_ns ( tk ) ;
nsecs = timekeeping_get_ns ( tk ) ;
} while ( read_seqretry ( & tk - > lock , seq ) ) ;
ts - > tv_nsec = 0 ;
timespec_add_ns ( ts , nsecs ) ;
}
EXPORT_SYMBOL ( getnstimeofday ) ;
@ -345,6 +346,7 @@ void ktime_get_ts(struct timespec *ts)
{
struct timekeeper * tk = & timekeeper ;
struct timespec tomono ;
s64 nsec ;
unsigned int seq ;
WARN_ON ( timekeeping_suspended ) ;
@ -352,13 +354,14 @@ void ktime_get_ts(struct timespec *ts)
do {
seq = read_seqbegin ( & tk - > lock ) ;
ts - > tv_sec = tk - > xtime_sec ;
ts - > tv_ nsec = timekeeping_get_ns ( tk ) ;
nsec = timekeeping_get_ns ( tk ) ;
tomono = tk - > wall_to_monotonic ;
} while ( read_seqretry ( & tk - > lock , seq ) ) ;
set_normalized_timespec ( ts , ts - > tv_sec + tomono . tv_sec ,
ts - > tv_nsec + tomono . tv_nsec ) ;
ts - > tv_sec + = tomono . tv_sec ;
ts - > tv_nsec = 0 ;
timespec_add_ns ( ts , nsec + tomono . tv_nsec ) ;
}
EXPORT_SYMBOL_GPL ( ktime_get_ts ) ;
@ -1244,6 +1247,7 @@ void get_monotonic_boottime(struct timespec *ts)
{
struct timekeeper * tk = & timekeeper ;
struct timespec tomono , sleep ;
s64 nsec ;
unsigned int seq ;
WARN_ON ( timekeeping_suspended ) ;
@ -1251,14 +1255,15 @@ void get_monotonic_boottime(struct timespec *ts)
do {
seq = read_seqbegin ( & tk - > lock ) ;
ts - > tv_sec = tk - > xtime_sec ;
ts - > tv_ nsec = timekeeping_get_ns ( tk ) ;
nsec = timekeeping_get_ns ( tk ) ;
tomono = tk - > wall_to_monotonic ;
sleep = tk - > total_sleep_time ;
} while ( read_seqretry ( & tk - > lock , seq ) ) ;
set_normalized_timespec ( ts , ts - > tv_sec + tomono . tv_sec + sleep . tv_sec ,
ts - > tv_nsec + tomono . tv_nsec + sleep . tv_nsec ) ;
ts - > tv_sec + = tomono . tv_sec + sleep . tv_sec ;
ts - > tv_nsec = 0 ;
timespec_add_ns ( ts , nsec + tomono . tv_nsec + sleep . tv_nsec ) ;
}
EXPORT_SYMBOL_GPL ( get_monotonic_boottime ) ;