Lines Matching refs:task
106 int rt_mutex_getprio(struct task_struct *task) in rt_mutex_getprio() argument
108 if (likely(!task_has_pi_waiters(task))) in rt_mutex_getprio()
109 return task->normal_prio; in rt_mutex_getprio()
111 return min(task_top_pi_waiter(task)->pi_list_entry.prio, in rt_mutex_getprio()
112 task->normal_prio); in rt_mutex_getprio()
120 static void __rt_mutex_adjust_prio(struct task_struct *task) in __rt_mutex_adjust_prio() argument
122 int prio = rt_mutex_getprio(task); in __rt_mutex_adjust_prio()
124 if (task->prio != prio) in __rt_mutex_adjust_prio()
125 rt_mutex_setprio(task, prio); in __rt_mutex_adjust_prio()
137 static void rt_mutex_adjust_prio(struct task_struct *task) in rt_mutex_adjust_prio() argument
141 spin_lock_irqsave(&task->pi_lock, flags); in rt_mutex_adjust_prio()
142 __rt_mutex_adjust_prio(task); in rt_mutex_adjust_prio()
143 spin_unlock_irqrestore(&task->pi_lock, flags); in rt_mutex_adjust_prio()
156 static int rt_mutex_adjust_prio_chain(struct task_struct *task, in rt_mutex_adjust_prio_chain() argument
190 put_task_struct(task); in rt_mutex_adjust_prio_chain()
198 spin_lock_irqsave(&task->pi_lock, flags); in rt_mutex_adjust_prio_chain()
200 waiter = task->pi_blocked_on; in rt_mutex_adjust_prio_chain()
206 if (!waiter || !waiter->task) in rt_mutex_adjust_prio_chain()
214 if (orig_waiter && !orig_waiter->task) in rt_mutex_adjust_prio_chain()
222 if (top_waiter && (!task_has_pi_waiters(task) || in rt_mutex_adjust_prio_chain()
223 top_waiter != task_top_pi_waiter(task))) in rt_mutex_adjust_prio_chain()
230 if (!detect_deadlock && waiter->list_entry.prio == task->prio) in rt_mutex_adjust_prio_chain()
235 spin_unlock_irqrestore(&task->pi_lock, flags); in rt_mutex_adjust_prio_chain()
252 waiter->list_entry.prio = task->prio; in rt_mutex_adjust_prio_chain()
256 spin_unlock_irqrestore(&task->pi_lock, flags); in rt_mutex_adjust_prio_chain()
257 put_task_struct(task); in rt_mutex_adjust_prio_chain()
260 task = rt_mutex_owner(lock); in rt_mutex_adjust_prio_chain()
261 get_task_struct(task); in rt_mutex_adjust_prio_chain()
262 spin_lock_irqsave(&task->pi_lock, flags); in rt_mutex_adjust_prio_chain()
266 plist_del(&top_waiter->pi_list_entry, &task->pi_waiters); in rt_mutex_adjust_prio_chain()
268 plist_add(&waiter->pi_list_entry, &task->pi_waiters); in rt_mutex_adjust_prio_chain()
269 __rt_mutex_adjust_prio(task); in rt_mutex_adjust_prio_chain()
273 plist_del(&waiter->pi_list_entry, &task->pi_waiters); in rt_mutex_adjust_prio_chain()
276 plist_add(&waiter->pi_list_entry, &task->pi_waiters); in rt_mutex_adjust_prio_chain()
277 __rt_mutex_adjust_prio(task); in rt_mutex_adjust_prio_chain()
280 spin_unlock_irqrestore(&task->pi_lock, flags); in rt_mutex_adjust_prio_chain()
291 spin_unlock_irqrestore(&task->pi_lock, flags); in rt_mutex_adjust_prio_chain()
293 put_task_struct(task); in rt_mutex_adjust_prio_chain()
351 if (likely(next->task != current)) { in try_to_steal_lock()
423 waiter->task = current; in task_blocks_on_rt_mutex()
496 pendowner = waiter->task; in wakeup_next_waiter()
497 waiter->task = NULL; in wakeup_next_waiter()
544 waiter->task = NULL; in remove_waiter()
588 void rt_mutex_adjust_pi(struct task_struct *task) in rt_mutex_adjust_pi() argument
593 spin_lock_irqsave(&task->pi_lock, flags); in rt_mutex_adjust_pi()
595 waiter = task->pi_blocked_on; in rt_mutex_adjust_pi()
596 if (!waiter || waiter->list_entry.prio == task->prio) { in rt_mutex_adjust_pi()
597 spin_unlock_irqrestore(&task->pi_lock, flags); in rt_mutex_adjust_pi()
601 spin_unlock_irqrestore(&task->pi_lock, flags); in rt_mutex_adjust_pi()
604 get_task_struct(task); in rt_mutex_adjust_pi()
605 rt_mutex_adjust_prio_chain(task, 0, NULL, NULL, task); in rt_mutex_adjust_pi()
620 waiter.task = NULL; in rt_mutex_slowlock()
636 timeout->task = NULL; in rt_mutex_slowlock()
652 if (timeout && !timeout->task) in rt_mutex_slowlock()
663 if (!waiter.task) { in rt_mutex_slowlock()
671 if (unlikely(!waiter.task)) { in rt_mutex_slowlock()
689 if (waiter.task) in rt_mutex_slowlock()
698 if (unlikely(waiter.task)) in rt_mutex_slowlock()
1005 return rt_mutex_top_waiter(lock)->task; in rt_mutex_next_owner()