Commit 54820fb2 authored by Pavel Machek's avatar Pavel Machek Committed by Linus Torvalds

[PATCH] swsusp: try_to_freeze to make freezing hooks nicer

This moves refrigerator changes to sched.h, so that every file user of
refrigerator does not have to include suspend.h, and makes refrigerator
support easier by introducing try_to_freeze.

Adapted from patch by Nigel Cunningham
Signed-off-by: default avatarPavel Machek <pavel@suse.cz>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent eaefadeb
...@@ -1124,6 +1124,34 @@ extern void normalize_rt_tasks(void); ...@@ -1124,6 +1124,34 @@ extern void normalize_rt_tasks(void);
#endif #endif
/* try_to_freeze
*
* Checks whether we need to enter the refrigerator
* and returns 1 if we did so.
*/
#ifdef CONFIG_PM
extern void refrigerator(unsigned long);
extern int freeze_processes(void);
extern void thaw_processes(void);
static inline int try_to_freeze(unsigned long refrigerator_flags)
{
if (unlikely(current->flags & PF_FREEZE)) {
refrigerator(refrigerator_flags);
return 1;
} else
return 0;
}
#else
static inline void refrigerator(unsigned long flag) {}
static inline int freeze_processes(void) { BUG(); }
static inline void thaw_processes(void) {}
static inline int try_to_freeze(unsigned long refrigerator_flags)
{
return 0;
}
#endif /* CONFIG_PM */
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
#endif #endif
...@@ -36,26 +36,16 @@ extern void mark_free_pages(struct zone *zone); ...@@ -36,26 +36,16 @@ extern void mark_free_pages(struct zone *zone);
/* kernel/power/swsusp.c */ /* kernel/power/swsusp.c */
extern int software_suspend(void); extern int software_suspend(void);
#else /* CONFIG_SOFTWARE_SUSPEND */ extern int pm_prepare_console(void);
extern void pm_restore_console(void);
#else
static inline int software_suspend(void) static inline int software_suspend(void)
{ {
printk("Warning: fake suspend called\n"); printk("Warning: fake suspend called\n");
return -EPERM; return -EPERM;
} }
#endif /* CONFIG_SOFTWARE_SUSPEND */ #endif
#ifdef CONFIG_PM
extern void refrigerator(unsigned long);
extern int freeze_processes(void);
extern void thaw_processes(void);
extern int pm_prepare_console(void);
extern void pm_restore_console(void);
#else
static inline void refrigerator(unsigned long flag) {}
#endif /* CONFIG_PM */
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
extern void disable_nonboot_cpus(void); extern void disable_nonboot_cpus(void);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment