aboutsummaryrefslogtreecommitdiffstats
path: root/include
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 /include
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 'include')
-rw-r--r--include/linux/device.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/include/linux/device.h b/include/linux/device.h
index 2e15822fe409..cf4ae5c5d193 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -521,6 +521,14 @@ extern struct device *device_create(struct class *cls, struct device *parent,
521 dev_t devt, const char *fmt, ...) 521 dev_t devt, const char *fmt, ...)
522 __attribute__((format(printf,4,5))); 522 __attribute__((format(printf,4,5)));
523extern void device_destroy(struct class *cls, dev_t devt); 523extern void device_destroy(struct class *cls, dev_t devt);
524#ifdef CONFIG_PM_SLEEP
525extern void destroy_suspended_device(struct class *cls, dev_t devt);
526#else /* !CONFIG_PM_SLEEP */
527static inline void destroy_suspended_device(struct class *cls, dev_t devt)
528{
529 device_destroy(cls, devt);
530}
531#endif /* !CONFIG_PM_SLEEP */
524 532
525/* 533/*
526 * Platform "fixup" functions - allow the platform to have their say 534 * Platform "fixup" functions - allow the platform to have their say