@@ -626,10 +626,12 @@ EXPORT_SYMBOL(__usecs_to_jiffies);
626
626
* The >> (NSEC_JIFFIE_SC - SEC_JIFFIE_SC) converts the scaled nsec
627
627
* value to a scaled second value.
628
628
*/
629
- static unsigned long
630
- __timespec64_to_jiffies (u64 sec , long nsec )
629
+
630
+ unsigned long
631
+ timespec64_to_jiffies (const struct timespec64 * value )
631
632
{
632
- nsec = nsec + TICK_NSEC - 1 ;
633
+ u64 sec = value -> tv_sec ;
634
+ long nsec = value -> tv_nsec + TICK_NSEC - 1 ;
633
635
634
636
if (sec >= MAX_SEC_IN_JIFFIES ){
635
637
sec = MAX_SEC_IN_JIFFIES ;
@@ -640,18 +642,6 @@ __timespec64_to_jiffies(u64 sec, long nsec)
640
642
(NSEC_JIFFIE_SC - SEC_JIFFIE_SC ))) >> SEC_JIFFIE_SC ;
641
643
642
644
}
643
-
644
- static unsigned long
645
- __timespec_to_jiffies (unsigned long sec , long nsec )
646
- {
647
- return __timespec64_to_jiffies ((u64 )sec , nsec );
648
- }
649
-
650
- unsigned long
651
- timespec64_to_jiffies (const struct timespec64 * value )
652
- {
653
- return __timespec64_to_jiffies (value -> tv_sec , value -> tv_nsec );
654
- }
655
645
EXPORT_SYMBOL (timespec64_to_jiffies );
656
646
657
647
void
@@ -668,44 +658,6 @@ jiffies_to_timespec64(const unsigned long jiffies, struct timespec64 *value)
668
658
}
669
659
EXPORT_SYMBOL (jiffies_to_timespec64 );
670
660
671
- /*
672
- * We could use a similar algorithm to timespec_to_jiffies (with a
673
- * different multiplier for usec instead of nsec). But this has a
674
- * problem with rounding: we can't exactly add TICK_NSEC - 1 to the
675
- * usec value, since it's not necessarily integral.
676
- *
677
- * We could instead round in the intermediate scaled representation
678
- * (i.e. in units of 1/2^(large scale) jiffies) but that's also
679
- * perilous: the scaling introduces a small positive error, which
680
- * combined with a division-rounding-upward (i.e. adding 2^(scale) - 1
681
- * units to the intermediate before shifting) leads to accidental
682
- * overflow and overestimates.
683
- *
684
- * At the cost of one additional multiplication by a constant, just
685
- * use the timespec implementation.
686
- */
687
- unsigned long
688
- timeval_to_jiffies (const struct timeval * value )
689
- {
690
- return __timespec_to_jiffies (value -> tv_sec ,
691
- value -> tv_usec * NSEC_PER_USEC );
692
- }
693
- EXPORT_SYMBOL (timeval_to_jiffies );
694
-
695
- void jiffies_to_timeval (const unsigned long jiffies , struct timeval * value )
696
- {
697
- /*
698
- * Convert jiffies to nanoseconds and separate with
699
- * one divide.
700
- */
701
- u32 rem ;
702
-
703
- value -> tv_sec = div_u64_rem ((u64 )jiffies * TICK_NSEC ,
704
- NSEC_PER_SEC , & rem );
705
- value -> tv_usec = rem / NSEC_PER_USEC ;
706
- }
707
- EXPORT_SYMBOL (jiffies_to_timeval );
708
-
709
661
/*
710
662
* Convert jiffies/jiffies_64 to clock_t and back.
711
663
*/
0 commit comments