aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZefan Li <lizefan@huawei.com>2014-09-18 04:03:36 -0400
committerTejun Heo <tj@kernel.org>2014-09-18 13:27:23 -0400
commit52de4779f201758ddcf37360f09a16895756e708 (patch)
tree4817eb47aebdd04ecaa03956f69d7f5a60291a57
parent006f4ac49742b5f70ef7e39176fd42a500144ccc (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.c20
-rw-r--r--include/linux/cpuset.h3
-rw-r--r--kernel/cpuset.c15
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
381static 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
387static 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
395static int proc_oom_score(struct seq_file *m, struct pid_namespace *ns, 379static 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
87extern void cpuset_task_status_allowed(struct seq_file *m, 87extern void cpuset_task_status_allowed(struct seq_file *m,
88 struct task_struct *task); 88 struct task_struct *task);
89extern int proc_cpuset_show(struct seq_file *, void *); 89extern int proc_cpuset_show(struct seq_file *m, struct pid_namespace *ns,
90 struct pid *pid, struct task_struct *tsk);
90 91
91extern int cpuset_mem_spread_node(void); 92extern int cpuset_mem_spread_node(void);
92extern int cpuset_slab_spread_node(void); 93extern 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 */
2732int proc_cpuset_show(struct seq_file *m, void *unused_v) 2732int 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;
2761out_put_task:
2762 put_task_struct(tsk);
2763out_free: 2754out_free:
2764 kfree(buf); 2755 kfree(buf);
2765out: 2756out: