diff options
Diffstat (limited to 'drivers/cpuidle/driver.c')
-rw-r--r-- | drivers/cpuidle/driver.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/cpuidle/driver.c b/drivers/cpuidle/driver.c index 2257004fe33d..fd1601e3d125 100644 --- a/drivers/cpuidle/driver.c +++ b/drivers/cpuidle/driver.c | |||
@@ -14,7 +14,7 @@ | |||
14 | 14 | ||
15 | #include "cpuidle.h" | 15 | #include "cpuidle.h" |
16 | 16 | ||
17 | struct cpuidle_driver *cpuidle_curr_driver; | 17 | static struct cpuidle_driver *cpuidle_curr_driver; |
18 | DEFINE_SPINLOCK(cpuidle_driver_lock); | 18 | DEFINE_SPINLOCK(cpuidle_driver_lock); |
19 | 19 | ||
20 | /** | 20 | /** |
@@ -40,13 +40,25 @@ int cpuidle_register_driver(struct cpuidle_driver *drv) | |||
40 | EXPORT_SYMBOL_GPL(cpuidle_register_driver); | 40 | EXPORT_SYMBOL_GPL(cpuidle_register_driver); |
41 | 41 | ||
42 | /** | 42 | /** |
43 | * cpuidle_get_driver - return the current driver | ||
44 | */ | ||
45 | struct cpuidle_driver *cpuidle_get_driver(void) | ||
46 | { | ||
47 | return cpuidle_curr_driver; | ||
48 | } | ||
49 | EXPORT_SYMBOL_GPL(cpuidle_get_driver); | ||
50 | |||
51 | /** | ||
43 | * cpuidle_unregister_driver - unregisters a driver | 52 | * cpuidle_unregister_driver - unregisters a driver |
44 | * @drv: the driver | 53 | * @drv: the driver |
45 | */ | 54 | */ |
46 | void cpuidle_unregister_driver(struct cpuidle_driver *drv) | 55 | void cpuidle_unregister_driver(struct cpuidle_driver *drv) |
47 | { | 56 | { |
48 | if (!drv) | 57 | if (drv != cpuidle_curr_driver) { |
58 | WARN(1, "invalid cpuidle_unregister_driver(%s)\n", | ||
59 | drv->name); | ||
49 | return; | 60 | return; |
61 | } | ||
50 | 62 | ||
51 | spin_lock(&cpuidle_driver_lock); | 63 | spin_lock(&cpuidle_driver_lock); |
52 | cpuidle_curr_driver = NULL; | 64 | cpuidle_curr_driver = NULL; |