aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorLi Zefan <lizefan@huawei.com>2013-03-29 02:38:13 -0400
committerIngo Molnar <mingo@kernel.org>2013-04-10 07:54:19 -0400
commitd1712796a880bea0a44739941116001923f3275b (patch)
treefe7aaf8dcf6569f05fc741c01bd7beb5633244f6 /kernel
parent5f40d804325e925409907e29f46ecb012090b6c2 (diff)
sched/cpuacct: Clean up cpuacct.h
Now most of the code in cpuacct.h can be moved to cpuacct.c Signed-off-by: Li Zefan <lizefan@huawei.com> Acked-by: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/515536D5.2080401@huawei.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/sched/cpuacct.c44
-rw-r--r--kernel/sched/cpuacct.h46
2 files changed, 43 insertions, 47 deletions
diff --git a/kernel/sched/cpuacct.c b/kernel/sched/cpuacct.c
index 071ae8d08181..9305fd2f8cf9 100644
--- a/kernel/sched/cpuacct.c
+++ b/kernel/sched/cpuacct.c
@@ -16,7 +16,49 @@
16 * (balbir@in.ibm.com). 16 * (balbir@in.ibm.com).
17 */ 17 */
18 18
19struct cpuacct root_cpuacct; 19/* Time spent by the tasks of the cpu accounting group executing in ... */
20enum cpuacct_stat_index {
21 CPUACCT_STAT_USER, /* ... user mode */
22 CPUACCT_STAT_SYSTEM, /* ... kernel mode */
23
24 CPUACCT_STAT_NSTATS,
25};
26
27/* track cpu usage of a group of tasks and its child groups */
28struct cpuacct {
29 struct cgroup_subsys_state css;
30 /* cpuusage holds pointer to a u64-type object on every cpu */
31 u64 __percpu *cpuusage;
32 struct kernel_cpustat __percpu *cpustat;
33};
34
35/* return cpu accounting group corresponding to this container */
36static inline struct cpuacct *cgroup_ca(struct cgroup *cgrp)
37{
38 return container_of(cgroup_subsys_state(cgrp, cpuacct_subsys_id),
39 struct cpuacct, css);
40}
41
42/* return cpu accounting group to which this task belongs */
43static inline struct cpuacct *task_ca(struct task_struct *tsk)
44{
45 return container_of(task_subsys_state(tsk, cpuacct_subsys_id),
46 struct cpuacct, css);
47}
48
49static inline struct cpuacct *__parent_ca(struct cpuacct *ca)
50{
51 return cgroup_ca(ca->css.cgroup->parent);
52}
53
54static inline struct cpuacct *parent_ca(struct cpuacct *ca)
55{
56 if (!ca->css.cgroup->parent)
57 return NULL;
58 return cgroup_ca(ca->css.cgroup->parent);
59}
60
61static struct cpuacct root_cpuacct;
20 62
21/* create a new cpu accounting group */ 63/* create a new cpu accounting group */
22static struct cgroup_subsys_state *cpuacct_css_alloc(struct cgroup *cgrp) 64static struct cgroup_subsys_state *cpuacct_css_alloc(struct cgroup *cgrp)
diff --git a/kernel/sched/cpuacct.h b/kernel/sched/cpuacct.h
index b2f79ad1e524..51cd76eb4f0f 100644
--- a/kernel/sched/cpuacct.h
+++ b/kernel/sched/cpuacct.h
@@ -1,51 +1,5 @@
1/* Time spent by the tasks of the cpu accounting group executing in ... */
2enum cpuacct_stat_index {
3 CPUACCT_STAT_USER, /* ... user mode */
4 CPUACCT_STAT_SYSTEM, /* ... kernel mode */
5
6 CPUACCT_STAT_NSTATS,
7};
8
9#ifdef CONFIG_CGROUP_CPUACCT 1#ifdef CONFIG_CGROUP_CPUACCT
10 2
11#include <linux/cgroup.h>
12/* track cpu usage of a group of tasks and its child groups */
13struct cpuacct {
14 struct cgroup_subsys_state css;
15 /* cpuusage holds pointer to a u64-type object on every cpu */
16 u64 __percpu *cpuusage;
17 struct kernel_cpustat __percpu *cpustat;
18};
19
20extern struct cgroup_subsys cpuacct_subsys;
21extern struct cpuacct root_cpuacct;
22
23/* return cpu accounting group corresponding to this container */
24static inline struct cpuacct *cgroup_ca(struct cgroup *cgrp)
25{
26 return container_of(cgroup_subsys_state(cgrp, cpuacct_subsys_id),
27 struct cpuacct, css);
28}
29
30/* return cpu accounting group to which this task belongs */
31static inline struct cpuacct *task_ca(struct task_struct *tsk)
32{
33 return container_of(task_subsys_state(tsk, cpuacct_subsys_id),
34 struct cpuacct, css);
35}
36
37static inline struct cpuacct *__parent_ca(struct cpuacct *ca)
38{
39 return cgroup_ca(ca->css.cgroup->parent);
40}
41
42static inline struct cpuacct *parent_ca(struct cpuacct *ca)
43{
44 if (!ca->css.cgroup->parent)
45 return NULL;
46 return cgroup_ca(ca->css.cgroup->parent);
47}
48
49extern void cpuacct_init(void); 3extern void cpuacct_init(void);
50extern void cpuacct_charge(struct task_struct *tsk, u64 cputime); 4extern void cpuacct_charge(struct task_struct *tsk, u64 cputime);
51extern void cpuacct_account_field(struct task_struct *p, int index, u64 val); 5extern void cpuacct_account_field(struct task_struct *p, int index, u64 val);