Defined in 1 files as a function:

Referenced in 1 files:

Smatch caller information:

kernel/workqueue.c kick_pool_pick() -> first_idle_worker()

Type Parameter Key Value
PARAM_VALUE 0 pool 4096-ptr_max
BUF_SIZE 0 pool (-1),2160
BUF_SIZE 0 pool (-1),2160
CAPPED_DATA 0 pool 1
DATA_SOURCE 0 pool $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 irq
HALF_LOCKED2 rcu_read
HALF_LOCKED2 0 &pool->lock
TYPE_LOCK (struct worker_pool)->lock

kernel/workqueue.c put_unbound_pool() -> first_idle_worker()

Type Parameter Key Value
PARAM_VALUE 0 pool 4096-ptr_max
BUF_SIZE 0 pool (-1),1080
BUF_SIZE 0 pool (-1),1080
CAPPED_DATA 0 &pool->worklist 1
DATA_SOURCE 0 pool $0
PARAM_COMPARE 0 &pool->worklist == $0->worklist.next
BIT_INFO 0 pool->flags 0x2,0xffffffffffffffff
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 global &wq_pool_attach_mutex
LOCK2 irq
LOCK2 0 &pool->lock
HALF_LOCKED2 global &wq_pool_mutex
TYPE_LOCK (struct worker_pool)->lock

kernel/workqueue.c put_unbound_pool() -> first_idle_worker()

Type Parameter Key Value
PARAM_VALUE 0 pool 4096-ptr_max
BUF_SIZE 0 pool (-1),1080
BUF_SIZE 0 pool (-1),1080
CAPPED_DATA 0 &pool->worklist 1
DATA_SOURCE 0 pool $0
PARAM_COMPARE 0 &pool->idle_list != $0->idle_list.next
PARAM_COMPARE 0 &pool->worklist == $0->worklist.next
BIT_INFO 0 pool->flags 0x2,0xffffffffffffffff
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 global &wq_pool_attach_mutex
LOCK2 irq
LOCK2 0 &pool->lock
HALF_LOCKED2 global &wq_pool_mutex
TYPE_LOCK (struct worker_pool)->lock