Defined in 1 files as a function:

Referenced in 2 files:

Smatch caller information:

kernel/locking/rtmutex_api.c mark_wakeup_next_waiter() -> rt_mutex_top_waiter()

Type Parameter Key Value
PARAM_VALUE 0 lock 4096-ptr_max
PARAM_VALUE 0 lock->wait_lock.raw_lock.val.counter 0-s32max
DATA_SOURCE 0 lock $1
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 flags
HALF_LOCKED2 0 &lock->wait_lock
TYPE_LOCK (struct rt_mutex_base)->wait_lock

kernel/locking/rtmutex_api.c remove_waiter() -> rt_mutex_top_waiter()

Type Parameter Key Value
PARAM_VALUE 0 lock 4096-ptr_max
PARAM_VALUE 0 lock->wait_lock.dep_map->name 0-255
BUF_SIZE 0 lock (-1),96
BUF_SIZE 0 lock (-1),96
CAPPED_DATA 0 lock 1
DATA_SOURCE 0 lock $0
PREEMPT_ADD
RX_PATH
LOCK2 0 &lock->wait_lock
HALF_LOCKED2 flags
HALF_LOCKED2 irq
TYPE_LOCK (struct rt_mutex_base)->wait_lock

kernel/locking/rtmutex_api.c remove_waiter() -> rt_mutex_top_waiter()

Type Parameter Key Value
PARAM_VALUE 0 lock 4096-ptr_max
PARAM_VALUE 0 lock->wait_lock.dep_map->name 0-255
BUF_SIZE 0 lock (-1),96
BUF_SIZE 0 lock (-1),96
CAPPED_DATA 0 lock 1
DATA_SOURCE 0 lock $0
PREEMPT_ADD <- disables preempt
RX_PATH
LOCK2 &owner->pi_lock
LOCK2 0 &lock->wait_lock
HALF_LOCKED2 flags
HALF_LOCKED2 irq
TYPE_LOCK (struct rt_mutex_base)->wait_lock
TYPE_LOCK (struct task_struct)->pi_lock

kernel/locking/rtmutex_api.c rt_mutex_adjust_prio_chain() -> rt_mutex_top_waiter()

Type Parameter Key Value
PARAM_VALUE 0 lock 4096-ptr_max
PARAM_VALUE 0 lock->wait_lock.owner_cpu 0
PARAM_VALUE 0 lock->wait_lock.raw_lock.val.counter 0-s32max
RX_PATH
LOCK2 &task->pi_lock
LOCK2 irq
LOCK2 0 &lock->wait_lock
HALF_LOCKED2 flags
TYPE_LOCK (struct rt_mutex_base)->wait_lock
TYPE_LOCK (struct task_struct)->pi_lock

kernel/locking/rtmutex_api.c rt_mutex_adjust_prio_chain() -> rt_mutex_top_waiter()

Type Parameter Key Value
PARAM_VALUE 0 lock 4096-ptr_max
PARAM_VALUE 0 lock->wait_lock.owner_cpu 0
PARAM_VALUE 0 lock->wait_lock.raw_lock.val.counter 0-s32max
RX_PATH
TASK_NOT_RUNNING
LOCK2 &task->pi_lock
LOCK2 irq
LOCK2 0 &lock->wait_lock
TYPE_LOCK (struct rt_mutex_base)->wait_lock
TYPE_LOCK (struct task_struct)->pi_lock

kernel/locking/rtmutex_api.c rt_mutex_adjust_prio_chain() -> rt_mutex_top_waiter()

Type Parameter Key Value
PARAM_VALUE 0 lock 4096-ptr_max
PARAM_VALUE 0 lock->wait_lock.owner_cpu 0
PARAM_VALUE 0 lock->wait_lock.raw_lock.val.counter 0-s32max
PARAM_VALUE 0 lock->waiters.rb_leftmost 4096-ptr_max
PARAM_VALUE 0 lock->waiters.rb_leftmost->rb_left 0
PARAM_VALUE 0 lock->waiters.rb_leftmost->rb_right 0
PARAM_VALUE 0 lock->waiters.rb_root.rb_node 4096-ptr_max
CAPPED_DATA 0 lock 1
RX_PATH
TASK_NOT_RUNNING
LOCK2 irq
LOCK2 0 &lock->wait_lock
TYPE_LOCK (struct rt_mutex_base)->wait_lock

kernel/locking/rtmutex_api.c rt_mutex_adjust_prio_chain() -> rt_mutex_top_waiter()

Type Parameter Key Value
PARAM_VALUE 0 lock 4096-ptr_max
PARAM_VALUE 0 lock->wait_lock.owner_cpu 0
PARAM_VALUE 0 lock->wait_lock.raw_lock.val.counter 0-s32max
PARAM_VALUE 0 lock->waiters.rb_leftmost 4096-ptr_max
PARAM_VALUE 0 lock->waiters.rb_leftmost->rb_left 0
PARAM_VALUE 0 lock->waiters.rb_leftmost->rb_right 0
PARAM_VALUE 0 lock->waiters.rb_root.rb_node 4096-ptr_max
CAPPED_DATA 0 lock 1
RX_PATH
TASK_NOT_RUNNING
LOCK2 &task->pi_lock
LOCK2 irq
LOCK2 0 &lock->wait_lock
TYPE_LOCK (struct rt_mutex_base)->wait_lock
TYPE_LOCK (struct task_struct)->pi_lock

kernel/locking/rtmutex_api.c rt_mutex_adjust_prio_chain() -> rt_mutex_top_waiter()

Type Parameter Key Value
PARAM_VALUE 0 lock 4096-ptr_max
PARAM_VALUE 0 lock->wait_lock.owner_cpu 0
PARAM_VALUE 0 lock->wait_lock.raw_lock.val.counter 0-s32max
PARAM_VALUE 0 lock->waiters.rb_leftmost 4096-ptr_max
PARAM_VALUE 0 lock->waiters.rb_leftmost->rb_left 0
PARAM_VALUE 0 lock->waiters.rb_leftmost->rb_right 0
PARAM_VALUE 0 lock->waiters.rb_root.rb_node 4096-ptr_max
CAPPED_DATA 0 lock 1
RX_PATH
TASK_NOT_RUNNING
LOCK2 &task->pi_lock
LOCK2 irq
LOCK2 0 &lock->wait_lock
TYPE_LOCK (struct rt_mutex_base)->wait_lock
TYPE_LOCK (struct task_struct)->pi_lock

kernel/locking/rtmutex_api.c rt_mutex_adjust_prio_chain() -> rt_mutex_top_waiter()

Type Parameter Key Value
PARAM_VALUE 0 lock 4096-ptr_max
PARAM_VALUE 0 lock->wait_lock.owner_cpu 0
PARAM_VALUE 0 lock->wait_lock.raw_lock.val.counter 0-s32max
PARAM_VALUE 0 lock->waiters.rb_leftmost 4096-ptr_max
PARAM_VALUE 0 lock->waiters.rb_leftmost->rb_left 0
PARAM_VALUE 0 lock->waiters.rb_leftmost->rb_right 0
PARAM_VALUE 0 lock->waiters.rb_root.rb_node 4096-ptr_max
CAPPED_DATA 0 lock 1
RX_PATH
TASK_NOT_RUNNING
LOCK2 &task->pi_lock
LOCK2 irq
LOCK2 0 &lock->wait_lock
TYPE_LOCK (struct rt_mutex_base)->wait_lock
TYPE_LOCK (struct task_struct)->pi_lock

kernel/locking/rtmutex_api.c rt_mutex_slowlock_block() -> rt_mutex_top_waiter()

Type Parameter Key Value
PARAM_VALUE 0 lock 4096-ptr_max
PARAM_VALUE 0 lock->wait_lock.dep_map->name 0-255
PARAM_VALUE 0 lock->wait_lock.owner_cpu 0
PARAM_VALUE 0 lock->wait_lock.raw_lock.val.counter 0-s32max
BUF_SIZE 0 lock (-1),96
BUF_SIZE 0 lock (-1),96
CAPPED_DATA 0 lock 1
DATA_SOURCE 0 lock $0
PREEMPT_ADD
RX_PATH
LOCK2 0 &lock->wait_lock
HALF_LOCKED2 flags
HALF_LOCKED2 irq
TYPE_LOCK (struct rt_mutex_base)->wait_lock

kernel/locking/rtmutex_api.c task_blocks_on_rt_mutex() -> rt_mutex_top_waiter()

Type Parameter Key Value
PARAM_VALUE 0 lock 4096-ptr_max
PARAM_VALUE 0 lock->wait_lock.owner_cpu 0
PARAM_VALUE 0 lock->wait_lock.raw_lock.val.counter 0-s32max
CAPPED_DATA 0 lock 1
DATA_SOURCE 0 lock $0
PREEMPT_ADD <- disables preempt
RX_PATH
LOCK2 &task->pi_lock
HALF_LOCKED2 flags
HALF_LOCKED2 irq
HALF_LOCKED2 0 &lock->wait_lock
TYPE_LOCK (struct rt_mutex_base)->wait_lock
TYPE_LOCK (struct task_struct)->pi_lock

kernel/locking/rtmutex_api.c task_blocks_on_rt_mutex() -> rt_mutex_top_waiter()

Type Parameter Key Value
PARAM_VALUE 0 lock 4096-ptr_max
PARAM_VALUE 0 lock->wait_lock.owner_cpu 0
PARAM_VALUE 0 lock->wait_lock.raw_lock.val.counter 0-s32max
PARAM_VALUE 0 lock->waiters.rb_leftmost 4096-ptr_max
PARAM_VALUE 0 lock->waiters.rb_leftmost->rb_left 0
PARAM_VALUE 0 lock->waiters.rb_leftmost->rb_right 0
PARAM_VALUE 0 lock->waiters.rb_root.rb_node 4096-ptr_max
CAPPED_DATA 0 lock 1
DATA_SOURCE 0 lock $0
PREEMPT_ADD <- disables preempt
RX_PATH
LOCK2 &owner->pi_lock
HALF_LOCKED2 flags
HALF_LOCKED2 irq
HALF_LOCKED2 0 &lock->wait_lock
TYPE_LOCK (struct rt_mutex_base)->wait_lock
TYPE_LOCK (struct task_struct)->pi_lock

kernel/locking/rtmutex_api.c try_to_take_rt_mutex() -> rt_mutex_top_waiter()

Type Parameter Key Value
PARAM_VALUE 0 lock 4096-ptr_max
PARAM_VALUE 0 lock->wait_lock.dep_map->name 0-255
PARAM_VALUE 0 lock->wait_lock.owner_cpu 0
PARAM_VALUE 0 lock->wait_lock.raw_lock.val.counter 0-s32max
BUF_SIZE 0 lock (-1),96
BUF_SIZE 0 lock (-1),96
CAPPED_DATA 0 lock 1
DATA_SOURCE 0 lock $0
PREEMPT_ADD
RX_PATH
LOCK2 0 &lock->wait_lock
HALF_LOCKED2 irq
TYPE_LOCK (struct rt_mutex_base)->wait_lock

kernel/locking/rtmutex_api.c try_to_take_rt_mutex() -> rt_mutex_top_waiter()

Type Parameter Key Value
PARAM_VALUE 0 lock 4096-ptr_max
PARAM_VALUE 0 lock->wait_lock.raw_lock.val.counter 0-s32max
CAPPED_DATA 0 lock 1
DATA_SOURCE 0 lock $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 flags
HALF_LOCKED2 irq
HALF_LOCKED2 0 &lock->wait_lock
TYPE_LOCK (struct rt_mutex_base)->wait_lock

kernel/locking/rtmutex_api.c try_to_take_rt_mutex() -> rt_mutex_top_waiter()

Type Parameter Key Value
PARAM_VALUE 0 lock 4096-ptr_max
PARAM_VALUE 0 lock->wait_lock.raw_lock.val.counter 0-s32max
BUF_SIZE 0 lock (-1),96
BUF_SIZE 0 lock (-1),96
CAPPED_DATA 0 lock 1
DATA_SOURCE 0 lock $0
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 &task->pi_lock
HALF_LOCKED2 flags
HALF_LOCKED2 irq
HALF_LOCKED2 0 &lock->wait_lock
TYPE_LOCK (struct rt_mutex_base)->wait_lock
TYPE_LOCK (struct task_struct)->pi_lock

kernel/futex/pi.c __futex_unlock_pi() -> rt_mutex_top_waiter()

Type Parameter Key Value
PARAM_VALUE 0 lock 4096-ptr_max
PARAM_VALUE 0 lock->wait_lock.raw_lock.val.counter 0-s32max
PREEMPT_ADD <- disables preempt
RX_PATH
LOCK2 &hb->lock
LOCK2 &pi_state->pi_mutex.wait_lock
LOCK2 irq
TYPE_LOCK (struct futex_hash_bucket)->lock
TYPE_LOCK (struct rt_mutex_base)->wait_lock