函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:kernel\locking\rtmutex.c Create Date:2022-07-27 10:52:31
Last Modify:2020-03-17 14:26:38 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称: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().

函数原型:static void remove_waiter(struct rt_mutex *lock, struct rt_mutex_waiter *waiter)

返回类型:void

参数:

类型参数名称
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( & 保护自旋锁)
1076  raw_spin_lock( & pi_lock)
1077  rt_mutex_dequeue(lock, waiter)
1078  pi_blocked_on = NULL
1079  raw_spin_unlock( & pi_lock)
1085  如果非owner或非is_top_waiter则返回
1088  raw_spin_lock( & Protection of the PI data structures: )
1090  rt_mutex_dequeue_pi(owner, waiter)
1092  如果rt_mutex_has_waiters(lock)则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  如果非next_lock则返回
1110  get_task_struct(owner)
1112  raw_spin_unlock_irq( & 保护自旋锁)
1114  Adjust the priority chain
1117  关闭本地中断,获取所要保护的运行队列(runqueue)的自旋锁(spinlock),为查找可运行进程做准备。( & 保护自旋锁)
调用者
名称描述
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()