diff options
Diffstat (limited to 'kernel/time/timer.c')
| -rw-r--r-- | kernel/time/timer.c | 16 | 
1 files changed, 9 insertions, 7 deletions
| diff --git a/kernel/time/timer.c b/kernel/time/timer.c index e3d2c23c413d..85f1021ad459 100644 --- a/kernel/time/timer.c +++ b/kernel/time/timer.c @@ -2054,26 +2054,28 @@ unsigned long msleep_interruptible(unsigned int msecs)  EXPORT_SYMBOL(msleep_interruptible);  /** - * usleep_range - Sleep for an approximate time - * @min: Minimum time in usecs to sleep - * @max: Maximum time in usecs to sleep + * usleep_range_state - Sleep for an approximate time in a given state + * @min:	Minimum time in usecs to sleep + * @max:	Maximum time in usecs to sleep + * @state:	State of the current task that will be while sleeping   *   * In non-atomic context where the exact wakeup time is flexible, use - * usleep_range() instead of udelay().  The sleep improves responsiveness + * usleep_range_state() instead of udelay().  The sleep improves responsiveness   * by avoiding the CPU-hogging busy-wait of udelay(), and the range reduces   * power usage by allowing hrtimers to take advantage of an already-   * scheduled interrupt instead of scheduling a new one just for this sleep.   */ -void __sched usleep_range(unsigned long min, unsigned long max) +void __sched usleep_range_state(unsigned long min, unsigned long max, +				unsigned int state)  {  	ktime_t exp = ktime_add_us(ktime_get(), min);  	u64 delta = (u64)(max - min) * NSEC_PER_USEC;  	for (;;) { -		__set_current_state(TASK_UNINTERRUPTIBLE); +		__set_current_state(state);  		/* Do not return before the requested sleep time has elapsed */  		if (!schedule_hrtimeout_range(&exp, delta, HRTIMER_MODE_ABS))  			break;  	}  } -EXPORT_SYMBOL(usleep_range); +EXPORT_SYMBOL(usleep_range_state); | 
