1cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#ifndef _SCHED_SYSCTL_H
2cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#define _SCHED_SYSCTL_H
3cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams
4cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#ifdef CONFIG_DETECT_HUNG_TASK
5cd64647f043e3fd3569bcf068f47f030198ff93aLi Zefanextern int	     sysctl_hung_task_check_count;
6cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int  sysctl_hung_task_panic;
7cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned long sysctl_hung_task_timeout_secs;
8270750dbc18a71b23d660df110e433ff9616a2d4Aaron Tomlinextern int sysctl_hung_task_warnings;
9cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern int proc_dohung_task_timeout_secs(struct ctl_table *table, int write,
10cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams					 void __user *buffer,
11cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams					 size_t *lenp, loff_t *ppos);
12cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#else
13cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams/* Avoid need for ifdefs elsewhere in the code */
14cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsenum { sysctl_hung_task_timeout_secs = 0 };
15cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#endif
16cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams
17cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams/*
18cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams * Default maximum number of active map areas, this limits the number of vmas
19cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams * per mm struct. Users can overwrite this number by sysctl but there is a
20cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams * problem.
21cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams *
22cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams * When a program's coredump is generated as ELF format, a section is created
23cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams * per a vma. In ELF, the number of sections is represented in unsigned short.
24cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams * This means the number of sections should be smaller than 65535 at coredump.
25cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams * Because the kernel adds some informative sections to a image of program at
26cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams * generating coredump, we need some margin. The number of extra sections is
27cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams * 1-3 now and depends on arch. We use "5" as safe margin, here.
283fb1c8dcfcda2f5bfb7d79d8b08bf2f04b1eed8fKirill A. Shutemov *
293fb1c8dcfcda2f5bfb7d79d8b08bf2f04b1eed8fKirill A. Shutemov * ELF extended numbering allows more than 65535 sections, so 16-bit bound is
303fb1c8dcfcda2f5bfb7d79d8b08bf2f04b1eed8fKirill A. Shutemov * not a hard limit any more. Although some userspace tools can be surprised by
313fb1c8dcfcda2f5bfb7d79d8b08bf2f04b1eed8fKirill A. Shutemov * that.
32cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams */
33cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#define MAPCOUNT_ELF_CORE_MARGIN	(5)
34cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#define DEFAULT_MAX_MAP_COUNT	(USHRT_MAX - MAPCOUNT_ELF_CORE_MARGIN)
35cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams
36cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern int sysctl_max_map_count;
37cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams
38cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_sched_latency;
39cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_sched_min_granularity;
40cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_sched_wakeup_granularity;
41cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_sched_child_runs_first;
42cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams
43cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsenum sched_tunable_scaling {
44cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams	SCHED_TUNABLESCALING_NONE,
45cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams	SCHED_TUNABLESCALING_LOG,
46cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams	SCHED_TUNABLESCALING_LINEAR,
47cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams	SCHED_TUNABLESCALING_END,
48cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams};
49cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern enum sched_tunable_scaling sysctl_sched_tunable_scaling;
50cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams
51cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_numa_balancing_scan_delay;
52cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_numa_balancing_scan_period_min;
53cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_numa_balancing_scan_period_max;
54cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_numa_balancing_scan_size;
55cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams
56cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#ifdef CONFIG_SCHED_DEBUG
57cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_sched_migration_cost;
58cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_sched_nr_migrate;
59cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_sched_time_avg;
60cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_timer_migration;
61cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_sched_shares_window;
62cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams
63cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsint sched_proc_update_handler(struct ctl_table *table, int write,
64cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams		void __user *buffer, size_t *length,
65cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams		loff_t *ppos);
66cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#endif
67cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#ifdef CONFIG_SCHED_DEBUG
68cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsstatic inline unsigned int get_sysctl_timer_migration(void)
69cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams{
70cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams	return sysctl_timer_migration;
71cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams}
72cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#else
73cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsstatic inline unsigned int get_sysctl_timer_migration(void)
74cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams{
75cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams	return 1;
76cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams}
77cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#endif
78ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williams
79ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williams/*
80ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williams *  control realtime throttling:
81ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williams *
82ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williams *  /proc/sys/kernel/sched_rt_period_us
83ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williams *  /proc/sys/kernel/sched_rt_runtime_us
84ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williams */
85cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_sched_rt_period;
86cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern int sysctl_sched_rt_runtime;
87cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams
88cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#ifdef CONFIG_CFS_BANDWIDTH
89cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_sched_cfs_bandwidth_slice;
90cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#endif
91cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams
92cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#ifdef CONFIG_SCHED_AUTOGROUP
93cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williamsextern unsigned int sysctl_sched_autogroup_enabled;
94cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#endif
95cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams
96ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williamsextern int sched_rr_timeslice;
97ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williams
98ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williamsextern int sched_rr_handler(struct ctl_table *table, int write,
99ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williams		void __user *buffer, size_t *lenp,
100ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williams		loff_t *ppos);
101ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williams
102ce0dbbbb30aee6a835511d5be446462388ba9eeeClark Williamsextern int sched_rt_handler(struct ctl_table *table, int write,
103cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams		void __user *buffer, size_t *lenp,
104cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams		loff_t *ppos);
105cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams
10654a43d54988a3731d644fdeb7a1d6f46b4ac64c7Andi Kleenextern int sysctl_numa_balancing(struct ctl_table *table, int write,
10754a43d54988a3731d644fdeb7a1d6f46b4ac64c7Andi Kleen				 void __user *buffer, size_t *lenp,
10854a43d54988a3731d644fdeb7a1d6f46b4ac64c7Andi Kleen				 loff_t *ppos);
10954a43d54988a3731d644fdeb7a1d6f46b4ac64c7Andi Kleen
110cf4aebc292fac7f34f8345664320e9d4a42ca76cClark Williams#endif /* _SCHED_SYSCTL_H */
111