1 /* Time spent by the tasks of the cpu accounting group executing in ... */
2 enum cpuacct_stat_index {
3 CPUACCT_STAT_USER, /* ... user mode */
4 CPUACCT_STAT_SYSTEM, /* ... kernel mode */
9 #ifdef CONFIG_CGROUP_CPUACCT
11 #include <linux/cgroup.h>
12 /* track cpu usage of a group of tasks and its child groups */
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;
20 extern struct cgroup_subsys cpuacct_subsys;
21 extern struct cpuacct root_cpuacct;
23 /* return cpu accounting group corresponding to this container */
24 static inline struct cpuacct *cgroup_ca(struct cgroup *cgrp)
26 return container_of(cgroup_subsys_state(cgrp, cpuacct_subsys_id),
30 /* return cpu accounting group to which this task belongs */
31 static inline struct cpuacct *task_ca(struct task_struct *tsk)
33 return container_of(task_subsys_state(tsk, cpuacct_subsys_id),
37 static inline struct cpuacct *parent_ca(struct cpuacct *ca)
39 if (!ca || !ca->css.cgroup->parent)
41 return cgroup_ca(ca->css.cgroup->parent);
44 extern void cpuacct_init(void);
45 extern void cpuacct_charge(struct task_struct *tsk, u64 cputime);
46 extern void cpuacct_account_field(struct task_struct *p, int index, u64 val);
50 static inline void cpuacct_init(void)
54 static inline void cpuacct_charge(struct task_struct *tsk, u64 cputime)
59 cpuacct_account_field(struct task_struct *p, int index, u64 val)