Function report

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:kernel\locking\rtmutex.c Create Date:2022-07-28 09:52:16
Last Modify:2020-03-17 14:26:38 Copyright©Brick
home page Tree
Annotation kernel can get tool activityDownload SCCTChinese

Name:Remove a waiter from a lock and give up* Must be called with lock->wait_lock held and interrupts disabled. I must* have just failed to try_to_take_rt_mutex().

Proto:static void remove_waiter(struct rt_mutex *lock, struct rt_mutex_waiter *waiter)

Type:void

Parameter:

TypeParameterName
struct rt_mutex *lock
struct rt_mutex_waiter *waiter
1070  is_top_waiter = waiter == rt_mutex_top_waiter(lock)
1071  owner = rt_mutex_owner(lock)
1074  lockdep_assert_held( & wait_lock)
1076  raw_spin_lock( & pi_lock)
1077  rt_mutex_dequeue(lock, waiter)
1078  pi_blocked_on = NULL
1079  raw_spin_unlock( & pi_lock)
1085  If Not owner || Not is_top_waiter Then Return
1088  raw_spin_lock( & Protection of the PI data structures: )
1090  rt_mutex_dequeue_pi(owner, waiter)
1092  If rt_mutex_has_waiters(lock) Then rt_mutex_enqueue_pi(owner, rt_mutex_top_waiter(lock))
1095  rt_mutex_adjust_prio(owner)
1098  next_lock = task_blocked_on_lock(owner)
1100  raw_spin_unlock( & Protection of the PI data structures: )
1106  If Not next_lock Then Return
1110  get_task_struct(owner)
1112  raw_spin_unlock_irq( & wait_lock)
1114  Adjust the priority chain
1117  raw_spin_lock_irq( & wait_lock)
Caller
NameDescribe
rt_mutex_slowlockSlow path lock function:
rt_mutex_start_proxy_lock_mutex_start_proxy_lock() - Start lock acquisition for another task*@lock: the rt_mutex to take*@waiter: the pre-initialized rt_mutex_waiter*@task: the task to prepare* Starts the rt_mutex acquire; it enqueues the @waiter and does deadlock* detection
rt_mutex_cleanup_proxy_lock_mutex_cleanup_proxy_lock() - Cleanup failed lock acquisition*@lock: the rt_mutex we were woken on*@waiter: the pre-initialized rt_mutex_waiter* Attempt to clean up after a failed __rt_mutex_start_proxy_lock() or* rt_mutex_wait_proxy_lock()