Lines Matching +refs:get +refs:addr +refs:attrs

193 	struct workqueue_attrs	*attrs;		/* I: worker attributes */  member
520 static void *work_debug_hint(void *addr) in work_debug_hint() argument
522 return ((struct work_struct *) addr)->func; in work_debug_hint()
525 static bool work_is_static_object(void *addr) in work_is_static_object() argument
527 struct work_struct *work = addr; in work_is_static_object()
536 static bool work_fixup_init(void *addr, enum debug_obj_state state) in work_fixup_init() argument
538 struct work_struct *work = addr; in work_fixup_init()
554 static bool work_fixup_free(void *addr, enum debug_obj_state state) in work_fixup_free() argument
556 struct work_struct *work = addr; in work_fixup_free()
1140 if (!pool->attrs->affn_strict && in kick_pool()
1141 !cpumask_test_cpu(p->wake_cpu, pool->attrs->__pod_cpumask)) { in kick_pool()
1144 p->wake_cpu = cpumask_any_distribute(pool->attrs->__pod_cpumask); in kick_pool()
2087 if (pool->cpu < 0 && pool->attrs->affn_strict) in pool_allowed_cpus()
2088 return pool->attrs->__pod_cpumask; in pool_allowed_cpus()
2090 return pool->attrs->cpumask; in pool_allowed_cpus()
2192 pool->attrs->nice < 0 ? "H" : ""); in create_worker()
2209 set_user_nice(worker->task, pool->attrs->nice); in create_worker()
3711 void free_workqueue_attrs(struct workqueue_attrs *attrs) in free_workqueue_attrs() argument
3713 if (attrs) { in free_workqueue_attrs()
3714 free_cpumask_var(attrs->cpumask); in free_workqueue_attrs()
3715 free_cpumask_var(attrs->__pod_cpumask); in free_workqueue_attrs()
3716 kfree(attrs); in free_workqueue_attrs()
3730 struct workqueue_attrs *attrs; in alloc_workqueue_attrs() local
3732 attrs = kzalloc(sizeof(*attrs), GFP_KERNEL); in alloc_workqueue_attrs()
3733 if (!attrs) in alloc_workqueue_attrs()
3735 if (!alloc_cpumask_var(&attrs->cpumask, GFP_KERNEL)) in alloc_workqueue_attrs()
3737 if (!alloc_cpumask_var(&attrs->__pod_cpumask, GFP_KERNEL)) in alloc_workqueue_attrs()
3740 cpumask_copy(attrs->cpumask, cpu_possible_mask); in alloc_workqueue_attrs()
3741 attrs->affn_scope = WQ_AFFN_DFL; in alloc_workqueue_attrs()
3742 return attrs; in alloc_workqueue_attrs()
3744 free_workqueue_attrs(attrs); in alloc_workqueue_attrs()
3769 static void wqattrs_clear_for_pool(struct workqueue_attrs *attrs) in wqattrs_clear_for_pool() argument
3771 attrs->affn_scope = WQ_AFFN_NR_TYPES; in wqattrs_clear_for_pool()
3772 attrs->ordered = false; in wqattrs_clear_for_pool()
3776 static u32 wqattrs_hash(const struct workqueue_attrs *attrs) in wqattrs_hash() argument
3780 hash = jhash_1word(attrs->nice, hash); in wqattrs_hash()
3781 hash = jhash(cpumask_bits(attrs->cpumask), in wqattrs_hash()
3783 hash = jhash(cpumask_bits(attrs->__pod_cpumask), in wqattrs_hash()
3785 hash = jhash_1word(attrs->affn_strict, hash); in wqattrs_hash()
3805 static void wqattrs_actualize_cpumask(struct workqueue_attrs *attrs, in wqattrs_actualize_cpumask() argument
3813 cpumask_and(attrs->cpumask, attrs->cpumask, unbound_cpumask); in wqattrs_actualize_cpumask()
3814 if (unlikely(cpumask_empty(attrs->cpumask))) in wqattrs_actualize_cpumask()
3815 cpumask_copy(attrs->cpumask, unbound_cpumask); in wqattrs_actualize_cpumask()
3820 wqattrs_pod_type(const struct workqueue_attrs *attrs) in wqattrs_pod_type() argument
3828 if (attrs->affn_scope == WQ_AFFN_DFL) in wqattrs_pod_type()
3831 scope = attrs->affn_scope; in wqattrs_pod_type()
3835 if (!WARN_ON_ONCE(attrs->affn_scope == WQ_AFFN_NR_TYPES) && in wqattrs_pod_type()
3883 pool->attrs = alloc_workqueue_attrs(); in init_worker_pool()
3884 if (!pool->attrs) in init_worker_pool()
3887 wqattrs_clear_for_pool(pool->attrs); in init_worker_pool()
3946 free_workqueue_attrs(pool->attrs); in rcu_free_pool()
4047 static struct worker_pool *get_unbound_pool(const struct workqueue_attrs *attrs) in get_unbound_pool() argument
4050 u32 hash = wqattrs_hash(attrs); in get_unbound_pool()
4058 if (wqattrs_equal(pool->attrs, attrs)) { in get_unbound_pool()
4066 if (cpumask_subset(attrs->__pod_cpumask, pt->pod_cpus[pod])) { in get_unbound_pool()
4078 copy_workqueue_attrs(pool->attrs, attrs); in get_unbound_pool()
4079 wqattrs_clear_for_pool(pool->attrs); in get_unbound_pool()
4230 const struct workqueue_attrs *attrs) in alloc_unbound_pwq() argument
4237 pool = get_unbound_pool(attrs); in alloc_unbound_pwq()
4267 static void wq_calc_pod_cpumask(struct workqueue_attrs *attrs, int cpu, in wq_calc_pod_cpumask() argument
4270 const struct wq_pod_type *pt = wqattrs_pod_type(attrs); in wq_calc_pod_cpumask()
4274 cpumask_and(attrs->__pod_cpumask, pt->pod_cpus[pod], attrs->cpumask); in wq_calc_pod_cpumask()
4275 cpumask_and(attrs->__pod_cpumask, attrs->__pod_cpumask, cpu_online_mask); in wq_calc_pod_cpumask()
4277 cpumask_clear_cpu(cpu_going_down, attrs->__pod_cpumask); in wq_calc_pod_cpumask()
4279 if (cpumask_empty(attrs->__pod_cpumask)) { in wq_calc_pod_cpumask()
4280 cpumask_copy(attrs->__pod_cpumask, attrs->cpumask); in wq_calc_pod_cpumask()
4285 cpumask_and(attrs->__pod_cpumask, attrs->cpumask, pt->pod_cpus[pod]); in wq_calc_pod_cpumask()
4287 if (cpumask_empty(attrs->__pod_cpumask)) in wq_calc_pod_cpumask()
4312 struct workqueue_attrs *attrs; /* attrs to apply */ member
4328 free_workqueue_attrs(ctx->attrs); in apply_wqattrs_cleanup()
4337 const struct workqueue_attrs *attrs, in apply_wqattrs_prepare() argument
4346 if (WARN_ON(attrs->affn_scope < 0 || in apply_wqattrs_prepare()
4347 attrs->affn_scope >= WQ_AFFN_NR_TYPES)) in apply_wqattrs_prepare()
4361 copy_workqueue_attrs(new_attrs, attrs); in apply_wqattrs_prepare()
4381 copy_workqueue_attrs(new_attrs, attrs); in apply_wqattrs_prepare()
4384 ctx->attrs = new_attrs; in apply_wqattrs_prepare()
4403 copy_workqueue_attrs(ctx->wq->unbound_attrs, ctx->attrs); in apply_wqattrs_commit()
4418 const struct workqueue_attrs *attrs) in apply_workqueue_attrs_locked() argument
4434 ctx = apply_wqattrs_prepare(wq, attrs, wq_unbound_cpumask); in apply_workqueue_attrs_locked()
4463 const struct workqueue_attrs *attrs) in apply_workqueue_attrs() argument
4470 ret = apply_workqueue_attrs_locked(wq, attrs); in apply_workqueue_attrs()
4524 if (wqattrs_equal(target_attrs, pwq->pool->attrs)) in wq_update_pod()
5069 pr_cont(" cpus=%*pbl", nr_cpumask_bits, pool->attrs->cpumask); in pr_cont_pool_info()
5072 pr_cont(" flags=0x%x nice=%d", pool->flags, pool->attrs->nice); in pr_cont_pool_info()
5513 if (!cpumask_test_cpu(cpu, pool->attrs->cpumask)) in restore_unbound_workers_cpumask()
5516 cpumask_and(&cpumask, pool->attrs->cpumask, cpu_online_mask); in restore_unbound_workers_cpumask()
5557 struct workqueue_attrs *attrs = wq->unbound_attrs; in workqueue_online_cpu() local
5559 if (attrs) { in workqueue_online_cpu()
5560 const struct wq_pod_type *pt = wqattrs_pod_type(attrs); in workqueue_online_cpu()
5585 struct workqueue_attrs *attrs = wq->unbound_attrs; in workqueue_offline_cpu() local
5587 if (attrs) { in workqueue_offline_cpu()
5588 const struct wq_pod_type *pt = wqattrs_pod_type(attrs); in workqueue_offline_cpu()
5900 .get = wq_affn_dfl_get,
6001 struct workqueue_attrs *attrs; in wq_sysfs_prep_attrs() local
6005 attrs = alloc_workqueue_attrs(); in wq_sysfs_prep_attrs()
6006 if (!attrs) in wq_sysfs_prep_attrs()
6009 copy_workqueue_attrs(attrs, wq->unbound_attrs); in wq_sysfs_prep_attrs()
6010 return attrs; in wq_sysfs_prep_attrs()
6017 struct workqueue_attrs *attrs; in wq_nice_store() local
6022 attrs = wq_sysfs_prep_attrs(wq); in wq_nice_store()
6023 if (!attrs) in wq_nice_store()
6026 if (sscanf(buf, "%d", &attrs->nice) == 1 && in wq_nice_store()
6027 attrs->nice >= MIN_NICE && attrs->nice <= MAX_NICE) in wq_nice_store()
6028 ret = apply_workqueue_attrs_locked(wq, attrs); in wq_nice_store()
6034 free_workqueue_attrs(attrs); in wq_nice_store()
6056 struct workqueue_attrs *attrs; in wq_cpumask_store() local
6061 attrs = wq_sysfs_prep_attrs(wq); in wq_cpumask_store()
6062 if (!attrs) in wq_cpumask_store()
6065 ret = cpumask_parse(buf, attrs->cpumask); in wq_cpumask_store()
6067 ret = apply_workqueue_attrs_locked(wq, attrs); in wq_cpumask_store()
6071 free_workqueue_attrs(attrs); in wq_cpumask_store()
6099 struct workqueue_attrs *attrs; in wq_affn_scope_store() local
6107 attrs = wq_sysfs_prep_attrs(wq); in wq_affn_scope_store()
6108 if (attrs) { in wq_affn_scope_store()
6109 attrs->affn_scope = affn; in wq_affn_scope_store()
6110 ret = apply_workqueue_attrs_locked(wq, attrs); in wq_affn_scope_store()
6113 free_workqueue_attrs(attrs); in wq_affn_scope_store()
6131 struct workqueue_attrs *attrs; in wq_affinity_strict_store() local
6138 attrs = wq_sysfs_prep_attrs(wq); in wq_affinity_strict_store()
6139 if (attrs) { in wq_affinity_strict_store()
6140 attrs->affn_strict = (bool)v; in wq_affinity_strict_store()
6141 ret = apply_workqueue_attrs_locked(wq, attrs); in wq_affinity_strict_store()
6144 free_workqueue_attrs(attrs); in wq_affinity_strict_store()
6565 .get = param_get_ulong,
6650 cpumask_copy(pool->attrs->cpumask, cpumask_of(cpu)); in workqueue_init_early()
6651 cpumask_copy(pool->attrs->__pod_cpumask, cpumask_of(cpu)); in workqueue_init_early()
6652 pool->attrs->nice = std_nice[i++]; in workqueue_init_early()
6653 pool->attrs->affn_strict = true; in workqueue_init_early()
6665 struct workqueue_attrs *attrs; in workqueue_init_early() local
6667 BUG_ON(!(attrs = alloc_workqueue_attrs())); in workqueue_init_early()
6668 attrs->nice = std_nice[i]; in workqueue_init_early()
6669 unbound_std_wq_attrs[i] = attrs; in workqueue_init_early()
6675 BUG_ON(!(attrs = alloc_workqueue_attrs())); in workqueue_init_early()
6676 attrs->nice = std_nice[i]; in workqueue_init_early()
6677 attrs->ordered = true; in workqueue_init_early()
6678 ordered_wq_attrs[i] = attrs; in workqueue_init_early()