• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/kernel/

Lines Matching defs:waiter

44  * waiter of the lock, when the lock is released. The thread is woken
107 * Calculate task priority from the waiter list priority
109 * Return task->normal_prio when the waiter list is empty or when
110 * the waiter is not allowed to do priority boosting
169 struct rt_mutex_waiter *waiter, *top_waiter = orig_waiter;
206 waiter = task->pi_blocked_on;
212 if (!waiter || !waiter->task)
236 if (!detect_deadlock && waiter->list_entry.prio == task->prio)
239 lock = waiter->lock;
256 /* Requeue the waiter */
257 plist_del(&waiter->list_entry, &lock->wait_list);
258 waiter->list_entry.prio = task->prio;
259 plist_add(&waiter->list_entry, &lock->wait_list);
270 if (waiter == rt_mutex_top_waiter(lock)) {
273 waiter->pi_list_entry.prio = waiter->list_entry.prio;
274 plist_add(&waiter->pi_list_entry, &task->pi_waiters);
277 } else if (top_waiter == waiter) {
279 plist_del(&waiter->pi_list_entry, &task->pi_waiters);
280 waiter = rt_mutex_top_waiter(lock);
281 waiter->pi_list_entry.prio = waiter->list_entry.prio;
282 plist_add(&waiter->pi_list_entry, &task->pi_waiters);
291 if (!detect_deadlock && waiter != top_waiter)
328 * Check if a waiter is enqueued on the pending owners
344 * We are going to steal the lock and a waiter was
346 * we have to enqueue this waiter into
350 * interrupted, so we would delay a waiter with higher
380 * - no other waiter is on the lock
414 * Prepare waiter and propagate pi chain
419 struct rt_mutex_waiter *waiter,
423 struct rt_mutex_waiter *top_waiter = waiter;
429 waiter->task = current;
430 waiter->lock = lock;
431 plist_node_init(&waiter->list_entry, current->prio);
432 plist_node_init(&waiter->pi_list_entry, current->prio);
434 /* Get the top priority waiter on the lock */
437 plist_add(&waiter->list_entry, &lock->wait_list);
439 current->pi_blocked_on = waiter;
443 if (waiter == rt_mutex_top_waiter(lock)) {
446 plist_add(&waiter->pi_list_entry, &owner->pi_waiters);
453 else if (debug_rt_mutex_detect_deadlock(waiter, detect_deadlock))
468 res = rt_mutex_adjust_prio_chain(owner, detect_deadlock, lock, waiter,
477 * Wake up the next waiter on the lock.
479 * Remove the top waiter from the current tasks waiter list and from
480 * the lock waiter list. Set it as pending owner. Then wake it up.
486 struct rt_mutex_waiter *waiter;
492 waiter = rt_mutex_top_waiter(lock);
493 plist_del(&waiter->list_entry, &lock->wait_list);
501 plist_del(&waiter->pi_list_entry, &current->pi_waiters);
502 pendowner = waiter->task;
503 waiter->task = NULL;
511 * waiter into the pi_waiters list of the pending owner. This
513 * waiter with higher priority than pending-owner->normal_prio
519 WARN_ON(pendowner->pi_blocked_on != waiter);
536 * Remove a waiter from a lock
541 struct rt_mutex_waiter *waiter)
543 int first = (waiter == rt_mutex_top_waiter(lock));
549 plist_del(&waiter->list_entry, &lock->wait_list);
550 waiter->task = NULL;
558 plist_del(&waiter->pi_list_entry, &owner->pi_waiters);
574 WARN_ON(!plist_node_empty(&waiter->pi_list_entry));
596 struct rt_mutex_waiter *waiter;
601 waiter = task->pi_blocked_on;
602 if (!waiter || waiter->list_entry.prio == task->prio) {
622 struct rt_mutex_waiter waiter;
625 debug_rt_mutex_init_waiter(&waiter);
626 waiter.task = NULL;
663 * waiter.task is NULL the first time we come here and
667 if (!waiter.task) {
668 ret = task_blocks_on_rt_mutex(lock, &waiter,
675 if (unlikely(!waiter.task)) {
691 debug_rt_mutex_print_deadlock(&waiter);
693 if (waiter.task)
702 if (unlikely(waiter.task))
703 remove_waiter(lock, &waiter);
706 * try_to_take_rt_mutex() sets the waiter bit
725 debug_rt_mutex_free_waiter(&waiter);