aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/base/power/power.h
diff options
context:
space:
mode:
authorRafael J. Wysocki <rjw@sisk.pl>2008-01-12 14:40:46 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2008-01-24 23:40:04 -0500
commit775b64d2b6ca37697de925f70799c710aab5849a (patch)
tree09e91c89228c8d3c6928a1b2ef56711190c69836 /drivers/base/power/power.h
parent7a83d456a86d559a6347115d206d23774bc152d9 (diff)
PM: Acquire device locks on suspend
This patch reorganizes the way suspend and resume notifications are sent to drivers. The major changes are that now the PM core acquires every device semaphore before calling the methods, and calls to device_add() during suspends will fail, while calls to device_del() during suspends will block. It also provides a way to safely remove a suspended device with the help of the PM core, by using the device_pm_schedule_removal() callback introduced specifically for this purpose, and updates two drivers (msr and cpuid) that need to use it. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/base/power/power.h')
-rw-r--r--drivers/base/power/power.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/base/power/power.h b/drivers/base/power/power.h
index 379da4e958e0..10c20840395e 100644
--- a/drivers/base/power/power.h
+++ b/drivers/base/power/power.h
@@ -20,6 +20,9 @@ static inline struct device *to_device(struct list_head *entry)
20 20
21extern void device_pm_add(struct device *); 21extern void device_pm_add(struct device *);
22extern void device_pm_remove(struct device *); 22extern void device_pm_remove(struct device *);
23extern void device_pm_schedule_removal(struct device *);
24extern int pm_sleep_lock(void);
25extern void pm_sleep_unlock(void);
23 26
24#else /* CONFIG_PM_SLEEP */ 27#else /* CONFIG_PM_SLEEP */
25 28
@@ -32,6 +35,15 @@ static inline void device_pm_remove(struct device *dev)
32{ 35{
33} 36}
34 37
38static inline int pm_sleep_lock(void)
39{
40 return 0;
41}
42
43static inline void pm_sleep_unlock(void)
44{
45}
46
35#endif 47#endif
36 48
37#ifdef CONFIG_PM 49#ifdef CONFIG_PM