diff options
-rw-r--r-- | include/linux/suspend.h | 36 |
1 files changed, 16 insertions, 20 deletions
diff --git a/include/linux/suspend.h b/include/linux/suspend.h index 906d62cfc15c..95040cc33107 100644 --- a/include/linux/suspend.h +++ b/include/linux/suspend.h | |||
@@ -332,6 +332,8 @@ static inline bool system_entering_hibernation(void) { return false; } | |||
332 | #define PM_RESTORE_PREPARE 0x0005 /* Going to restore a saved image */ | 332 | #define PM_RESTORE_PREPARE 0x0005 /* Going to restore a saved image */ |
333 | #define PM_POST_RESTORE 0x0006 /* Restore failed */ | 333 | #define PM_POST_RESTORE 0x0006 /* Restore failed */ |
334 | 334 | ||
335 | extern struct mutex pm_mutex; | ||
336 | |||
335 | #ifdef CONFIG_PM_SLEEP | 337 | #ifdef CONFIG_PM_SLEEP |
336 | void save_processor_state(void); | 338 | void save_processor_state(void); |
337 | void restore_processor_state(void); | 339 | void restore_processor_state(void); |
@@ -352,6 +354,19 @@ extern bool events_check_enabled; | |||
352 | extern bool pm_wakeup_pending(void); | 354 | extern bool pm_wakeup_pending(void); |
353 | extern bool pm_get_wakeup_count(unsigned int *count); | 355 | extern bool pm_get_wakeup_count(unsigned int *count); |
354 | extern bool pm_save_wakeup_count(unsigned int count); | 356 | extern bool pm_save_wakeup_count(unsigned int count); |
357 | |||
358 | static inline void lock_system_sleep(void) | ||
359 | { | ||
360 | freezer_do_not_count(); | ||
361 | mutex_lock(&pm_mutex); | ||
362 | } | ||
363 | |||
364 | static inline void unlock_system_sleep(void) | ||
365 | { | ||
366 | mutex_unlock(&pm_mutex); | ||
367 | freezer_count(); | ||
368 | } | ||
369 | |||
355 | #else /* !CONFIG_PM_SLEEP */ | 370 | #else /* !CONFIG_PM_SLEEP */ |
356 | 371 | ||
357 | static inline int register_pm_notifier(struct notifier_block *nb) | 372 | static inline int register_pm_notifier(struct notifier_block *nb) |
@@ -367,30 +382,11 @@ static inline int unregister_pm_notifier(struct notifier_block *nb) | |||
367 | #define pm_notifier(fn, pri) do { (void)(fn); } while (0) | 382 | #define pm_notifier(fn, pri) do { (void)(fn); } while (0) |
368 | 383 | ||
369 | static inline bool pm_wakeup_pending(void) { return false; } | 384 | static inline bool pm_wakeup_pending(void) { return false; } |
370 | #endif /* !CONFIG_PM_SLEEP */ | ||
371 | |||
372 | extern struct mutex pm_mutex; | ||
373 | 385 | ||
374 | #ifndef CONFIG_HIBERNATE_CALLBACKS | ||
375 | static inline void lock_system_sleep(void) {} | 386 | static inline void lock_system_sleep(void) {} |
376 | static inline void unlock_system_sleep(void) {} | 387 | static inline void unlock_system_sleep(void) {} |
377 | 388 | ||
378 | #else | 389 | #endif /* !CONFIG_PM_SLEEP */ |
379 | |||
380 | /* Let some subsystems like memory hotadd exclude hibernation */ | ||
381 | |||
382 | static inline void lock_system_sleep(void) | ||
383 | { | ||
384 | freezer_do_not_count(); | ||
385 | mutex_lock(&pm_mutex); | ||
386 | } | ||
387 | |||
388 | static inline void unlock_system_sleep(void) | ||
389 | { | ||
390 | mutex_unlock(&pm_mutex); | ||
391 | freezer_count(); | ||
392 | } | ||
393 | #endif | ||
394 | 390 | ||
395 | #ifdef CONFIG_ARCH_SAVE_PAGE_KEYS | 391 | #ifdef CONFIG_ARCH_SAVE_PAGE_KEYS |
396 | /* | 392 | /* |