diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-21 20:51:34 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-21 20:51:34 -0500 |
| commit | f075e0f6993f41c72dbb1d3e7a2d7740f14e89e2 (patch) | |
| tree | a25b464a67fffc6f43940e0e85e2735a48bb1ad7 /kernel/sched | |
| parent | 5cb7398caf69e3943df78435a19a8a77fe8b9463 (diff) | |
| parent | dd4b0a4676907481256d16d5de0851b315a6f22c (diff) | |
Merge branch 'for-3.14' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup
Pull cgroup updates from Tejun Heo:
"The bulk of changes are cleanups and preparations for the upcoming
kernfs conversion.
- cgroup_event mechanism which is and will be used only by memcg is
moved to memcg.
- pidlist handling is updated so that it can be served by seq_file.
Also, the list is not sorted if sane_behavior. cgroup
documentation explicitly states that the file is not sorted but it
has been for quite some time.
- All cgroup file handling now happens on top of seq_file. This is
to prepare for kernfs conversion. In addition, all operations are
restructured so that they map 1-1 to kernfs operations.
- Other cleanups and low-pri fixes"
* 'for-3.14' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup: (40 commits)
cgroup: trivial style updates
cgroup: remove stray references to css_id
doc: cgroups: Fix typo in doc/cgroups
cgroup: fix fail path in cgroup_load_subsys()
cgroup: fix missing unlock on error in cgroup_load_subsys()
cgroup: remove for_each_root_subsys()
cgroup: implement for_each_css()
cgroup: factor out cgroup_subsys_state creation into create_css()
cgroup: combine css handling loops in cgroup_create()
cgroup: reorder operations in cgroup_create()
cgroup: make for_each_subsys() useable under cgroup_root_mutex
cgroup: css iterations and css_from_dir() are safe under cgroup_mutex
cgroup: unify pidlist and other file handling
cgroup: replace cftype->read_seq_string() with cftype->seq_show()
cgroup: attach cgroup_open_file to all cgroup files
cgroup: generalize cgroup_pidlist_open_file
cgroup: unify read path so that seq_file is always used
cgroup: unify cgroup_write_X64() and cgroup_write_string()
cgroup: remove cftype->read(), ->read_map() and ->write()
hugetlb_cgroup: convert away from cftype->read()
...
Diffstat (limited to 'kernel/sched')
| -rw-r--r-- | kernel/sched/core.c | 13 | ||||
| -rw-r--r-- | kernel/sched/cpuacct.c | 18 |
2 files changed, 14 insertions, 17 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 36c951b7eef8..3897e09e86a2 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c | |||
| @@ -7852,15 +7852,14 @@ static int __cfs_schedulable(struct task_group *tg, u64 period, u64 quota) | |||
| 7852 | return ret; | 7852 | return ret; |
| 7853 | } | 7853 | } |
| 7854 | 7854 | ||
| 7855 | static int cpu_stats_show(struct cgroup_subsys_state *css, struct cftype *cft, | 7855 | static int cpu_stats_show(struct seq_file *sf, void *v) |
| 7856 | struct cgroup_map_cb *cb) | ||
| 7857 | { | 7856 | { |
| 7858 | struct task_group *tg = css_tg(css); | 7857 | struct task_group *tg = css_tg(seq_css(sf)); |
| 7859 | struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth; | 7858 | struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth; |
| 7860 | 7859 | ||
| 7861 | cb->fill(cb, "nr_periods", cfs_b->nr_periods); | 7860 | seq_printf(sf, "nr_periods %d\n", cfs_b->nr_periods); |
| 7862 | cb->fill(cb, "nr_throttled", cfs_b->nr_throttled); | 7861 | seq_printf(sf, "nr_throttled %d\n", cfs_b->nr_throttled); |
| 7863 | cb->fill(cb, "throttled_time", cfs_b->throttled_time); | 7862 | seq_printf(sf, "throttled_time %llu\n", cfs_b->throttled_time); |
| 7864 | 7863 | ||
| 7865 | return 0; | 7864 | return 0; |
| 7866 | } | 7865 | } |
| @@ -7914,7 +7913,7 @@ static struct cftype cpu_files[] = { | |||
| 7914 | }, | 7913 | }, |
| 7915 | { | 7914 | { |
| 7916 | .name = "stat", | 7915 | .name = "stat", |
| 7917 | .read_map = cpu_stats_show, | 7916 | .seq_show = cpu_stats_show, |
| 7918 | }, | 7917 | }, |
| 7919 | #endif | 7918 | #endif |
| 7920 | #ifdef CONFIG_RT_GROUP_SCHED | 7919 | #ifdef CONFIG_RT_GROUP_SCHED |
diff --git a/kernel/sched/cpuacct.c b/kernel/sched/cpuacct.c index f64722ff0299..622e0818f905 100644 --- a/kernel/sched/cpuacct.c +++ b/kernel/sched/cpuacct.c | |||
| @@ -163,10 +163,9 @@ out: | |||
| 163 | return err; | 163 | return err; |
| 164 | } | 164 | } |
| 165 | 165 | ||
| 166 | static int cpuacct_percpu_seq_read(struct cgroup_subsys_state *css, | 166 | static int cpuacct_percpu_seq_show(struct seq_file *m, void *V) |
| 167 | struct cftype *cft, struct seq_file *m) | ||
| 168 | { | 167 | { |
| 169 | struct cpuacct *ca = css_ca(css); | 168 | struct cpuacct *ca = css_ca(seq_css(m)); |
| 170 | u64 percpu; | 169 | u64 percpu; |
| 171 | int i; | 170 | int i; |
| 172 | 171 | ||
| @@ -183,10 +182,9 @@ static const char * const cpuacct_stat_desc[] = { | |||
| 183 | [CPUACCT_STAT_SYSTEM] = "system", | 182 | [CPUACCT_STAT_SYSTEM] = "system", |
| 184 | }; | 183 | }; |
| 185 | 184 | ||
| 186 | static int cpuacct_stats_show(struct cgroup_subsys_state *css, | 185 | static int cpuacct_stats_show(struct seq_file *sf, void *v) |
| 187 | struct cftype *cft, struct cgroup_map_cb *cb) | ||
| 188 | { | 186 | { |
| 189 | struct cpuacct *ca = css_ca(css); | 187 | struct cpuacct *ca = css_ca(seq_css(sf)); |
| 190 | int cpu; | 188 | int cpu; |
| 191 | s64 val = 0; | 189 | s64 val = 0; |
| 192 | 190 | ||
| @@ -196,7 +194,7 @@ static int cpuacct_stats_show(struct cgroup_subsys_state *css, | |||
| 196 | val += kcpustat->cpustat[CPUTIME_NICE]; | 194 | val += kcpustat->cpustat[CPUTIME_NICE]; |
| 197 | } | 195 | } |
| 198 | val = cputime64_to_clock_t(val); | 196 | val = cputime64_to_clock_t(val); |
| 199 | cb->fill(cb, cpuacct_stat_desc[CPUACCT_STAT_USER], val); | 197 | seq_printf(sf, "%s %lld\n", cpuacct_stat_desc[CPUACCT_STAT_USER], val); |
| 200 | 198 | ||
| 201 | val = 0; | 199 | val = 0; |
| 202 | for_each_online_cpu(cpu) { | 200 | for_each_online_cpu(cpu) { |
| @@ -207,7 +205,7 @@ static int cpuacct_stats_show(struct cgroup_subsys_state *css, | |||
| 207 | } | 205 | } |
| 208 | 206 | ||
| 209 | val = cputime64_to_clock_t(val); | 207 | val = cputime64_to_clock_t(val); |
| 210 | cb->fill(cb, cpuacct_stat_desc[CPUACCT_STAT_SYSTEM], val); | 208 | seq_printf(sf, "%s %lld\n", cpuacct_stat_desc[CPUACCT_STAT_SYSTEM], val); |
| 211 | 209 | ||
| 212 | return 0; | 210 | return 0; |
| 213 | } | 211 | } |
| @@ -220,11 +218,11 @@ static struct cftype files[] = { | |||
| 220 | }, | 218 | }, |
| 221 | { | 219 | { |
| 222 | .name = "usage_percpu", | 220 | .name = "usage_percpu", |
| 223 | .read_seq_string = cpuacct_percpu_seq_read, | 221 | .seq_show = cpuacct_percpu_seq_show, |
| 224 | }, | 222 | }, |
| 225 | { | 223 | { |
| 226 | .name = "stat", | 224 | .name = "stat", |
| 227 | .read_map = cpuacct_stats_show, | 225 | .seq_show = cpuacct_stats_show, |
| 228 | }, | 226 | }, |
| 229 | { } /* terminate */ | 227 | { } /* terminate */ |
| 230 | }; | 228 | }; |
