sched: remove sleep_on() and friends
This is the final piece in the puzzle, as all patches to remove the last users of \(interruptible_\|\)sleep_on\(_timeout\|\) have made it into the 3.15 merge window. The work was long overdue, and this interface in particular should not have survived the BKL removal that was done a couple of years ago. Citing Jon Corbet from http://lwn.net/2001/0201/kernel.php3": "[...] it was suggested that the janitors look for and fix all code that calls sleep_on() [...] since (1) almost all such code is incorrect, and (2) Linus has agreed that those functions should be removed in the 2.5 development series". We haven't quite made it for 2.5, but maybe we can merge this for 3.15. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Ingo Molnar <mingo@kernel.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
240cd6a817
commit
b8780c363d
|
@ -850,16 +850,6 @@ printk(KERN_INFO "my ip: %pI4\n", &ipaddress);
|
||||||
<returnvalue>-ERESTARTSYS</returnvalue> if a signal is received.
|
<returnvalue>-ERESTARTSYS</returnvalue> if a signal is received.
|
||||||
The <function>wait_event()</function> version ignores signals.
|
The <function>wait_event()</function> version ignores signals.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
|
||||||
Do not use the <function>sleep_on()</function> function family -
|
|
||||||
it is very easy to accidentally introduce races; almost certainly
|
|
||||||
one of the <function>wait_event()</function> family will do, or a
|
|
||||||
loop around <function>schedule_timeout()</function>. If you choose
|
|
||||||
to loop around <function>schedule_timeout()</function> remember
|
|
||||||
you must set the task state (with
|
|
||||||
<function>set_current_state()</function>) on each iteration to avoid
|
|
||||||
busy-looping.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
|
|
|
@ -803,17 +803,6 @@ do { \
|
||||||
__ret; \
|
__ret; \
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* These are the old interfaces to sleep waiting for an event.
|
|
||||||
* They are racy. DO NOT use them, use the wait_event* interfaces above.
|
|
||||||
* We plan to remove these interfaces.
|
|
||||||
*/
|
|
||||||
extern void sleep_on(wait_queue_head_t *q);
|
|
||||||
extern long sleep_on_timeout(wait_queue_head_t *q, signed long timeout);
|
|
||||||
extern void interruptible_sleep_on(wait_queue_head_t *q);
|
|
||||||
extern long interruptible_sleep_on_timeout(wait_queue_head_t *q, signed long timeout);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Waitqueues which are removed from the waitqueue_head at wakeup time
|
* Waitqueues which are removed from the waitqueue_head at wakeup time
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -2845,52 +2845,6 @@ int default_wake_function(wait_queue_t *curr, unsigned mode, int wake_flags,
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(default_wake_function);
|
EXPORT_SYMBOL(default_wake_function);
|
||||||
|
|
||||||
static long __sched
|
|
||||||
sleep_on_common(wait_queue_head_t *q, int state, long timeout)
|
|
||||||
{
|
|
||||||
unsigned long flags;
|
|
||||||
wait_queue_t wait;
|
|
||||||
|
|
||||||
init_waitqueue_entry(&wait, current);
|
|
||||||
|
|
||||||
__set_current_state(state);
|
|
||||||
|
|
||||||
spin_lock_irqsave(&q->lock, flags);
|
|
||||||
__add_wait_queue(q, &wait);
|
|
||||||
spin_unlock(&q->lock);
|
|
||||||
timeout = schedule_timeout(timeout);
|
|
||||||
spin_lock_irq(&q->lock);
|
|
||||||
__remove_wait_queue(q, &wait);
|
|
||||||
spin_unlock_irqrestore(&q->lock, flags);
|
|
||||||
|
|
||||||
return timeout;
|
|
||||||
}
|
|
||||||
|
|
||||||
void __sched interruptible_sleep_on(wait_queue_head_t *q)
|
|
||||||
{
|
|
||||||
sleep_on_common(q, TASK_INTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(interruptible_sleep_on);
|
|
||||||
|
|
||||||
long __sched
|
|
||||||
interruptible_sleep_on_timeout(wait_queue_head_t *q, long timeout)
|
|
||||||
{
|
|
||||||
return sleep_on_common(q, TASK_INTERRUPTIBLE, timeout);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(interruptible_sleep_on_timeout);
|
|
||||||
|
|
||||||
void __sched sleep_on(wait_queue_head_t *q)
|
|
||||||
{
|
|
||||||
sleep_on_common(q, TASK_UNINTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(sleep_on);
|
|
||||||
|
|
||||||
long __sched sleep_on_timeout(wait_queue_head_t *q, long timeout)
|
|
||||||
{
|
|
||||||
return sleep_on_common(q, TASK_UNINTERRUPTIBLE, timeout);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(sleep_on_timeout);
|
|
||||||
|
|
||||||
#ifdef CONFIG_RT_MUTEXES
|
#ifdef CONFIG_RT_MUTEXES
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in a new issue