3416 lines · 80.0 KB · C
RawDownload
				    val_a > val_b) {					err = -EINVAL;					break;				}				if (left) {					p++;					left--;				}			} 			bitmap_set(tmp_bitmap, val_a, val_b - val_a + 1);			first = 0;			proc_skip_char(&p, &left, '\n');		}		left += skipped;	} else {		unsigned long bit_a, bit_b = 0; 		while (left) {			bit_a = find_next_bit(bitmap, bitmap_len, bit_b);			if (bit_a >= bitmap_len)				break;			bit_b = find_next_zero_bit(bitmap, bitmap_len,						   bit_a + 1) - 1; 			if (!first)				proc_put_char(&buffer, &left, ',');			proc_put_long(&buffer, &left, bit_a, false);			if (bit_a != bit_b) {				proc_put_char(&buffer, &left, '-');				proc_put_long(&buffer, &left, bit_b, false);			} 			first = 0; bit_b++;		}		proc_put_char(&buffer, &left, '\n');	} 	if (!err) {		if (write) {			if (*ppos)				bitmap_or(bitmap, bitmap, tmp_bitmap, bitmap_len);			else				bitmap_copy(bitmap, tmp_bitmap, bitmap_len);		}		*lenp -= left;		*ppos += *lenp;	} 	bitmap_free(tmp_bitmap);	return err;} #else /* CONFIG_PROC_SYSCTL */ int proc_dostring(struct ctl_table *table, int write,		  void *buffer, size_t *lenp, loff_t *ppos){	return -ENOSYS;} int proc_dointvec(struct ctl_table *table, int write,		  void *buffer, size_t *lenp, loff_t *ppos){	return -ENOSYS;} int proc_douintvec(struct ctl_table *table, int write,		  void *buffer, size_t *lenp, loff_t *ppos){	return -ENOSYS;} int proc_dointvec_minmax(struct ctl_table *table, int write,		    void *buffer, size_t *lenp, loff_t *ppos){	return -ENOSYS;} int proc_douintvec_minmax(struct ctl_table *table, int write,			  void *buffer, size_t *lenp, loff_t *ppos){	return -ENOSYS;} int proc_dointvec_jiffies(struct ctl_table *table, int write,		    void *buffer, size_t *lenp, loff_t *ppos){	return -ENOSYS;} int proc_dointvec_userhz_jiffies(struct ctl_table *table, int write,		    void *buffer, size_t *lenp, loff_t *ppos){	return -ENOSYS;} int proc_dointvec_ms_jiffies(struct ctl_table *table, int write,			     void *buffer, size_t *lenp, loff_t *ppos){	return -ENOSYS;} int proc_doulongvec_minmax(struct ctl_table *table, int write,		    void *buffer, size_t *lenp, loff_t *ppos){	return -ENOSYS;} int proc_doulongvec_ms_jiffies_minmax(struct ctl_table *table, int write,				      void *buffer, size_t *lenp, loff_t *ppos){	return -ENOSYS;} int proc_do_large_bitmap(struct ctl_table *table, int write,			 void *buffer, size_t *lenp, loff_t *ppos){	return -ENOSYS;} #endif /* CONFIG_PROC_SYSCTL */ #if defined(CONFIG_SYSCTL)int proc_do_static_key(struct ctl_table *table, int write,		       void *buffer, size_t *lenp, loff_t *ppos){	struct static_key *key = (struct static_key *)table->data;	static DEFINE_MUTEX(static_key_mutex);	int val, ret;	struct ctl_table tmp = {		.data   = &val,		.maxlen = sizeof(val),		.mode   = table->mode,		.extra1 = SYSCTL_ZERO,		.extra2 = SYSCTL_ONE,	}; 	if (write && !capable(CAP_SYS_ADMIN))		return -EPERM; 	mutex_lock(&static_key_mutex);	val = static_key_enabled(key);	ret = proc_dointvec_minmax(&tmp, write, buffer, lenp, ppos);	if (write && !ret) {		if (val)			static_key_enable(key);		else			static_key_disable(key);	}	mutex_unlock(&static_key_mutex);	return ret;} static struct ctl_table kern_table[] = {	{		.procname	= "sched_child_runs_first",		.data		= &sysctl_sched_child_runs_first,		.maxlen		= sizeof(unsigned int),		.mode		= 0644,		.proc_handler	= proc_dointvec,	},#ifdef CONFIG_SCHED_DEBUG	{		.procname	= "sched_min_granularity_ns",		.data		= &sysctl_sched_min_granularity,		.maxlen		= sizeof(unsigned int),		.mode		= 0644,		.proc_handler	= sched_proc_update_handler,		.extra1		= &min_sched_granularity_ns,		.extra2		= &max_sched_granularity_ns,	},	{		.procname	= "sched_latency_ns",		.data		= &sysctl_sched_latency,		.maxlen		= sizeof(unsigned int),		.mode		= 0644,		.proc_handler	= sched_proc_update_handler,		.extra1		= &min_sched_granularity_ns,		.extra2		= &max_sched_granularity_ns,	},	{		.procname	= "sched_wakeup_granularity_ns",		.data		= &sysctl_sched_wakeup_granularity,		.maxlen		= sizeof(unsigned int),		.mode		= 0644,		.proc_handler	= sched_proc_update_handler,		.extra1		= &min_wakeup_granularity_ns,		.extra2		= &max_wakeup_granularity_ns,	},#ifdef CONFIG_SMP	{		.procname	= "sched_tunable_scaling",		.data		= &sysctl_sched_tunable_scaling,		.maxlen		= sizeof(enum sched_tunable_scaling),		.mode		= 0644,		.proc_handler	= sched_proc_update_handler,		.extra1		= &min_sched_tunable_scaling,		.extra2		= &max_sched_tunable_scaling,	},	{		.procname	= "sched_migration_cost_ns",		.data		= &sysctl_sched_migration_cost,		.maxlen		= sizeof(unsigned int),		.mode		= 0644,		.proc_handler	= proc_dointvec,	},	{		.procname	= "sched_nr_migrate",		.data		= &sysctl_sched_nr_migrate,		.maxlen		= sizeof(unsigned int),		.mode		= 0644,		.proc_handler	= proc_dointvec,	},#ifdef CONFIG_SCHEDSTATS	{		.procname	= "sched_schedstats",		.data		= NULL,		.maxlen		= sizeof(unsigned int),		.mode		= 0644,		.proc_handler	= sysctl_schedstats,		.extra1		= SYSCTL_ZERO,		.extra2		= SYSCTL_ONE,	},#endif /* CONFIG_SCHEDSTATS */#endif /* CONFIG_SMP */#ifdef CONFIG_NUMA_BALANCING	{		.procname	= "numa_balancing_scan_delay_ms",		.data		= &sysctl_numa_balancing_scan_delay,		.maxlen		= sizeof(unsigned int),		.mode		= 0644,		.proc_handler	= proc_dointvec,	},	{		.procname	= "numa_balancing_scan_period_min_ms",		.data		= &sysctl_numa_balancing_scan_period_min,		.maxlen		= sizeof(unsigned int),		.mode		= 0644,		.proc_handler	= proc_dointvec,	},	{		.procname	= "numa_balancing_scan_period_max_ms",		.data		= &sysctl_numa_balancing_scan_period_max,		.maxlen		= sizeof(unsigned int),		.mode		= 0644,		.proc_handler	= proc_dointvec,	},	{		.procname	= "numa_balancing_scan_size_mb",		.data		= &sysctl_numa_balancing_scan_size,		.maxlen		= sizeof(unsigned int),		.mode		= 0644,		.proc_handler	= proc_dointvec_minmax,		.extra1		= SYSCTL_ONE,	},	{		.procname	= "numa_balancing",		.data		= NULL, /* filled in by handler */		.maxlen		= sizeof(unsigned int),		.mode		= 0644,		.proc_handler	= sysctl_numa_balancing,		.extra1		= SYSCTL_ZERO,		.extra2		= SYSCTL_ONE,	},#endif /* CONFIG_NUMA_BALANCING */#endif /* CONFIG_SCHED_DEBUG */	{		.procname	= "sched_rt_period_us",		.data		= &sysctl_sched_rt_period,		.maxlen		= sizeof(unsigned int),		.mode		= 0644,		.proc_handler	= sched_rt_handler,	},	{		.procname	= "sched_rt_runtime_us",		.data		= &sysctl_sched_rt_runtime,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= sched_rt_handler,	},	{		.procname	= "sched_deadline_period_max_us",		.data		= &sysctl_sched_dl_period_max,		.maxlen		= sizeof(unsigned int),		.mode		= 0644,		.proc_handler	= proc_dointvec,	},	{		.procname	= "sched_deadline_period_min_us",		.data		= &sysctl_sched_dl_period_min,		.maxlen		= sizeof(unsigned int),		.mode		= 0644,		.proc_handler	= proc_dointvec,	},	{		.procname	= "sched_rr_timeslice_ms",		.data		= &sysctl_sched_rr_timeslice,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= sched_rr_handler,	},#ifdef CONFIG_UCLAMP_TASK	{		.procname	= "sched_util_clamp_min",		.data		= &sysctl_sched_uclamp_util_min,		.maxlen		= sizeof(unsigned int),		.mode		= 0644,		.proc_handler	= sysctl_sched_uclamp_handler,	},	{		.procname	= "sched_util_clamp_max",		.data		= &sysctl_sched_uclamp_util_max,		.maxlen		= sizeof(unsigned int),		.mode		= 0644,		.proc_handler	= sysctl_sched_uclamp_handler,	},	{		.procname	= "sched_util_clamp_min_rt_default",		.data		= &sysctl_sched_uclamp_util_min_rt_default,		.maxlen		= sizeof(unsigned int),		.mode		= 0644,		.proc_handler	= sysctl_sched_uclamp_handler,	},#endif#ifdef CONFIG_SCHED_AUTOGROUP	{		.procname	= "sched_autogroup_enabled",		.data		= &sysctl_sched_autogroup_enabled,		.maxlen		= sizeof(unsigned int),		.mode		= 0644,		.proc_handler	= proc_dointvec_minmax,		.extra1		= SYSCTL_ZERO,		.extra2		= SYSCTL_ONE,	},#endif#ifdef CONFIG_CFS_BANDWIDTH	{		.procname	= "sched_cfs_bandwidth_slice_us",		.data		= &sysctl_sched_cfs_bandwidth_slice,		.maxlen		= sizeof(unsigned int),		.mode		= 0644,		.proc_handler	= proc_dointvec_minmax,		.extra1		= SYSCTL_ONE,	},#endif#if defined(CONFIG_ENERGY_MODEL) && defined(CONFIG_CPU_FREQ_GOV_SCHEDUTIL)	{		.procname	= "sched_energy_aware",		.data		= &sysctl_sched_energy_aware,		.maxlen		= sizeof(unsigned int),		.mode		= 0644,		.proc_handler	= sched_energy_aware_handler,		.extra1		= SYSCTL_ZERO,		.extra2		= SYSCTL_ONE,	},#endif#ifdef CONFIG_PROVE_LOCKING	{		.procname	= "prove_locking",		.data		= &prove_locking,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= proc_dointvec,	},#endif#ifdef CONFIG_LOCK_STAT	{		.procname	= "lock_stat",		.data		= &lock_stat,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= proc_dointvec,	},#endif	{		.procname	= "panic",		.data		= &panic_timeout,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= proc_dointvec,	},#ifdef CONFIG_COREDUMP	{		.procname	= "core_uses_pid",		.data		= &core_uses_pid,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= proc_dointvec,	},	{		.procname	= "core_pattern",		.data		= core_pattern,		.maxlen		= CORENAME_MAX_SIZE,		.mode		= 0644,		.proc_handler	= proc_dostring_coredump,	},	{		.procname	= "core_pipe_limit",		.data		= &core_pipe_limit,		.maxlen		= sizeof(unsigned int),		.mode		= 0644,		.proc_handler	= proc_dointvec,	},#endif#ifdef CONFIG_PROC_SYSCTL	{		.procname	= "tainted",		.maxlen 	= sizeof(long),		.mode		= 0644,		.proc_handler	= proc_taint,	},	{		.procname	= "sysctl_writes_strict",		.data		= &sysctl_writes_strict,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= proc_dointvec_minmax,		.extra1		= &neg_one,		.extra2		= SYSCTL_ONE,	},#endif#ifdef CONFIG_LATENCYTOP	{		.procname	= "latencytop",		.data		= &latencytop_enabled,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= sysctl_latencytop,	},#endif#ifdef CONFIG_BLK_DEV_INITRD	{		.procname	= "real-root-dev",		.data		= &real_root_dev,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= proc_dointvec,	},#endif	{		.procname	= "print-fatal-signals",		.data		= &print_fatal_signals,		.maxlen		= sizeof(int),		.mode		= 0644,		.proc_handler	= proc_dointvec,	},#ifdef CONFIG_SPARC	{		.procname	= "reboot-cmd",		.data		= reboot_command,		.maxlen		= 256,		.mode		= 0644,		.proc_handler	= proc_dostring,	},	{		.procname	= "stop-a",		.data		= &stop_a_enabled,		.maxlen		= sizeof (int),		.mode		= 0644,		.proc_handler	= proc_dointvec,	},	{		.procname	= "scons-poweroff",		.data		= &scons_pwroff,		.maxlen		= sizeof (int),		.mode		= 0644,		.proc_handler	= proc_dointvec,	},#endif#ifdef CONFIG_SPARC64	{		.procname	= "tsb-ratio",		.data		= &sysctl_tsb_ratio,		.maxlen		= sizeof (int),		.mode		= 0644,		.proc_handler	= proc_dointvec,	},#endif#ifdef CONFIG_PARISC	{		.procname	= "soft-power",		.data		= &pwrsw_enabled,		.maxlen		= sizeof (int),		.mode		= 0644,		.proc_handler	= proc_dointvec,	},#endif#ifdef CONFIG_SYSCTL_ARCH_UNALIGN_ALLOW	{		.procname	= "unaligned-trap",		.data		= &unaligned_enabled,		.maxlen		= sizeof (int),		.mode		= 0644,		.proc_handler	= proc_dointvec,	},#endif	{		.procname	= "ctrl-alt-del",		.data		= &C_A_D,

Lines 1501–2000 of 3416. Previous lines