latencytop: move sysctl to its own file
authorliaohua <liaohua4@huawei.com>
Thu, 7 Apr 2022 07:29:48 +0000 (15:29 +0800)
committerLuis Chamberlain <mcgrof@kernel.org>
Thu, 21 Apr 2022 18:40:59 +0000 (11:40 -0700)
This moves latencytop sysctl to kernel/latencytop.c

Signed-off-by: liaohua <liaohua4@huawei.com>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
include/linux/latencytop.h
kernel/latencytop.c
kernel/sysctl.c

index abe3d95..84f1053 100644 (file)
@@ -38,9 +38,6 @@ account_scheduler_latency(struct task_struct *task, int usecs, int inter)
 
 void clear_tsk_latency_tracing(struct task_struct *p);
 
-int sysctl_latencytop(struct ctl_table *table, int write, void *buffer,
-               size_t *lenp, loff_t *ppos);
-
 #else
 
 static inline void
index 166d7bf..76166df 100644 (file)
@@ -55,6 +55,7 @@
 #include <linux/sched/stat.h>
 #include <linux/list.h>
 #include <linux/stacktrace.h>
+#include <linux/sysctl.h>
 
 static DEFINE_RAW_SPINLOCK(latency_lock);
 
@@ -63,6 +64,31 @@ static struct latency_record latency_record[MAXLR];
 
 int latencytop_enabled;
 
+#ifdef CONFIG_SYSCTL
+static int sysctl_latencytop(struct ctl_table *table, int write, void *buffer,
+               size_t *lenp, loff_t *ppos)
+{
+       int err;
+
+       err = proc_dointvec(table, write, buffer, lenp, ppos);
+       if (latencytop_enabled)
+               force_schedstat_enabled();
+
+       return err;
+}
+
+static struct ctl_table latencytop_sysctl[] = {
+       {
+               .procname   = "latencytop",
+               .data       = &latencytop_enabled,
+               .maxlen     = sizeof(int),
+               .mode       = 0644,
+               .proc_handler   = sysctl_latencytop,
+       },
+       {}
+};
+#endif
+
 void clear_tsk_latency_tracing(struct task_struct *p)
 {
        unsigned long flags;
@@ -266,18 +292,9 @@ static const struct proc_ops lstats_proc_ops = {
 static int __init init_lstats_procfs(void)
 {
        proc_create("latency_stats", 0644, NULL, &lstats_proc_ops);
+#ifdef CONFIG_SYSCTL
+       register_sysctl_init("kernel", latencytop_sysctl);
+#endif
        return 0;
 }
-
-int sysctl_latencytop(struct ctl_table *table, int write, void *buffer,
-               size_t *lenp, loff_t *ppos)
-{
-       int err;
-
-       err = proc_dointvec(table, write, buffer, lenp, ppos);
-       if (latencytop_enabled)
-               force_schedstat_enabled();
-
-       return err;
-}
 device_initcall(init_lstats_procfs);
index c0fdf46..b60345c 100644 (file)
@@ -64,7 +64,6 @@
 #include <linux/kexec.h>
 #include <linux/mount.h>
 #include <linux/userfaultfd_k.h>
-#include <linux/latencytop.h>
 #include <linux/pid.h>
 
 #include "../lib/kstrtox.h"
@@ -1624,15 +1623,6 @@ static struct ctl_table kern_table[] = {
                .extra2         = SYSCTL_ONE,
        },
 #endif
-#ifdef CONFIG_LATENCYTOP
-       {
-               .procname       = "latencytop",
-               .data           = &latencytop_enabled,
-               .maxlen         = sizeof(int),
-               .mode           = 0644,
-               .proc_handler   = sysctl_latencytop,
-       },
-#endif
        {
                .procname       = "print-fatal-signals",
                .data           = &print_fatal_signals,