1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #ifndef _LINUX_SCHED_SYSCTL_H 3*4882a593Smuzhiyun #define _LINUX_SCHED_SYSCTL_H 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun #include <linux/types.h> 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun struct ctl_table; 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #ifdef CONFIG_DETECT_HUNG_TASK 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #ifdef CONFIG_SMP 12*4882a593Smuzhiyun extern unsigned int sysctl_hung_task_all_cpu_backtrace; 13*4882a593Smuzhiyun #else 14*4882a593Smuzhiyun #define sysctl_hung_task_all_cpu_backtrace 0 15*4882a593Smuzhiyun #endif /* CONFIG_SMP */ 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun extern int sysctl_hung_task_check_count; 18*4882a593Smuzhiyun extern unsigned int sysctl_hung_task_panic; 19*4882a593Smuzhiyun extern unsigned long sysctl_hung_task_timeout_secs; 20*4882a593Smuzhiyun extern unsigned long sysctl_hung_task_check_interval_secs; 21*4882a593Smuzhiyun extern int sysctl_hung_task_warnings; 22*4882a593Smuzhiyun int proc_dohung_task_timeout_secs(struct ctl_table *table, int write, 23*4882a593Smuzhiyun void *buffer, size_t *lenp, loff_t *ppos); 24*4882a593Smuzhiyun #else 25*4882a593Smuzhiyun /* Avoid need for ifdefs elsewhere in the code */ 26*4882a593Smuzhiyun enum { sysctl_hung_task_timeout_secs = 0 }; 27*4882a593Smuzhiyun #endif 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun extern unsigned int sysctl_sched_latency; 30*4882a593Smuzhiyun extern unsigned int sysctl_sched_min_granularity; 31*4882a593Smuzhiyun extern unsigned int sysctl_sched_wakeup_granularity; 32*4882a593Smuzhiyun extern unsigned int sysctl_sched_child_runs_first; 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun enum sched_tunable_scaling { 35*4882a593Smuzhiyun SCHED_TUNABLESCALING_NONE, 36*4882a593Smuzhiyun SCHED_TUNABLESCALING_LOG, 37*4882a593Smuzhiyun SCHED_TUNABLESCALING_LINEAR, 38*4882a593Smuzhiyun SCHED_TUNABLESCALING_END, 39*4882a593Smuzhiyun }; 40*4882a593Smuzhiyun extern enum sched_tunable_scaling sysctl_sched_tunable_scaling; 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun extern unsigned int sysctl_numa_balancing_scan_delay; 43*4882a593Smuzhiyun extern unsigned int sysctl_numa_balancing_scan_period_min; 44*4882a593Smuzhiyun extern unsigned int sysctl_numa_balancing_scan_period_max; 45*4882a593Smuzhiyun extern unsigned int sysctl_numa_balancing_scan_size; 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun #ifdef CONFIG_SCHED_DEBUG 48*4882a593Smuzhiyun extern __read_mostly unsigned int sysctl_sched_migration_cost; 49*4882a593Smuzhiyun extern __read_mostly unsigned int sysctl_sched_nr_migrate; 50*4882a593Smuzhiyun extern int sysctl_sched_pelt_period; 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun int sched_proc_update_handler(struct ctl_table *table, int write, 53*4882a593Smuzhiyun void *buffer, size_t *length, loff_t *ppos); 54*4882a593Smuzhiyun int sched_pelt_period_update_handler(struct ctl_table *table, int write, 55*4882a593Smuzhiyun void *buffer, size_t *lenp, loff_t *ppos); 56*4882a593Smuzhiyun #endif 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun /* 59*4882a593Smuzhiyun * control realtime throttling: 60*4882a593Smuzhiyun * 61*4882a593Smuzhiyun * /proc/sys/kernel/sched_rt_period_us 62*4882a593Smuzhiyun * /proc/sys/kernel/sched_rt_runtime_us 63*4882a593Smuzhiyun */ 64*4882a593Smuzhiyun extern unsigned int sysctl_sched_rt_period; 65*4882a593Smuzhiyun extern int sysctl_sched_rt_runtime; 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun extern unsigned int sysctl_sched_dl_period_max; 68*4882a593Smuzhiyun extern unsigned int sysctl_sched_dl_period_min; 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun #ifdef CONFIG_UCLAMP_TASK 71*4882a593Smuzhiyun extern unsigned int sysctl_sched_uclamp_util_min; 72*4882a593Smuzhiyun extern unsigned int sysctl_sched_uclamp_util_max; 73*4882a593Smuzhiyun extern unsigned int sysctl_sched_uclamp_util_min_rt_default; 74*4882a593Smuzhiyun #endif 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun #ifdef CONFIG_CFS_BANDWIDTH 77*4882a593Smuzhiyun extern unsigned int sysctl_sched_cfs_bandwidth_slice; 78*4882a593Smuzhiyun #endif 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun #ifdef CONFIG_SCHED_AUTOGROUP 81*4882a593Smuzhiyun extern unsigned int sysctl_sched_autogroup_enabled; 82*4882a593Smuzhiyun #endif 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun extern int sysctl_sched_rr_timeslice; 85*4882a593Smuzhiyun extern int sched_rr_timeslice; 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun int sched_rr_handler(struct ctl_table *table, int write, void *buffer, 88*4882a593Smuzhiyun size_t *lenp, loff_t *ppos); 89*4882a593Smuzhiyun int sched_rt_handler(struct ctl_table *table, int write, void *buffer, 90*4882a593Smuzhiyun size_t *lenp, loff_t *ppos); 91*4882a593Smuzhiyun int sysctl_sched_uclamp_handler(struct ctl_table *table, int write, 92*4882a593Smuzhiyun void *buffer, size_t *lenp, loff_t *ppos); 93*4882a593Smuzhiyun int sysctl_numa_balancing(struct ctl_table *table, int write, void *buffer, 94*4882a593Smuzhiyun size_t *lenp, loff_t *ppos); 95*4882a593Smuzhiyun int sysctl_schedstats(struct ctl_table *table, int write, void *buffer, 96*4882a593Smuzhiyun size_t *lenp, loff_t *ppos); 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun #ifdef CONFIG_SMP 99*4882a593Smuzhiyun extern unsigned int sysctl_sched_pelt_multiplier; 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun int sched_pelt_multiplier(struct ctl_table *table, int write, void *buffer, 102*4882a593Smuzhiyun size_t *lenp, loff_t *ppos); 103*4882a593Smuzhiyun #endif 104*4882a593Smuzhiyun 105*4882a593Smuzhiyun #if defined(CONFIG_ENERGY_MODEL) && defined(CONFIG_CPU_FREQ_GOV_SCHEDUTIL) 106*4882a593Smuzhiyun extern unsigned int sysctl_sched_energy_aware; 107*4882a593Smuzhiyun int sched_energy_aware_handler(struct ctl_table *table, int write, 108*4882a593Smuzhiyun void *buffer, size_t *lenp, loff_t *ppos); 109*4882a593Smuzhiyun #endif 110*4882a593Smuzhiyun 111*4882a593Smuzhiyun #endif /* _LINUX_SCHED_SYSCTL_H */ 112