diff options
Diffstat (limited to 'drivers/base/cpu.c')
| -rw-r--r-- | drivers/base/cpu.c | 57 | 
1 files changed, 17 insertions, 40 deletions
diff --git a/drivers/base/cpu.c b/drivers/base/cpu.c index b04ecfc63b5..fb456b72980 100644 --- a/drivers/base/cpu.c +++ b/drivers/base/cpu.c @@ -13,8 +13,11 @@  #include "base.h" +static struct sysdev_class_attribute *cpu_sysdev_class_attrs[]; +  struct sysdev_class cpu_sysdev_class = {  	.name = "cpu", +	.attrs = cpu_sysdev_class_attrs,  };  EXPORT_SYMBOL(cpu_sysdev_class); @@ -90,20 +93,6 @@ static ssize_t cpu_release_store(struct class *class, const char *buf,  static CLASS_ATTR(probe, S_IWUSR, NULL, cpu_probe_store);  static CLASS_ATTR(release, S_IWUSR, NULL, cpu_release_store); - -int __init cpu_probe_release_init(void) -{ -	int rc; - -	rc = sysfs_create_file(&cpu_sysdev_class.kset.kobj, -			       &class_attr_probe.attr); -	if (!rc) -		rc = sysfs_create_file(&cpu_sysdev_class.kset.kobj, -				       &class_attr_release.attr); - -	return rc; -} -device_initcall(cpu_probe_release_init);  #endif /* CONFIG_ARCH_CPU_PROBE_RELEASE */  #else /* ... !CONFIG_HOTPLUG_CPU */ @@ -162,6 +151,7 @@ static ssize_t show_cpus_attr(struct sysdev_class *class,  #define _CPU_ATTR(name, map)						\  	{ _SYSDEV_CLASS_ATTR(name, 0444, show_cpus_attr, NULL), map } +/* Keep in sync with cpu_sysdev_class_attrs */  static struct cpu_attr cpu_attrs[] = {  	_CPU_ATTR(online, &cpu_online_mask),  	_CPU_ATTR(possible, &cpu_possible_mask), @@ -212,29 +202,6 @@ static ssize_t print_cpus_offline(struct sysdev_class *class,  }  static SYSDEV_CLASS_ATTR(offline, 0444, print_cpus_offline, NULL); -static struct sysdev_class_attribute *cpu_state_attr[] = { -	&cpu_attrs[0].attr, -	&cpu_attrs[1].attr, -	&cpu_attrs[2].attr, -	&attr_kernel_max, -	&attr_offline, -}; - -static int cpu_states_init(void) -{ -	int i; -	int err = 0; - -	for (i = 0;  i < ARRAY_SIZE(cpu_state_attr); i++) { -		int ret; -		ret = sysdev_class_create_file(&cpu_sysdev_class, -						cpu_state_attr[i]); -		if (!err) -			err = ret; -	} -	return err; -} -  /*   * register_cpu - Setup a sysfs device for a CPU.   * @cpu - cpu->hotpluggable field set to 1 will generate a control file in @@ -280,9 +247,6 @@ int __init cpu_dev_init(void)  	int err;  	err = sysdev_class_register(&cpu_sysdev_class); -	if (!err) -		err = cpu_states_init(); -  #if defined(CONFIG_SCHED_MC) || defined(CONFIG_SCHED_SMT)  	if (!err)  		err = sched_create_sysfs_power_savings_entries(&cpu_sysdev_class); @@ -290,3 +254,16 @@ int __init cpu_dev_init(void)  	return err;  } + +static struct sysdev_class_attribute *cpu_sysdev_class_attrs[] = { +#ifdef CONFIG_ARCH_CPU_PROBE_RELEASE +	&class_attr_probe.attr, +	&class_attr_release.attr, +#endif +	&cpu_attrs[0].attr, +	&cpu_attrs[1].attr, +	&cpu_attrs[2].attr, +	&attr_kernel_max, +	&attr_offline, +	NULL +};  |