sched: move autogroup sysctls into its own file
authorZhen Ni <nizhen@uniontech.com>
Fri, 28 Jan 2022 09:50:25 +0000 (17:50 +0800)
committerPeter Zijlstra <peterz@infradead.org>
Wed, 2 Feb 2022 12:11:37 +0000 (13:11 +0100)
move autogroup sysctls to autogroup.c and use the new
register_sysctl_init() to register the sysctl interface.

Signed-off-by: Zhen Ni <nizhen@uniontech.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20220128095025.8745-1-nizhen@uniontech.com
include/linux/sched/sysctl.h
kernel/sched/autogroup.c
kernel/sched/autogroup.h
kernel/sysctl.c

index c19dd5a2c05c679ad7d47f6edd4d9ac27af330d0..3f2b70f8d32ceac4b6d45d72ed23cac3a9cc676e 100644 (file)
@@ -45,10 +45,6 @@ extern unsigned int sysctl_sched_uclamp_util_min_rt_default;
 extern unsigned int sysctl_sched_cfs_bandwidth_slice;
 #endif
 
-#ifdef CONFIG_SCHED_AUTOGROUP
-extern unsigned int sysctl_sched_autogroup_enabled;
-#endif
-
 extern int sysctl_sched_rr_timeslice;
 extern int sched_rr_timeslice;
 
index 8629b37d118e752e45cd64f3d95a86525202735d..31dd2593145e7bf47fd1fb28d5da5f6e73762e43 100644 (file)
@@ -9,6 +9,28 @@ unsigned int __read_mostly sysctl_sched_autogroup_enabled = 1;
 static struct autogroup autogroup_default;
 static atomic_t autogroup_seq_nr;
 
+#ifdef CONFIG_SYSCTL
+static struct ctl_table sched_autogroup_sysctls[] = {
+       {
+               .procname       = "sched_autogroup_enabled",
+               .data           = &sysctl_sched_autogroup_enabled,
+               .maxlen         = sizeof(unsigned int),
+               .mode           = 0644,
+               .proc_handler   = proc_dointvec_minmax,
+               .extra1         = SYSCTL_ZERO,
+               .extra2         = SYSCTL_ONE,
+       },
+       {}
+};
+
+static void __init sched_autogroup_sysctl_init(void)
+{
+       register_sysctl_init("kernel", sched_autogroup_sysctls);
+}
+#else
+#define sched_autogroup_sysctl_init() do { } while (0)
+#endif
+
 void __init autogroup_init(struct task_struct *init_task)
 {
        autogroup_default.tg = &root_task_group;
@@ -198,6 +220,7 @@ void sched_autogroup_exit(struct signal_struct *sig)
 static int __init setup_autogroup(char *str)
 {
        sysctl_sched_autogroup_enabled = 0;
+       sched_autogroup_sysctl_init();
 
        return 1;
 }
index b96419974a1f0e88cf3e0a7b203bde1fcff89b2c..90fcbfdd70c339a40f25b73e071e8fa3cb006e16 100644 (file)
@@ -27,6 +27,7 @@ extern bool task_wants_autogroup(struct task_struct *p, struct task_group *tg);
 static inline struct task_group *
 autogroup_task_group(struct task_struct *p, struct task_group *tg)
 {
+       extern unsigned int sysctl_sched_autogroup_enabled;
        int enabled = READ_ONCE(sysctl_sched_autogroup_enabled);
 
        if (enabled && task_wants_autogroup(p, tg))
index 5ae443b2882e2f4698a4a71a44be462613967308..1cb7ca68cd4e1a9e87d94199398f2ef6614a7896 100644 (file)
@@ -1750,17 +1750,6 @@ static struct ctl_table kern_table[] = {
                .proc_handler   = sysctl_sched_uclamp_handler,
        },
 #endif
-#ifdef CONFIG_SCHED_AUTOGROUP
-       {
-               .procname       = "sched_autogroup_enabled",
-               .data           = &sysctl_sched_autogroup_enabled,
-               .maxlen         = sizeof(unsigned int),
-               .mode           = 0644,
-               .proc_handler   = proc_dointvec_minmax,
-               .extra1         = SYSCTL_ZERO,
-               .extra2         = SYSCTL_ONE,
-       },
-#endif
 #ifdef CONFIG_CFS_BANDWIDTH
        {
                .procname       = "sched_cfs_bandwidth_slice_us",