File tree Expand file tree Collapse file tree 1 file changed +15
-3
lines changed Expand file tree Collapse file tree 1 file changed +15
-3
lines changed Original file line number Diff line number Diff line change @@ -343,12 +343,24 @@ static inline unsigned long _msecs_to_jiffies(const unsigned int m)
343
343
* handling any 32-bit overflows.
344
344
* for the details see __msecs_to_jiffies()
345
345
*
346
- * the HZ range specific helpers _msecs_to_jiffies() are called from
347
- * __msecs_to_jiffies().
346
+ * msecs_to_jiffies() checks for the passed in value being a constant
347
+ * via __builtin_constant_p() allowing gcc to eliminate most of the
348
+ * code, __msecs_to_jiffies() is called if the value passed does not
349
+ * allow constant folding and the actual conversion must be done at
350
+ * runtime.
351
+ * the HZ range specific helpers _msecs_to_jiffies() are called both
352
+ * directly here and from __msecs_to_jiffies() in the case where
353
+ * constant folding is not possible.
348
354
*/
349
355
static inline unsigned long msecs_to_jiffies (const unsigned int m )
350
356
{
351
- return __msecs_to_jiffies (m );
357
+ if (__builtin_constant_p (m )) {
358
+ if ((int )m < 0 )
359
+ return MAX_JIFFY_OFFSET ;
360
+ return _msecs_to_jiffies (m );
361
+ } else {
362
+ return __msecs_to_jiffies (m );
363
+ }
352
364
}
353
365
354
366
extern unsigned long usecs_to_jiffies (const unsigned int u );
You can’t perform that action at this time.
0 commit comments