diff options
| author | Steve French <sfrench@us.ibm.com> | 2005-10-31 08:36:11 -0800 | 
|---|---|---|
| committer | Steve French <sfrench@us.ibm.com> | 2005-10-31 08:36:11 -0800 | 
| commit | 53b2ec5518aa2623e8c0cb36f1c304a797988a46 (patch) | |
| tree | 465d8631ade6c2fcbd7576ff9813d00116c6a1e8 /drivers/base/cpu.c | |
| parent | 0753ca7bc2b876dd136e9db11a20f85cbe4e08b1 (diff) | |
| parent | 581c1b14394aee60aff46ea67d05483261ed6527 (diff) | |
Merge with /pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Diffstat (limited to 'drivers/base/cpu.c')
| -rw-r--r-- | drivers/base/cpu.c | 17 | 
1 files changed, 15 insertions, 2 deletions
diff --git a/drivers/base/cpu.c b/drivers/base/cpu.c index b79badd0f15..a95844790f7 100644 --- a/drivers/base/cpu.c +++ b/drivers/base/cpu.c @@ -9,12 +9,15 @@  #include <linux/topology.h>  #include <linux/device.h> +#include "base.h"  struct sysdev_class cpu_sysdev_class = {  	set_kset_name("cpu"),  };  EXPORT_SYMBOL(cpu_sysdev_class); +static struct sys_device *cpu_sys_devices[NR_CPUS]; +  #ifdef CONFIG_HOTPLUG_CPU  int __attribute__((weak)) smp_prepare_cpu (int cpu)  { @@ -63,6 +66,7 @@ static void __devinit register_cpu_control(struct cpu *cpu)  }  void unregister_cpu(struct cpu *cpu, struct node *root)  { +	int logical_cpu = cpu->sysdev.id;  	if (root)  		sysfs_remove_link(&root->sysdev.kobj, @@ -70,7 +74,7 @@ void unregister_cpu(struct cpu *cpu, struct node *root)  	sysdev_remove_file(&cpu->sysdev, &attr_online);  	sysdev_unregister(&cpu->sysdev); - +	cpu_sys_devices[logical_cpu] = NULL;  	return;  }  #else /* ... !CONFIG_HOTPLUG_CPU */ @@ -102,10 +106,19 @@ int __devinit register_cpu(struct cpu *cpu, int num, struct node *root)  					  kobject_name(&cpu->sysdev.kobj));  	if (!error && !cpu->no_control)  		register_cpu_control(cpu); +	if (!error) +		cpu_sys_devices[num] = &cpu->sysdev;  	return error;  } - +struct sys_device *get_cpu_sysdev(int cpu) +{ +	if (cpu < NR_CPUS) +		return cpu_sys_devices[cpu]; +	else +		return NULL; +} +EXPORT_SYMBOL_GPL(get_cpu_sysdev);  int __init cpu_dev_init(void)  {  | 
