pool_workqueue
struct pool_workqueue;
TP_PROTO(int req_cpu, struct pool_workqueue *pwq,
struct pool_workqueue *pwq = worker->current_pwq;
static void get_pwq(struct pool_workqueue *pwq)
static void put_pwq(struct pool_workqueue *pwq)
static void put_pwq_unlocked(struct pool_workqueue *pwq)
static bool pwq_is_empty(struct pool_workqueue *pwq)
static void __pwq_activate_work(struct pool_workqueue *pwq,
static bool pwq_tryinc_nr_active(struct pool_workqueue *pwq, bool fill)
static bool pwq_activate_first_inactive(struct pool_workqueue *pwq, bool fill)
struct pool_workqueue *pwq;
pwq = list_first_entry_or_null(&wq->pwqs, struct pool_workqueue,
struct pool_workqueue *pwq;
struct pool_workqueue, pending_node);
static void pwq_dec_nr_active(struct pool_workqueue *pwq)
static void pwq_dec_nr_in_flight(struct pool_workqueue *pwq, unsigned long work_data)
struct pool_workqueue *pwq;
static void insert_work(struct pool_workqueue *pwq, struct work_struct *work,
struct pool_workqueue *pwq;
static void send_mayday(struct pool_workqueue *pwq)
struct pool_workqueue *pwq = get_work_pwq(work);
static bool assign_rescuer_work(struct pool_workqueue *pwq, struct worker *rescuer)
struct pool_workqueue *pwq = list_first_entry(&wq->maydays,
struct pool_workqueue, mayday_node);
struct pool_workqueue __rcu *dfl_pwq; /* PW: only for unbound wqs */
static void insert_wq_barrier(struct pool_workqueue *pwq,
struct pool_workqueue __rcu * __percpu *cpu_pwq; /* I: per-cpu pwqs */
struct pool_workqueue *pwq;
struct pool_workqueue *pwq;
struct pool_workqueue *pwq;
struct pool_workqueue *pwq = container_of(work, struct pool_workqueue,
static void init_pwq(struct pool_workqueue *pwq, struct workqueue_struct *wq,
static void link_pwq(struct pool_workqueue *pwq)
static struct pool_workqueue *alloc_unbound_pwq(struct workqueue_struct *wq,
struct pool_workqueue *pwq;
static struct pool_workqueue *install_unbound_pwq(struct workqueue_struct *wq,
int cpu, struct pool_workqueue *pwq)
struct pool_workqueue __rcu **slot = unbound_pwq_slot(wq, cpu);
struct pool_workqueue *old_pwq;
struct pool_workqueue *dfl_pwq;
struct pool_workqueue *pwq_tbl[];
static void show_pwq(struct pool_workqueue *pwq);
struct pool_workqueue *old_pwq = NULL, *pwq;
wq->cpu_pwq = alloc_percpu(struct pool_workqueue *);
struct pool_workqueue **pwq_p;
struct pool_workqueue *dfl_pwq;
struct pool_workqueue *pwq = *per_cpu_ptr(wq->cpu_pwq, cpu);
struct pool_workqueue *pwq;
static bool pwq_busy(struct pool_workqueue *pwq)
struct pool_workqueue *pwq;
struct pool_workqueue *pwq;
struct pool_workqueue *pwq = NULL;
static void show_pwq(struct pool_workqueue *pwq)
struct pool_workqueue *pwq;
struct pool_workqueue *pwq;
static struct pool_workqueue __rcu **
static struct pool_workqueue *unbound_pwq(struct workqueue_struct *wq, int cpu)
BUILD_BUG_ON(__alignof__(struct pool_workqueue) < __alignof__(long long));
pwq_cache = KMEM_CACHE(pool_workqueue, SLAB_PANIC);
static void set_work_pwq(struct work_struct *work, struct pool_workqueue *pwq,
static inline struct pool_workqueue *work_struct_pwq(unsigned long data)
return (struct pool_workqueue *)(data & WORK_STRUCT_PWQ_MASK);
static struct pool_workqueue *get_work_pwq(struct work_struct *work)
struct pool_workqueue *current_pwq; /* K: pwq */