[1/4] cpuidle - sysfs : change function parameter

Message ID 1349907691-6002-2-git-send-email-daniel.lezcano@linaro.org
State Accepted
Commit 1aef40e288acfb3cc28ff77528b34ef66683bed6
Headers show

Commit Message

Daniel Lezcano Oct. 10, 2012, 10:21 p.m.
The function needs the cpuidle_device which is initially passed to the
caller.

The current code gets the struct device from the struct cpuidle_device,
pass it the cpuidle_add_sysfs function. This function calls
per_cpu(cpuidle_devices, cpu) to get the cpuidle_device.

This patch pass the cpuidle_device instead and simplify the code.

Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
---
 drivers/cpuidle/cpuidle.c |    8 +++-----
 drivers/cpuidle/cpuidle.h |    6 ++----
 drivers/cpuidle/sysfs.c   |   12 +++---------
 3 files changed, 8 insertions(+), 18 deletions(-)

Comments

Rafael J. Wysocki Oct. 17, 2012, 5:46 a.m. | #1
On Thursday 11 of October 2012 00:21:28 Daniel Lezcano wrote:
> The function needs the cpuidle_device which is initially passed to the
> caller.
> 
> The current code gets the struct device from the struct cpuidle_device,
> pass it the cpuidle_add_sysfs function. This function calls
> per_cpu(cpuidle_devices, cpu) to get the cpuidle_device.
> 
> This patch pass the cpuidle_device instead and simplify the code.
> 
> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>

I like this one.  I'll take it for v3.8.

Thanks,
Rafael


> ---
>  drivers/cpuidle/cpuidle.c |    8 +++-----
>  drivers/cpuidle/cpuidle.h |    6 ++----
>  drivers/cpuidle/sysfs.c   |   12 +++---------
>  3 files changed, 8 insertions(+), 18 deletions(-)
> 
> diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
> index e28f6ea..07c6637 100644
> --- a/drivers/cpuidle/cpuidle.c
> +++ b/drivers/cpuidle/cpuidle.c
> @@ -394,7 +394,6 @@ EXPORT_SYMBOL_GPL(cpuidle_disable_device);
>  static int __cpuidle_register_device(struct cpuidle_device *dev)
>  {
>  	int ret;
> -	struct device *cpu_dev = get_cpu_device((unsigned long)dev->cpu);
>  	struct cpuidle_driver *cpuidle_driver = cpuidle_get_driver();
>  
>  	if (!try_module_get(cpuidle_driver->owner))
> @@ -404,7 +403,7 @@ static int __cpuidle_register_device(struct cpuidle_device *dev)
>  
>  	per_cpu(cpuidle_devices, dev->cpu) = dev;
>  	list_add(&dev->device_list, &cpuidle_detected_devices);
> -	ret = cpuidle_add_sysfs(cpu_dev);
> +	ret = cpuidle_add_sysfs(dev);
>  	if (ret)
>  		goto err_sysfs;
>  
> @@ -416,7 +415,7 @@ static int __cpuidle_register_device(struct cpuidle_device *dev)
>  	return 0;
>  
>  err_coupled:
> -	cpuidle_remove_sysfs(cpu_dev);
> +	cpuidle_remove_sysfs(dev);
>  	wait_for_completion(&dev->kobj_unregister);
>  err_sysfs:
>  	list_del(&dev->device_list);
> @@ -460,7 +459,6 @@ EXPORT_SYMBOL_GPL(cpuidle_register_device);
>   */
>  void cpuidle_unregister_device(struct cpuidle_device *dev)
>  {
> -	struct device *cpu_dev = get_cpu_device((unsigned long)dev->cpu);
>  	struct cpuidle_driver *cpuidle_driver = cpuidle_get_driver();
>  
>  	if (dev->registered == 0)
> @@ -470,7 +468,7 @@ void cpuidle_unregister_device(struct cpuidle_device *dev)
>  
>  	cpuidle_disable_device(dev);
>  
> -	cpuidle_remove_sysfs(cpu_dev);
> +	cpuidle_remove_sysfs(dev);
>  	list_del(&dev->device_list);
>  	wait_for_completion(&dev->kobj_unregister);
>  	per_cpu(cpuidle_devices, dev->cpu) = NULL;
> diff --git a/drivers/cpuidle/cpuidle.h b/drivers/cpuidle/cpuidle.h
> index 76e7f69..a5bbd1c 100644
> --- a/drivers/cpuidle/cpuidle.h
> +++ b/drivers/cpuidle/cpuidle.h
> @@ -5,8 +5,6 @@
>  #ifndef __DRIVER_CPUIDLE_H
>  #define __DRIVER_CPUIDLE_H
>  
> -#include <linux/device.h>
> -
>  /* For internal use only */
>  extern struct cpuidle_governor *cpuidle_curr_governor;
>  extern struct list_head cpuidle_governors;
> @@ -29,8 +27,8 @@ extern int cpuidle_add_interface(struct device *dev);
>  extern void cpuidle_remove_interface(struct device *dev);
>  extern int cpuidle_add_state_sysfs(struct cpuidle_device *device);
>  extern void cpuidle_remove_state_sysfs(struct cpuidle_device *device);
> -extern int cpuidle_add_sysfs(struct device *dev);
> -extern void cpuidle_remove_sysfs(struct device *dev);
> +extern int cpuidle_add_sysfs(struct cpuidle_device *dev);
> +extern void cpuidle_remove_sysfs(struct cpuidle_device *dev);
>  
>  #ifdef CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED
>  bool cpuidle_state_is_coupled(struct cpuidle_device *dev,
> diff --git a/drivers/cpuidle/sysfs.c b/drivers/cpuidle/sysfs.c
> index 5f809e3..84e6285 100644
> --- a/drivers/cpuidle/sysfs.c
> +++ b/drivers/cpuidle/sysfs.c
> @@ -408,13 +408,11 @@ void cpuidle_remove_state_sysfs(struct cpuidle_device *device)
>   * cpuidle_add_sysfs - creates a sysfs instance for the target device
>   * @dev: the target device
>   */
> -int cpuidle_add_sysfs(struct device *cpu_dev)
> +int cpuidle_add_sysfs(struct cpuidle_device *dev)
>  {
> -	int cpu = cpu_dev->id;
> -	struct cpuidle_device *dev;
> +	struct device *cpu_dev = get_cpu_device((unsigned long)dev->cpu);
>  	int error;
>  
> -	dev = per_cpu(cpuidle_devices, cpu);
>  	error = kobject_init_and_add(&dev->kobj, &ktype_cpuidle, &cpu_dev->kobj,
>  				     "cpuidle");
>  	if (!error)
> @@ -426,11 +424,7 @@ int cpuidle_add_sysfs(struct device *cpu_dev)
>   * cpuidle_remove_sysfs - deletes a sysfs instance on the target device
>   * @dev: the target device
>   */
> -void cpuidle_remove_sysfs(struct device *cpu_dev)
> +void cpuidle_remove_sysfs(struct cpuidle_device *dev)
>  {
> -	int cpu = cpu_dev->id;
> -	struct cpuidle_device *dev;
> -
> -	dev = per_cpu(cpuidle_devices, cpu);
>  	kobject_put(&dev->kobj);
>  }
>

Patch

diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
index e28f6ea..07c6637 100644
--- a/drivers/cpuidle/cpuidle.c
+++ b/drivers/cpuidle/cpuidle.c
@@ -394,7 +394,6 @@  EXPORT_SYMBOL_GPL(cpuidle_disable_device);
 static int __cpuidle_register_device(struct cpuidle_device *dev)
 {
 	int ret;
-	struct device *cpu_dev = get_cpu_device((unsigned long)dev->cpu);
 	struct cpuidle_driver *cpuidle_driver = cpuidle_get_driver();
 
 	if (!try_module_get(cpuidle_driver->owner))
@@ -404,7 +403,7 @@  static int __cpuidle_register_device(struct cpuidle_device *dev)
 
 	per_cpu(cpuidle_devices, dev->cpu) = dev;
 	list_add(&dev->device_list, &cpuidle_detected_devices);
-	ret = cpuidle_add_sysfs(cpu_dev);
+	ret = cpuidle_add_sysfs(dev);
 	if (ret)
 		goto err_sysfs;
 
@@ -416,7 +415,7 @@  static int __cpuidle_register_device(struct cpuidle_device *dev)
 	return 0;
 
 err_coupled:
-	cpuidle_remove_sysfs(cpu_dev);
+	cpuidle_remove_sysfs(dev);
 	wait_for_completion(&dev->kobj_unregister);
 err_sysfs:
 	list_del(&dev->device_list);
@@ -460,7 +459,6 @@  EXPORT_SYMBOL_GPL(cpuidle_register_device);
  */
 void cpuidle_unregister_device(struct cpuidle_device *dev)
 {
-	struct device *cpu_dev = get_cpu_device((unsigned long)dev->cpu);
 	struct cpuidle_driver *cpuidle_driver = cpuidle_get_driver();
 
 	if (dev->registered == 0)
@@ -470,7 +468,7 @@  void cpuidle_unregister_device(struct cpuidle_device *dev)
 
 	cpuidle_disable_device(dev);
 
-	cpuidle_remove_sysfs(cpu_dev);
+	cpuidle_remove_sysfs(dev);
 	list_del(&dev->device_list);
 	wait_for_completion(&dev->kobj_unregister);
 	per_cpu(cpuidle_devices, dev->cpu) = NULL;
diff --git a/drivers/cpuidle/cpuidle.h b/drivers/cpuidle/cpuidle.h
index 76e7f69..a5bbd1c 100644
--- a/drivers/cpuidle/cpuidle.h
+++ b/drivers/cpuidle/cpuidle.h
@@ -5,8 +5,6 @@ 
 #ifndef __DRIVER_CPUIDLE_H
 #define __DRIVER_CPUIDLE_H
 
-#include <linux/device.h>
-
 /* For internal use only */
 extern struct cpuidle_governor *cpuidle_curr_governor;
 extern struct list_head cpuidle_governors;
@@ -29,8 +27,8 @@  extern int cpuidle_add_interface(struct device *dev);
 extern void cpuidle_remove_interface(struct device *dev);
 extern int cpuidle_add_state_sysfs(struct cpuidle_device *device);
 extern void cpuidle_remove_state_sysfs(struct cpuidle_device *device);
-extern int cpuidle_add_sysfs(struct device *dev);
-extern void cpuidle_remove_sysfs(struct device *dev);
+extern int cpuidle_add_sysfs(struct cpuidle_device *dev);
+extern void cpuidle_remove_sysfs(struct cpuidle_device *dev);
 
 #ifdef CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED
 bool cpuidle_state_is_coupled(struct cpuidle_device *dev,
diff --git a/drivers/cpuidle/sysfs.c b/drivers/cpuidle/sysfs.c
index 5f809e3..84e6285 100644
--- a/drivers/cpuidle/sysfs.c
+++ b/drivers/cpuidle/sysfs.c
@@ -408,13 +408,11 @@  void cpuidle_remove_state_sysfs(struct cpuidle_device *device)
  * cpuidle_add_sysfs - creates a sysfs instance for the target device
  * @dev: the target device
  */
-int cpuidle_add_sysfs(struct device *cpu_dev)
+int cpuidle_add_sysfs(struct cpuidle_device *dev)
 {
-	int cpu = cpu_dev->id;
-	struct cpuidle_device *dev;
+	struct device *cpu_dev = get_cpu_device((unsigned long)dev->cpu);
 	int error;
 
-	dev = per_cpu(cpuidle_devices, cpu);
 	error = kobject_init_and_add(&dev->kobj, &ktype_cpuidle, &cpu_dev->kobj,
 				     "cpuidle");
 	if (!error)
@@ -426,11 +424,7 @@  int cpuidle_add_sysfs(struct device *cpu_dev)
  * cpuidle_remove_sysfs - deletes a sysfs instance on the target device
  * @dev: the target device
  */
-void cpuidle_remove_sysfs(struct device *cpu_dev)
+void cpuidle_remove_sysfs(struct cpuidle_device *dev)
 {
-	int cpu = cpu_dev->id;
-	struct cpuidle_device *dev;
-
-	dev = per_cpu(cpuidle_devices, cpu);
 	kobject_put(&dev->kobj);
 }