cgroup: refactor cgroup_masks_read() in the debug controller
authorTejun Heo <tj@kernel.org>
Wed, 14 Jun 2017 20:01:36 +0000 (16:01 -0400)
committerTejun Heo <tj@kernel.org>
Wed, 14 Jun 2017 20:01:36 +0000 (16:01 -0400)
Factor out cgroup_masks_read_one() out of cgroup_masks_read() for
simplicity.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Waiman Long <longman@redhat.com>
kernel/cgroup/debug.c

index d61e692a5338af77fdfc1b321fa49aa3a7cf53cd..163fdbd7adf616a24e6b43898788af09305f207b 100644 (file)
@@ -200,36 +200,32 @@ static int cgroup_subsys_states_read(struct seq_file *seq, void *v)
        return 0;
 }
 
-static int cgroup_masks_read(struct seq_file *seq, void *v)
+static void cgroup_masks_read_one(struct seq_file *seq, const char *name,
+                                 u16 mask)
 {
-       struct cgroup *cgrp = seq_css(seq)->cgroup;
        struct cgroup_subsys *ss;
-       int i, j;
-       struct {
-               u16  *mask;
-               char *name;
-       } mask_list[] = {
-               { &cgrp->subtree_control,  "subtree_control"  },
-               { &cgrp->subtree_ss_mask,  "subtree_ss_mask"  },
-       };
+       int ssid;
+       bool first = true;
 
-       mutex_lock(&cgroup_mutex);
-       for (i = 0; i < ARRAY_SIZE(mask_list); i++) {
-               u16 mask = *mask_list[i].mask;
-               bool first = true;
-
-               seq_printf(seq, "%-17s: ", mask_list[i].name);
-               for_each_subsys(ss, j) {
-                       if (!(mask & (1 << ss->id)))
-                               continue;
-                       if (!first)
-                               seq_puts(seq, ", ");
-                       seq_puts(seq, ss->name);
-                       first = false;
-               }
-               seq_putc(seq, '\n');
+       seq_printf(seq, "%-17s: ", name);
+       for_each_subsys(ss, ssid) {
+               if (!(mask & (1 << ssid)))
+                       continue;
+               if (!first)
+                       seq_puts(seq, ", ");
+               seq_puts(seq, ss->name);
+               first = false;
        }
+       seq_putc(seq, '\n');
+}
 
+static int cgroup_masks_read(struct seq_file *seq, void *v)
+{
+       struct cgroup *cgrp = seq_css(seq)->cgroup;
+
+       mutex_lock(&cgroup_mutex);
+       cgroup_masks_read_one(seq, "subtree_control", cgrp->subtree_control);
+       cgroup_masks_read_one(seq, "subtree_ss_mask", cgrp->subtree_ss_mask);
        mutex_unlock(&cgroup_mutex);
        return 0;
 }