latencytop: move sysctl to its own file

This moves latencytop sysctl to kernel/latencytop.c

Signed-off-by: liaohua <liaohua4@huawei.com>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
This commit is contained in:
liaohua 2022-04-07 15:29:48 +08:00 committed by Luis Chamberlain
parent f8b7d2b4c1
commit 988f11e046
3 changed files with 29 additions and 25 deletions

View 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); 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 #else
static inline void static inline void

View File

@ -55,6 +55,7 @@
#include <linux/sched/stat.h> #include <linux/sched/stat.h>
#include <linux/list.h> #include <linux/list.h>
#include <linux/stacktrace.h> #include <linux/stacktrace.h>
#include <linux/sysctl.h>
static DEFINE_RAW_SPINLOCK(latency_lock); static DEFINE_RAW_SPINLOCK(latency_lock);
@ -63,6 +64,31 @@ static struct latency_record latency_record[MAXLR];
int latencytop_enabled; 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) void clear_tsk_latency_tracing(struct task_struct *p)
{ {
unsigned long flags; unsigned long flags;
@ -266,18 +292,9 @@ static const struct proc_ops lstats_proc_ops = {
static int __init init_lstats_procfs(void) static int __init init_lstats_procfs(void)
{ {
proc_create("latency_stats", 0644, NULL, &lstats_proc_ops); proc_create("latency_stats", 0644, NULL, &lstats_proc_ops);
#ifdef CONFIG_SYSCTL
register_sysctl_init("kernel", latencytop_sysctl);
#endif
return 0; 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); device_initcall(init_lstats_procfs);

View File

@ -64,7 +64,6 @@
#include <linux/kexec.h> #include <linux/kexec.h>
#include <linux/mount.h> #include <linux/mount.h>
#include <linux/userfaultfd_k.h> #include <linux/userfaultfd_k.h>
#include <linux/latencytop.h>
#include <linux/pid.h> #include <linux/pid.h>
#include "../lib/kstrtox.h" #include "../lib/kstrtox.h"
@ -1623,15 +1622,6 @@ static struct ctl_table kern_table[] = {
.extra1 = SYSCTL_NEG_ONE, .extra1 = SYSCTL_NEG_ONE,
.extra2 = SYSCTL_ONE, .extra2 = SYSCTL_ONE,
}, },
#endif
#ifdef CONFIG_LATENCYTOP
{
.procname = "latencytop",
.data = &latencytop_enabled,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = sysctl_latencytop,
},
#endif #endif
{ {
.procname = "print-fatal-signals", .procname = "print-fatal-signals",