diff options
Diffstat (limited to 'kernel/time/time.c')
| -rw-r--r-- | kernel/time/time.c | 101 | 
1 files changed, 5 insertions, 96 deletions
diff --git a/kernel/time/time.c b/kernel/time/time.c index 704ccd9451b0..3985b2b32d08 100644 --- a/kernel/time/time.c +++ b/kernel/time/time.c @@ -449,49 +449,6 @@ time64_t mktime64(const unsigned int year0, const unsigned int mon0,  }  EXPORT_SYMBOL(mktime64); -/** - * ns_to_timespec - Convert nanoseconds to timespec - * @nsec:       the nanoseconds value to be converted - * - * Returns the timespec representation of the nsec parameter. - */ -struct timespec ns_to_timespec(const s64 nsec) -{ -	struct timespec ts; -	s32 rem; - -	if (!nsec) -		return (struct timespec) {0, 0}; - -	ts.tv_sec = div_s64_rem(nsec, NSEC_PER_SEC, &rem); -	if (unlikely(rem < 0)) { -		ts.tv_sec--; -		rem += NSEC_PER_SEC; -	} -	ts.tv_nsec = rem; - -	return ts; -} -EXPORT_SYMBOL(ns_to_timespec); - -/** - * ns_to_timeval - Convert nanoseconds to timeval - * @nsec:       the nanoseconds value to be converted - * - * Returns the timeval representation of the nsec parameter. - */ -struct timeval ns_to_timeval(const s64 nsec) -{ -	struct timespec ts = ns_to_timespec(nsec); -	struct timeval tv; - -	tv.tv_sec = ts.tv_sec; -	tv.tv_usec = (suseconds_t) ts.tv_nsec / 1000; - -	return tv; -} -EXPORT_SYMBOL(ns_to_timeval); -  struct __kernel_old_timeval ns_to_kernel_old_timeval(const s64 nsec)  {  	struct timespec64 ts = ns_to_timespec64(nsec); @@ -626,10 +583,12 @@ EXPORT_SYMBOL(__usecs_to_jiffies);   * The >> (NSEC_JIFFIE_SC - SEC_JIFFIE_SC) converts the scaled nsec   * value to a scaled second value.   */ -static unsigned long -__timespec64_to_jiffies(u64 sec, long nsec) + +unsigned long +timespec64_to_jiffies(const struct timespec64 *value)  { -	nsec = nsec + TICK_NSEC - 1; +	u64 sec = value->tv_sec; +	long nsec = value->tv_nsec + TICK_NSEC - 1;  	if (sec >= MAX_SEC_IN_JIFFIES){  		sec = MAX_SEC_IN_JIFFIES; @@ -640,18 +599,6 @@ __timespec64_to_jiffies(u64 sec, long nsec)  		 (NSEC_JIFFIE_SC - SEC_JIFFIE_SC))) >> SEC_JIFFIE_SC;  } - -static unsigned long -__timespec_to_jiffies(unsigned long sec, long nsec) -{ -	return __timespec64_to_jiffies((u64)sec, nsec); -} - -unsigned long -timespec64_to_jiffies(const struct timespec64 *value) -{ -	return __timespec64_to_jiffies(value->tv_sec, value->tv_nsec); -}  EXPORT_SYMBOL(timespec64_to_jiffies);  void @@ -669,44 +616,6 @@ jiffies_to_timespec64(const unsigned long jiffies, struct timespec64 *value)  EXPORT_SYMBOL(jiffies_to_timespec64);  /* - * We could use a similar algorithm to timespec_to_jiffies (with a - * different multiplier for usec instead of nsec). But this has a - * problem with rounding: we can't exactly add TICK_NSEC - 1 to the - * usec value, since it's not necessarily integral. - * - * We could instead round in the intermediate scaled representation - * (i.e. in units of 1/2^(large scale) jiffies) but that's also - * perilous: the scaling introduces a small positive error, which - * combined with a division-rounding-upward (i.e. adding 2^(scale) - 1 - * units to the intermediate before shifting) leads to accidental - * overflow and overestimates. - * - * At the cost of one additional multiplication by a constant, just - * use the timespec implementation. - */ -unsigned long -timeval_to_jiffies(const struct timeval *value) -{ -	return __timespec_to_jiffies(value->tv_sec, -				     value->tv_usec * NSEC_PER_USEC); -} -EXPORT_SYMBOL(timeval_to_jiffies); - -void jiffies_to_timeval(const unsigned long jiffies, struct timeval *value) -{ -	/* -	 * Convert jiffies to nanoseconds and separate with -	 * one divide. -	 */ -	u32 rem; - -	value->tv_sec = div_u64_rem((u64)jiffies * TICK_NSEC, -				    NSEC_PER_SEC, &rem); -	value->tv_usec = rem / NSEC_PER_USEC; -} -EXPORT_SYMBOL(jiffies_to_timeval); - -/*   * Convert jiffies/jiffies_64 to clock_t and back.   */  clock_t jiffies_to_clock_t(unsigned long x)  |