History

sched/sysctl: Fix attributes of some extern declarations

The definition of sysctl_sched_migration_cost, sysctl_sched_nr_migrate and sysctl_sched_time_avg includes the attribute const_debug. This attribute is not part of the extern declaration of these variables in include/linux/sched/sysctl.h, while it is in kernel/sched/sched.h, and as a result Clang generates warnings like this: kernel/sched/sched.h:1618:33: warning: section attribute is specified on redeclared variable [-Wsection] extern const_debug unsigned int sysctl_sched_time_avg; ^ ./include/linux/sched/sysctl.h:42:21: note: previous declaration is here extern unsigned int sysctl_sched_time_avg; The header only declares the variables when CONFIG_SCHED_DEBUG is defined, therefore it is not necessary to duplicate the definition of const_debug. Instead we can use the attribute __read_mostly, which is the expansion of const_debug when CONFIG_SCHED_DEBUG=y is set.

Matthias Kaehlcke committed 9 years ago

Commit a9903f01 parent b0d40d21 file · +3 −3Browse files

Unified · Split

include/linux/sched/sysctl.h+3−3
@@ -37,9 +37,9 @@ extern unsigned int sysctl_numa_balancing_scan_period_max; · 36 unmodified lines
37extern unsigned int sysctl_numa_balancing_scan_size;37extern unsigned int sysctl_numa_balancing_scan_size;
38 38
39#ifdef CONFIG_SCHED_DEBUG39#ifdef CONFIG_SCHED_DEBUG
40extern unsigned int sysctl_sched_migration_cost;40extern __read_mostly unsigned int sysctl_sched_migration_cost;
41extern unsigned int sysctl_sched_nr_migrate;41extern __read_mostly unsigned int sysctl_sched_nr_migrate;
42extern unsigned int sysctl_sched_time_avg;42extern __read_mostly unsigned int sysctl_sched_time_avg;
43 43
44int sched_proc_update_handler(struct ctl_table *table, int write,44int sched_proc_update_handler(struct ctl_table *table, int write,
45 void __user *buffer, size_t *length,45 void __user *buffer, size_t *length,