Kernel/sysctl.c contains more than 190 interface files, and there are a large number of config macro controls. When modifying the sysctl interface directly in kernel/sysctl.c, conflicts are very easy to occur. E.g: https://lkml.org/lkml/2020/5/10/413. Use register_sysctl() to register the sysctl interface to avoid merge conflicts when different features modify sysctl.c at the same time. So consider cleaning up the sysctls table, details are in: https://kernelnewbies.org/KernelProjects/proc https://lkml.org/lkml/2020/5/13/990 The current patch set extracts register_sysctl_init and some sysctl_vals variables, and clears the interface of hung_task and watchdog in sysctl.c. changes in v2: 1. Adjusted the order of patches, first do public function extraction, then do feature code movement 2. Move hung_task sysctl to hung_task.c instead of adding new file 3. Extract multiple common variables instead of only neg_one, and keep the order of member values in sysctl_vals 4. Add const modification to the variable sixty in watchdog sysctl V1: https://lkml.org/lkml/2020/5/15/17 Xiaoming Ni (4): sysctl: Add register_sysctl_init() interface sysctl: Move some boundary constants form sysctl.c to sysctl_vals hung_task: Move hung_task sysctl interface to hung_task.c watchdog: move watchdog sysctl interface to watchdog.c fs/proc/proc_sysctl.c | 2 +- include/linux/sched/sysctl.h | 8 +- include/linux/sysctl.h | 13 ++- kernel/hung_task.c | 63 +++++++++++++- kernel/sysctl.c | 202 ++++++++----------------------------------- kernel/watchdog.c | 101 ++++++++++++++++++++++ 6 files changed, 210 insertions(+), 179 deletions(-) -- 1.8.5.6