aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/sched
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2014-02-08 10:36:58 -0500
committerTejun Heo <tj@kernel.org>2014-02-08 10:36:58 -0500
commit073219e995b4a3f8cf1ce8228b7ef440b6994ac0 (patch)
treed140fc2e94bd8fd09270286b7267fb087a79f288 /kernel/sched
parent3ed80a62bf959d34ebd4d553b026fbe7e6fbcc54 (diff)
cgroup: clean up cgroup_subsys names and initialization
cgroup_subsys is a bit messier than it needs to be. * The name of a subsys can be different from its internal identifier defined in cgroup_subsys.h. Most subsystems use the matching name but three - cpu, memory and perf_event - use different ones. * cgroup_subsys_id enums are postfixed with _subsys_id and each cgroup_subsys is postfixed with _subsys. cgroup.h is widely included throughout various subsystems, it doesn't and shouldn't have claim on such generic names which don't have any qualifier indicating that they belong to cgroup. * cgroup_subsys->subsys_id should always equal the matching cgroup_subsys_id enum; however, we require each controller to initialize it and then BUG if they don't match, which is a bit silly. This patch cleans up cgroup_subsys names and initialization by doing the followings. * cgroup_subsys_id enums are now postfixed with _cgrp_id, and each cgroup_subsys with _cgrp_subsys. * With the above, renaming subsys identifiers to match the userland visible names doesn't cause any naming conflicts. All non-matching identifiers are renamed to match the official names. cpu_cgroup -> cpu mem_cgroup -> memory perf -> perf_event * controllers no longer need to initialize ->subsys_id and ->name. They're generated in cgroup core and set automatically during boot. * Redundant cgroup_subsys declarations removed. * While updating BUG_ON()s in cgroup_init_early(), convert them to WARN()s. BUGging that early during boot is stupid - the kernel can't print anything, even through serial console and the trap handler doesn't even link stack frame properly for back-tracing. This patch doesn't introduce any behavior changes. v2: Rebased on top of fe1217c4f3f7 ("net: net_cls: move cgroupfs classid handling into core"). Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: Neil Horman <nhorman@tuxdriver.com> Acked-by: "David S. Miller" <davem@davemloft.net> Acked-by: "Rafael J. Wysocki" <rjw@rjwysocki.net> Acked-by: Michal Hocko <mhocko@suse.cz> Acked-by: Peter Zijlstra <peterz@infradead.org> Acked-by: Aristeu Rozanski <aris@redhat.com> Acked-by: Ingo Molnar <mingo@redhat.com> Acked-by: Li Zefan <lizefan@huawei.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Balbir Singh <bsingharora@gmail.com> Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Cc: Serge E. Hallyn <serue@us.ibm.com> Cc: Vivek Goyal <vgoyal@redhat.com> Cc: Thomas Graf <tgraf@suug.ch>
Diffstat (limited to 'kernel/sched')
-rw-r--r--kernel/sched/core.c6
-rw-r--r--kernel/sched/cpuacct.c6
2 files changed, 4 insertions, 8 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index b46131ef6aab..d4cfc5561830 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -7176,7 +7176,7 @@ void sched_move_task(struct task_struct *tsk)
7176 if (unlikely(running)) 7176 if (unlikely(running))
7177 tsk->sched_class->put_prev_task(rq, tsk); 7177 tsk->sched_class->put_prev_task(rq, tsk);
7178 7178
7179 tg = container_of(task_css_check(tsk, cpu_cgroup_subsys_id, 7179 tg = container_of(task_css_check(tsk, cpu_cgrp_id,
7180 lockdep_is_held(&tsk->sighand->siglock)), 7180 lockdep_is_held(&tsk->sighand->siglock)),
7181 struct task_group, css); 7181 struct task_group, css);
7182 tg = autogroup_task_group(tsk, tg); 7182 tg = autogroup_task_group(tsk, tg);
@@ -7957,8 +7957,7 @@ static struct cftype cpu_files[] = {
7957 { } /* terminate */ 7957 { } /* terminate */
7958}; 7958};
7959 7959
7960struct cgroup_subsys cpu_cgroup_subsys = { 7960struct cgroup_subsys cpu_cgrp_subsys = {
7961 .name = "cpu",
7962 .css_alloc = cpu_cgroup_css_alloc, 7961 .css_alloc = cpu_cgroup_css_alloc,
7963 .css_free = cpu_cgroup_css_free, 7962 .css_free = cpu_cgroup_css_free,
7964 .css_online = cpu_cgroup_css_online, 7963 .css_online = cpu_cgroup_css_online,
@@ -7966,7 +7965,6 @@ struct cgroup_subsys cpu_cgroup_subsys = {
7966 .can_attach = cpu_cgroup_can_attach, 7965 .can_attach = cpu_cgroup_can_attach,
7967 .attach = cpu_cgroup_attach, 7966 .attach = cpu_cgroup_attach,
7968 .exit = cpu_cgroup_exit, 7967 .exit = cpu_cgroup_exit,
7969 .subsys_id = cpu_cgroup_subsys_id,
7970 .base_cftypes = cpu_files, 7968 .base_cftypes = cpu_files,
7971 .early_init = 1, 7969 .early_init = 1,
7972}; 7970};
diff --git a/kernel/sched/cpuacct.c b/kernel/sched/cpuacct.c
index 622e0818f905..c143ee380e3a 100644
--- a/kernel/sched/cpuacct.c
+++ b/kernel/sched/cpuacct.c
@@ -41,7 +41,7 @@ static inline struct cpuacct *css_ca(struct cgroup_subsys_state *css)
41/* return cpu accounting group to which this task belongs */ 41/* return cpu accounting group to which this task belongs */
42static inline struct cpuacct *task_ca(struct task_struct *tsk) 42static inline struct cpuacct *task_ca(struct task_struct *tsk)
43{ 43{
44 return css_ca(task_css(tsk, cpuacct_subsys_id)); 44 return css_ca(task_css(tsk, cpuacct_cgrp_id));
45} 45}
46 46
47static inline struct cpuacct *parent_ca(struct cpuacct *ca) 47static inline struct cpuacct *parent_ca(struct cpuacct *ca)
@@ -275,11 +275,9 @@ void cpuacct_account_field(struct task_struct *p, int index, u64 val)
275 rcu_read_unlock(); 275 rcu_read_unlock();
276} 276}
277 277
278struct cgroup_subsys cpuacct_subsys = { 278struct cgroup_subsys cpuacct_cgrp_subsys = {
279 .name = "cpuacct",
280 .css_alloc = cpuacct_css_alloc, 279 .css_alloc = cpuacct_css_alloc,
281 .css_free = cpuacct_css_free, 280 .css_free = cpuacct_css_free,
282 .subsys_id = cpuacct_subsys_id,
283 .base_cftypes = files, 281 .base_cftypes = files,
284 .early_init = 1, 282 .early_init = 1,
285}; 283};