[POWERPC] sysfs: add support for adding/removing spu sysfs attributes
This patch adds two functions to create and remove sysfs attributes and attribute_group to all cpus. That allows to register sysfs attributes in a subdirectory like: /sys/devices/system/cpu/cpuX/group_name/what_ever This will be used by cbe_thermal to group all attributes dealing with thermal support in one directory. Signed-of-by: Christian Krafft <krafft@de.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
		
							parent
							
								
									e570beb6bb
								
							
						
					
					
						commit
						0344c6c538
					
				| @ -299,6 +299,72 @@ static struct notifier_block __cpuinitdata sysfs_cpu_nb = { | ||||
| 	.notifier_call	= sysfs_cpu_notify, | ||||
| }; | ||||
| 
 | ||||
| static DEFINE_MUTEX(cpu_mutex); | ||||
| 
 | ||||
| int cpu_add_sysdev_attr(struct sysdev_attribute *attr) | ||||
| { | ||||
| 	int cpu; | ||||
| 
 | ||||
| 	mutex_lock(&cpu_mutex); | ||||
| 
 | ||||
| 	for_each_possible_cpu(cpu) { | ||||
| 		sysdev_create_file(get_cpu_sysdev(cpu), attr); | ||||
| 	} | ||||
| 
 | ||||
| 	mutex_unlock(&cpu_mutex); | ||||
| 	return 0; | ||||
| } | ||||
| EXPORT_SYMBOL_GPL(cpu_add_sysdev_attr); | ||||
| 
 | ||||
| int cpu_add_sysdev_attr_group(struct attribute_group *attrs) | ||||
| { | ||||
| 	int cpu; | ||||
| 	struct sys_device *sysdev; | ||||
| 
 | ||||
| 	mutex_lock(&cpu_mutex); | ||||
| 
 | ||||
| 	for_each_possible_cpu(cpu) { | ||||
| 		sysdev = get_cpu_sysdev(cpu); | ||||
| 		sysfs_create_group(&sysdev->kobj, attrs); | ||||
| 	} | ||||
| 
 | ||||
| 	mutex_unlock(&cpu_mutex); | ||||
| 	return 0; | ||||
| } | ||||
| EXPORT_SYMBOL_GPL(cpu_add_sysdev_attr_group); | ||||
| 
 | ||||
| 
 | ||||
| void cpu_remove_sysdev_attr(struct sysdev_attribute *attr) | ||||
| { | ||||
| 	int cpu; | ||||
| 
 | ||||
| 	mutex_lock(&cpu_mutex); | ||||
| 
 | ||||
| 	for_each_possible_cpu(cpu) { | ||||
| 		sysdev_remove_file(get_cpu_sysdev(cpu), attr); | ||||
| 	} | ||||
| 
 | ||||
| 	mutex_unlock(&cpu_mutex); | ||||
| } | ||||
| EXPORT_SYMBOL_GPL(cpu_remove_sysdev_attr); | ||||
| 
 | ||||
| void cpu_remove_sysdev_attr_group(struct attribute_group *attrs) | ||||
| { | ||||
| 	int cpu; | ||||
| 	struct sys_device *sysdev; | ||||
| 
 | ||||
| 	mutex_lock(&cpu_mutex); | ||||
| 
 | ||||
| 	for_each_possible_cpu(cpu) { | ||||
| 		sysdev = get_cpu_sysdev(cpu); | ||||
| 		sysfs_remove_group(&sysdev->kobj, attrs); | ||||
| 	} | ||||
| 
 | ||||
| 	mutex_unlock(&cpu_mutex); | ||||
| } | ||||
| EXPORT_SYMBOL_GPL(cpu_remove_sysdev_attr_group); | ||||
| 
 | ||||
| 
 | ||||
| /* NUMA stuff */ | ||||
| 
 | ||||
| #ifdef CONFIG_NUMA | ||||
|  | ||||
| @ -33,6 +33,14 @@ struct cpu { | ||||
| 
 | ||||
| extern int register_cpu(struct cpu *cpu, int num); | ||||
| extern struct sys_device *get_cpu_sysdev(unsigned cpu); | ||||
| 
 | ||||
| extern int cpu_add_sysdev_attr(struct sysdev_attribute *attr); | ||||
| extern void cpu_remove_sysdev_attr(struct sysdev_attribute *attr); | ||||
| 
 | ||||
| extern int cpu_add_sysdev_attr_group(struct attribute_group *attrs); | ||||
| extern void cpu_remove_sysdev_attr_group(struct attribute_group *attrs); | ||||
| 
 | ||||
| 
 | ||||
| #ifdef CONFIG_HOTPLUG_CPU | ||||
| extern void unregister_cpu(struct cpu *cpu); | ||||
| #endif | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user