Exemple #1
0
static inline long __sched
__wait_for_common(struct completion *x,
		  long (*action)(long), long timeout, int state)
{
	might_sleep();

	spin_lock_irq(&x->wait.lock);
	timeout = do_wait_for_common(x, action, timeout, state);
	spin_unlock_irq(&x->wait.lock);
	return timeout;
}
Exemple #2
0
// ARM10C 20170830
// x: &kthreadd_done, schedule_timeout, timeout: 0x7FFFFFFF, state: 2
static inline long __sched
__wait_for_common(struct completion *x,
		  long (*action)(long), long timeout, int state)
{
	might_sleep(); // null function

	// &x->wait.lock: &(&kthreadd_done)->wait.lock
	spin_lock_irq(&x->wait.lock);

	// spin_lock_irq 에서 한일:
	// &(&kthreadd_done)->wait.lock 을 사용하여 spin lock 수행

	// x: &kthreadd_done, action: schedule_timeout, timeout: 0x7FFFFFFF, state: 2
	timeout = do_wait_for_common(x, action, timeout, state);
	spin_unlock_irq(&x->wait.lock);
	return timeout;
}