Lines Matching refs:ss
218 struct cgroup_subsys *ss);
463 struct cgroup_subsys *ss) in cgroup_css() argument
465 if (ss) in cgroup_css()
466 return rcu_dereference_check(cgrp->subsys[ss->id], in cgroup_css()
481 struct cgroup_subsys *ss) in cgroup_tryget_css() argument
486 css = cgroup_css(cgrp, ss); in cgroup_tryget_css()
505 struct cgroup_subsys *ss) in cgroup_e_css() argument
509 if (!ss) in cgroup_e_css()
516 while (!(cgroup_ss_mask(cgrp) & (1 << ss->id))) { in cgroup_e_css()
522 return cgroup_css(cgrp, ss); in cgroup_e_css()
537 struct cgroup_subsys *ss) in cgroup_get_e_css() argument
544 css = cgroup_css(cgrp, ss); in cgroup_get_e_css()
551 css = init_css_set.subsys[ss->id]; in cgroup_get_e_css()
577 if (cft->ss) in of_css()
578 return rcu_dereference_raw(cgrp->subsys[cft->ss->id]); in of_css()
622 #define do_each_subsys_mask(ss, ssid, ss_mask) do { \ argument
629 (ss) = cgroup_subsys[ssid]; \
852 struct cgroup_subsys *ss; in css_set_hash() local
855 for_each_subsys(ss, i) in css_set_hash()
865 struct cgroup_subsys *ss; in put_css_set_locked() local
876 for_each_subsys(ss, ssid) { in put_css_set_locked()
993 struct cgroup_subsys *ss; in find_existing_css_set() local
1003 for_each_subsys(ss, i) { in find_existing_css_set()
1009 template[i] = cgroup_e_css(cgrp, ss); in find_existing_css_set()
1114 struct cgroup_subsys *ss; in find_css_set() local
1174 for_each_subsys(ss, ssid) { in find_css_set()
1398 struct cgroup_subsys *ss = cft->ss; in cgroup_file_name() local
1400 if (cft->ss && !(cft->flags & CFTYPE_NO_PREFIX) && in cgroup_file_name()
1403 cgroup_on_dfl(cgrp) ? ss->name : ss->legacy_name, in cgroup_file_name()
1448 struct cgroup_subsys *ss; in cgroup_calc_subtree_ss_mask() local
1458 do_each_subsys_mask(ss, ssid, cur_ss_mask) { in cgroup_calc_subtree_ss_mask()
1459 new_ss_mask |= ss->depends_on; in cgroup_calc_subtree_ss_mask()
1557 struct cgroup_subsys_state *css = cgroup_css(cgrp, cft->ss); in cgroup_rm_file()
1584 if (!css->ss) { in css_clear_dir()
1592 list_for_each_entry(cfts, &css->ss->cfts, node) in css_clear_dir()
1612 if (!css->ss) { in css_populate_dir()
1622 list_for_each_entry(cfts, &css->ss->cfts, node) { in css_populate_dir()
1635 list_for_each_entry(cfts, &css->ss->cfts, node) { in css_populate_dir()
1646 struct cgroup_subsys *ss; in rebind_subsystems() local
1651 do_each_subsys_mask(ss, ssid, ss_mask) { in rebind_subsystems()
1657 if (css_next_child(NULL, cgroup_css(&ss->root->cgrp, ss)) && in rebind_subsystems()
1658 !ss->implicit_on_dfl) in rebind_subsystems()
1662 if (ss->root != &cgrp_dfl_root && dst_root != &cgrp_dfl_root) in rebind_subsystems()
1666 do_each_subsys_mask(ss, ssid, ss_mask) { in rebind_subsystems()
1667 struct cgroup_root *src_root = ss->root; in rebind_subsystems()
1669 struct cgroup_subsys_state *css = cgroup_css(scgrp, ss); in rebind_subsystems()
1672 WARN_ON(!css || cgroup_css(dcgrp, ss)); in rebind_subsystems()
1682 ss->root = dst_root; in rebind_subsystems()
1687 list_move_tail(&cset->e_cset_node[ss->id], in rebind_subsystems()
1688 &dcgrp->e_csets[ss->id]); in rebind_subsystems()
1703 ss->name, ret); in rebind_subsystems()
1705 if (ss->bind) in rebind_subsystems()
1706 ss->bind(css); in rebind_subsystems()
1853 struct cgroup_subsys *ss; in init_cgroup_housekeeping() local
1869 for_each_subsys(ss, ssid) in init_cgroup_housekeeping()
2293 struct cgroup_subsys *ss; in cgroup_migrate_execute() local
2300 do_each_subsys_mask(ss, ssid, mgctx->ss_mask) { in cgroup_migrate_execute()
2301 if (ss->can_attach) { in cgroup_migrate_execute()
2303 ret = ss->can_attach(tset); in cgroup_migrate_execute()
2340 do_each_subsys_mask(ss, ssid, mgctx->ss_mask) { in cgroup_migrate_execute()
2341 if (ss->attach) { in cgroup_migrate_execute()
2343 ss->attach(tset); in cgroup_migrate_execute()
2353 do_each_subsys_mask(ss, ssid, mgctx->ss_mask) { in cgroup_migrate_execute()
2356 if (ss->cancel_attach) { in cgroup_migrate_execute()
2358 ss->cancel_attach(tset); in cgroup_migrate_execute()
2521 struct cgroup_subsys *ss; in cgroup_migrate_prepare_dst() local
2552 for_each_subsys(ss, ssid) in cgroup_migrate_prepare_dst()
2698 struct cgroup_subsys *ss; in cgroup_procs_write_finish() local
2705 for_each_subsys(ss, ssid) in cgroup_procs_write_finish()
2706 if (ss->post_attach) in cgroup_procs_write_finish()
2707 ss->post_attach(); in cgroup_procs_write_finish()
2712 struct cgroup_subsys *ss; in cgroup_print_ss_mask() local
2716 do_each_subsys_mask(ss, ssid, ss_mask) { in cgroup_print_ss_mask()
2719 seq_printf(seq, "%s", ss->name); in cgroup_print_ss_mask()
2810 struct cgroup_subsys *ss; in cgroup_lock_and_drain_offline() local
2817 for_each_subsys(ss, ssid) { in cgroup_lock_and_drain_offline()
2818 struct cgroup_subsys_state *css = cgroup_css(dsct, ss); in cgroup_lock_and_drain_offline()
2901 struct cgroup_subsys *ss = css->ss; in css_visible() local
2904 if (cgroup_control(cgrp) & (1 << ss->id)) in css_visible()
2906 if (!(cgroup_ss_mask(cgrp) & (1 << ss->id))) in css_visible()
2908 return cgroup_on_dfl(cgrp) && ss->implicit_on_dfl; in css_visible()
2928 struct cgroup_subsys *ss; in cgroup_apply_control_enable() local
2932 for_each_subsys(ss, ssid) { in cgroup_apply_control_enable()
2933 struct cgroup_subsys_state *css = cgroup_css(dsct, ss); in cgroup_apply_control_enable()
2937 if (!(cgroup_ss_mask(dsct) & (1 << ss->id))) in cgroup_apply_control_enable()
2941 css = css_create(dsct, ss); in cgroup_apply_control_enable()
2974 struct cgroup_subsys *ss; in cgroup_apply_control_disable() local
2978 for_each_subsys(ss, ssid) { in cgroup_apply_control_disable()
2979 struct cgroup_subsys_state *css = cgroup_css(dsct, ss); in cgroup_apply_control_disable()
2987 !(cgroup_ss_mask(dsct) & (1 << ss->id))) { in cgroup_apply_control_disable()
2991 if (ss->css_reset) in cgroup_apply_control_disable()
2992 ss->css_reset(css); in cgroup_apply_control_disable()
3101 struct cgroup_subsys *ss; in cgroup_subtree_control_write() local
3113 do_each_subsys_mask(ss, ssid, ~cgrp_dfl_inhibit_ss_mask) { in cgroup_subtree_control_write()
3115 strcmp(tok + 1, ss->name)) in cgroup_subtree_control_write()
3137 for_each_subsys(ss, ssid) { in cgroup_subtree_control_write()
3391 struct cgroup_subsys *ss = cgroup_subsys[ssid]; in cgroup_extra_stat_show() local
3395 if (!ss->css_extra_stat_show) in cgroup_extra_stat_show()
3398 css = cgroup_tryget_css(cgrp, ss); in cgroup_extra_stat_show()
3402 ret = ss->css_extra_stat_show(seq, css); in cgroup_extra_stat_show()
3466 css = cgroup_css(cgrp, cft->ss); in cgroup_file_write()
3645 struct cgroup_subsys *ss = cfts[0].ss; in cgroup_apply_cftypes() local
3646 struct cgroup *root = &ss->root->cgrp; in cgroup_apply_cftypes()
3653 css_for_each_descendant_pre(css, cgroup_css(root, ss)) { in cgroup_apply_cftypes()
3678 cft->ss = NULL; in cgroup_exit_cftypes()
3685 static int cgroup_init_cftypes(struct cgroup_subsys *ss, struct cftype *cfts) in cgroup_init_cftypes() argument
3692 WARN_ON(cft->ss || cft->kf_ops); in cgroup_init_cftypes()
3713 cft->ss = ss; in cgroup_init_cftypes()
3723 if (!cfts || !cfts[0].ss) in cgroup_rm_cftypes_locked()
3767 static int cgroup_add_cftypes(struct cgroup_subsys *ss, struct cftype *cfts) in cgroup_add_cftypes() argument
3771 if (!cgroup_ssid_enabled(ss->id)) in cgroup_add_cftypes()
3777 ret = cgroup_init_cftypes(ss, cfts); in cgroup_add_cftypes()
3783 list_add_tail(&cfts->node, &ss->cfts); in cgroup_add_cftypes()
3800 int cgroup_add_dfl_cftypes(struct cgroup_subsys *ss, struct cftype *cfts) in cgroup_add_dfl_cftypes() argument
3806 return cgroup_add_cftypes(ss, cfts); in cgroup_add_dfl_cftypes()
3817 int cgroup_add_legacy_cftypes(struct cgroup_subsys *ss, struct cftype *cfts) in cgroup_add_legacy_cftypes() argument
3823 return cgroup_add_cftypes(ss, cfts); in cgroup_add_legacy_cftypes()
4107 if (it->ss) { in css_task_iter_next_css_set()
4108 cset = container_of(l, struct css_set, e_cset_node[it->ss->id]); in css_task_iter_next_css_set()
4232 it->ss = css->ss; in css_task_iter_start()
4235 if (it->ss) in css_task_iter_start()
4236 it->cset_pos = &css->cgroup->e_csets[css->ss->id]; in css_task_iter_start()
4578 struct cgroup_subsys *ss = css->ss; in css_free_rwork_fn() local
4583 if (ss) { in css_free_rwork_fn()
4588 ss->css_free(css); in css_free_rwork_fn()
4589 cgroup_idr_remove(&ss->css_idr, id); in css_free_rwork_fn()
4627 struct cgroup_subsys *ss = css->ss; in css_release_work_fn() local
4635 if (ss) { in css_release_work_fn()
4642 cgroup_idr_replace(&ss->css_idr, NULL, css->id); in css_release_work_fn()
4643 if (ss->css_released) in css_release_work_fn()
4644 ss->css_released(css); in css_release_work_fn()
4691 struct cgroup_subsys *ss, struct cgroup *cgrp) in init_and_link_css() argument
4699 css->ss = ss; in init_and_link_css()
4708 css->parent = cgroup_css(cgroup_parent(cgrp), ss); in init_and_link_css()
4712 if (cgroup_on_dfl(cgrp) && ss->css_rstat_flush) in init_and_link_css()
4715 BUG_ON(cgroup_css(cgrp, ss)); in init_and_link_css()
4721 struct cgroup_subsys *ss = css->ss; in online_css() local
4726 if (ss->css_online) in online_css()
4727 ret = ss->css_online(css); in online_css()
4730 rcu_assign_pointer(css->cgroup->subsys[ss->id], css); in online_css()
4742 struct cgroup_subsys *ss = css->ss; in offline_css() local
4749 if (ss->css_offline) in offline_css()
4750 ss->css_offline(css); in offline_css()
4753 RCU_INIT_POINTER(css->cgroup->subsys[ss->id], NULL); in offline_css()
4768 struct cgroup_subsys *ss) in css_create() argument
4771 struct cgroup_subsys_state *parent_css = cgroup_css(parent, ss); in css_create()
4777 css = ss->css_alloc(parent_css); in css_create()
4783 init_and_link_css(css, ss, cgrp); in css_create()
4789 err = cgroup_idr_alloc(&ss->css_idr, NULL, 2, 0, GFP_KERNEL); in css_create()
4796 cgroup_idr_replace(&ss->css_idr, css, css->id); in css_create()
4802 if (ss->broken_hierarchy && !ss->warned_broken_hierarchy && in css_create()
4805 current->comm, current->pid, ss->name); in css_create()
4806 if (!strcmp(ss->name, "memory")) in css_create()
4808 ss->warned_broken_hierarchy = true; in css_create()
5195 static void __init cgroup_init_subsys(struct cgroup_subsys *ss, bool early) in cgroup_init_subsys() argument
5199 pr_debug("Initializing cgroup subsys %s\n", ss->name); in cgroup_init_subsys()
5203 idr_init(&ss->css_idr); in cgroup_init_subsys()
5204 INIT_LIST_HEAD(&ss->cfts); in cgroup_init_subsys()
5207 ss->root = &cgrp_dfl_root; in cgroup_init_subsys()
5208 css = ss->css_alloc(cgroup_css(&cgrp_dfl_root.cgrp, ss)); in cgroup_init_subsys()
5211 init_and_link_css(css, ss, &cgrp_dfl_root.cgrp); in cgroup_init_subsys()
5223 css->id = cgroup_idr_alloc(&ss->css_idr, css, 1, 2, GFP_KERNEL); in cgroup_init_subsys()
5231 init_css_set.subsys[ss->id] = css; in cgroup_init_subsys()
5233 have_fork_callback |= (bool)ss->fork << ss->id; in cgroup_init_subsys()
5234 have_exit_callback |= (bool)ss->exit << ss->id; in cgroup_init_subsys()
5235 have_free_callback |= (bool)ss->free << ss->id; in cgroup_init_subsys()
5236 have_canfork_callback |= (bool)ss->can_fork << ss->id; in cgroup_init_subsys()
5257 struct cgroup_subsys *ss; in cgroup_init_early() local
5265 for_each_subsys(ss, i) { in cgroup_init_early()
5266 WARN(!ss->css_alloc || !ss->css_free || ss->name || ss->id, in cgroup_init_early()
5268 i, cgroup_subsys_name[i], ss->css_alloc, ss->css_free, in cgroup_init_early()
5269 ss->id, ss->name); in cgroup_init_early()
5273 ss->id = i; in cgroup_init_early()
5274 ss->name = cgroup_subsys_name[i]; in cgroup_init_early()
5275 if (!ss->legacy_name) in cgroup_init_early()
5276 ss->legacy_name = cgroup_subsys_name[i]; in cgroup_init_early()
5278 if (ss->early_init) in cgroup_init_early()
5279 cgroup_init_subsys(ss, true); in cgroup_init_early()
5294 struct cgroup_subsys *ss; in cgroup_init() local
5325 for_each_subsys(ss, ssid) { in cgroup_init()
5326 if (ss->early_init) { in cgroup_init()
5328 init_css_set.subsys[ss->id]; in cgroup_init()
5330 css->id = cgroup_idr_alloc(&ss->css_idr, css, 1, 2, in cgroup_init()
5334 cgroup_init_subsys(ss, false); in cgroup_init()
5348 ss->name); in cgroup_init()
5354 ss->name); in cgroup_init()
5356 cgrp_dfl_root.subsys_mask |= 1 << ss->id; in cgroup_init()
5359 WARN_ON(ss->implicit_on_dfl && !ss->threaded); in cgroup_init()
5361 if (ss->implicit_on_dfl) in cgroup_init()
5362 cgrp_dfl_implicit_ss_mask |= 1 << ss->id; in cgroup_init()
5363 else if (!ss->dfl_cftypes) in cgroup_init()
5364 cgrp_dfl_inhibit_ss_mask |= 1 << ss->id; in cgroup_init()
5366 if (ss->threaded) in cgroup_init()
5367 cgrp_dfl_threaded_ss_mask |= 1 << ss->id; in cgroup_init()
5369 if (ss->dfl_cftypes == ss->legacy_cftypes) { in cgroup_init()
5370 WARN_ON(cgroup_add_cftypes(ss, ss->dfl_cftypes)); in cgroup_init()
5372 WARN_ON(cgroup_add_dfl_cftypes(ss, ss->dfl_cftypes)); in cgroup_init()
5373 WARN_ON(cgroup_add_legacy_cftypes(ss, ss->legacy_cftypes)); in cgroup_init()
5376 if (ss->bind) in cgroup_init()
5377 ss->bind(init_css_set.subsys[ssid]); in cgroup_init()
5446 struct cgroup_subsys *ss; in proc_cgroup_show() local
5455 for_each_subsys(ss, ssid) in proc_cgroup_show()
5458 ss->legacy_name); in proc_cgroup_show()
5527 struct cgroup_subsys *ss; in cgroup_can_fork() local
5530 do_each_subsys_mask(ss, i, have_canfork_callback) { in cgroup_can_fork()
5531 ret = ss->can_fork(child); in cgroup_can_fork()
5539 for_each_subsys(ss, j) { in cgroup_can_fork()
5542 if (ss->cancel_fork) in cgroup_can_fork()
5543 ss->cancel_fork(child); in cgroup_can_fork()
5558 struct cgroup_subsys *ss; in cgroup_cancel_fork() local
5561 for_each_subsys(ss, i) in cgroup_cancel_fork()
5562 if (ss->cancel_fork) in cgroup_cancel_fork()
5563 ss->cancel_fork(child); in cgroup_cancel_fork()
5578 struct cgroup_subsys *ss; in cgroup_post_fork() local
5620 do_each_subsys_mask(ss, i, have_fork_callback) { in cgroup_post_fork()
5621 ss->fork(child); in cgroup_post_fork()
5646 struct cgroup_subsys *ss; in cgroup_exit() local
5666 do_each_subsys_mask(ss, i, have_exit_callback) { in cgroup_exit()
5667 ss->exit(tsk); in cgroup_exit()
5674 struct cgroup_subsys *ss; in cgroup_free() local
5677 do_each_subsys_mask(ss, ssid, have_free_callback) { in cgroup_free()
5678 ss->free(task); in cgroup_free()
5686 struct cgroup_subsys *ss; in cgroup_disable() local
5694 for_each_subsys(ss, i) { in cgroup_disable()
5695 if (strcmp(token, ss->name) && in cgroup_disable()
5696 strcmp(token, ss->legacy_name)) in cgroup_disable()
5715 struct cgroup_subsys *ss) in css_tryget_online_from_dir() argument
5736 css = cgroup_css(cgrp, ss); in css_tryget_online_from_dir()
5753 struct cgroup_subsys_state *css_from_id(int id, struct cgroup_subsys *ss) in css_from_id() argument
5756 return idr_find(&ss->css_idr, id); in css_from_id()
5952 struct cgroup_subsys *ss; in delegate_show() local
5959 for_each_subsys(ss, ssid) in delegate_show()
5960 ret += show_delegatable_files(ss->dfl_cftypes, buf + ret, in delegate_show()