diff options
author | Zefan Li <lizefan@huawei.com> | 2014-09-18 04:03:36 -0400 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2014-09-18 13:27:23 -0400 |
commit | 52de4779f201758ddcf37360f09a16895756e708 (patch) | |
tree | 4817eb47aebdd04ecaa03956f69d7f5a60291a57 | |
parent | 006f4ac49742b5f70ef7e39176fd42a500144ccc (diff) |
cpuset: simplify proc_cpuset_show()
Use the ONE macro instead of REG, and we can simplify proc_cpuset_show().
Signed-off-by: Zefan Li <lizefan@huawei.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
-rw-r--r-- | fs/proc/base.c | 20 | ||||
-rw-r--r-- | include/linux/cpuset.h | 3 | ||||
-rw-r--r-- | kernel/cpuset.c | 15 |
3 files changed, 7 insertions, 31 deletions
diff --git a/fs/proc/base.c b/fs/proc/base.c index 6b96892015ec..4e8aa35fc3eb 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c | |||
@@ -376,22 +376,6 @@ static const struct file_operations proc_lstats_operations = { | |||
376 | 376 | ||
377 | #endif | 377 | #endif |
378 | 378 | ||
379 | #ifdef CONFIG_PROC_PID_CPUSET | ||
380 | |||
381 | static int cpuset_open(struct inode *inode, struct file *file) | ||
382 | { | ||
383 | struct pid *pid = PROC_I(inode)->pid; | ||
384 | return single_open(file, proc_cpuset_show, pid); | ||
385 | } | ||
386 | |||
387 | static const struct file_operations proc_cpuset_operations = { | ||
388 | .open = cpuset_open, | ||
389 | .read = seq_read, | ||
390 | .llseek = seq_lseek, | ||
391 | .release = single_release, | ||
392 | }; | ||
393 | #endif | ||
394 | |||
395 | static int proc_oom_score(struct seq_file *m, struct pid_namespace *ns, | 379 | static int proc_oom_score(struct seq_file *m, struct pid_namespace *ns, |
396 | struct pid *pid, struct task_struct *task) | 380 | struct pid *pid, struct task_struct *task) |
397 | { | 381 | { |
@@ -2558,7 +2542,7 @@ static const struct pid_entry tgid_base_stuff[] = { | |||
2558 | REG("latency", S_IRUGO, proc_lstats_operations), | 2542 | REG("latency", S_IRUGO, proc_lstats_operations), |
2559 | #endif | 2543 | #endif |
2560 | #ifdef CONFIG_PROC_PID_CPUSET | 2544 | #ifdef CONFIG_PROC_PID_CPUSET |
2561 | REG("cpuset", S_IRUGO, proc_cpuset_operations), | 2545 | ONE("cpuset", S_IRUGO, proc_cpuset_show), |
2562 | #endif | 2546 | #endif |
2563 | #ifdef CONFIG_CGROUPS | 2547 | #ifdef CONFIG_CGROUPS |
2564 | ONE("cgroup", S_IRUGO, proc_cgroup_show), | 2548 | ONE("cgroup", S_IRUGO, proc_cgroup_show), |
@@ -2904,7 +2888,7 @@ static const struct pid_entry tid_base_stuff[] = { | |||
2904 | REG("latency", S_IRUGO, proc_lstats_operations), | 2888 | REG("latency", S_IRUGO, proc_lstats_operations), |
2905 | #endif | 2889 | #endif |
2906 | #ifdef CONFIG_PROC_PID_CPUSET | 2890 | #ifdef CONFIG_PROC_PID_CPUSET |
2907 | REG("cpuset", S_IRUGO, proc_cpuset_operations), | 2891 | ONE("cpuset", S_IRUGO, proc_cpuset_show), |
2908 | #endif | 2892 | #endif |
2909 | #ifdef CONFIG_CGROUPS | 2893 | #ifdef CONFIG_CGROUPS |
2910 | ONE("cgroup", S_IRUGO, proc_cgroup_show), | 2894 | ONE("cgroup", S_IRUGO, proc_cgroup_show), |
diff --git a/include/linux/cpuset.h b/include/linux/cpuset.h index ade2390ffe92..0d4e0675b318 100644 --- a/include/linux/cpuset.h +++ b/include/linux/cpuset.h | |||
@@ -86,7 +86,8 @@ extern void __cpuset_memory_pressure_bump(void); | |||
86 | 86 | ||
87 | extern void cpuset_task_status_allowed(struct seq_file *m, | 87 | extern void cpuset_task_status_allowed(struct seq_file *m, |
88 | struct task_struct *task); | 88 | struct task_struct *task); |
89 | extern int proc_cpuset_show(struct seq_file *, void *); | 89 | extern int proc_cpuset_show(struct seq_file *m, struct pid_namespace *ns, |
90 | struct pid *pid, struct task_struct *tsk); | ||
90 | 91 | ||
91 | extern int cpuset_mem_spread_node(void); | 92 | extern int cpuset_mem_spread_node(void); |
92 | extern int cpuset_slab_spread_node(void); | 93 | extern int cpuset_slab_spread_node(void); |
diff --git a/kernel/cpuset.c b/kernel/cpuset.c index 22874d7cf2c0..a37f4ed24867 100644 --- a/kernel/cpuset.c +++ b/kernel/cpuset.c | |||
@@ -2729,10 +2729,9 @@ void __cpuset_memory_pressure_bump(void) | |||
2729 | * and we take cpuset_mutex, keeping cpuset_attach() from changing it | 2729 | * and we take cpuset_mutex, keeping cpuset_attach() from changing it |
2730 | * anyway. | 2730 | * anyway. |
2731 | */ | 2731 | */ |
2732 | int proc_cpuset_show(struct seq_file *m, void *unused_v) | 2732 | int proc_cpuset_show(struct seq_file *m, struct pid_namespace *ns, |
2733 | struct pid *pid, struct task_struct *tsk) | ||
2733 | { | 2734 | { |
2734 | struct pid *pid; | ||
2735 | struct task_struct *tsk; | ||
2736 | char *buf, *p; | 2735 | char *buf, *p; |
2737 | struct cgroup_subsys_state *css; | 2736 | struct cgroup_subsys_state *css; |
2738 | int retval; | 2737 | int retval; |
@@ -2742,24 +2741,16 @@ int proc_cpuset_show(struct seq_file *m, void *unused_v) | |||
2742 | if (!buf) | 2741 | if (!buf) |
2743 | goto out; | 2742 | goto out; |
2744 | 2743 | ||
2745 | retval = -ESRCH; | ||
2746 | pid = m->private; | ||
2747 | tsk = get_pid_task(pid, PIDTYPE_PID); | ||
2748 | if (!tsk) | ||
2749 | goto out_free; | ||
2750 | |||
2751 | retval = -ENAMETOOLONG; | 2744 | retval = -ENAMETOOLONG; |
2752 | rcu_read_lock(); | 2745 | rcu_read_lock(); |
2753 | css = task_css(tsk, cpuset_cgrp_id); | 2746 | css = task_css(tsk, cpuset_cgrp_id); |
2754 | p = cgroup_path(css->cgroup, buf, PATH_MAX); | 2747 | p = cgroup_path(css->cgroup, buf, PATH_MAX); |
2755 | rcu_read_unlock(); | 2748 | rcu_read_unlock(); |
2756 | if (!p) | 2749 | if (!p) |
2757 | goto out_put_task; | 2750 | goto out_free; |
2758 | seq_puts(m, p); | 2751 | seq_puts(m, p); |
2759 | seq_putc(m, '\n'); | 2752 | seq_putc(m, '\n'); |
2760 | retval = 0; | 2753 | retval = 0; |
2761 | out_put_task: | ||
2762 | put_task_struct(tsk); | ||
2763 | out_free: | 2754 | out_free: |
2764 | kfree(buf); | 2755 | kfree(buf); |
2765 | out: | 2756 | out: |