diff options
Diffstat (limited to 'kernel/power/console.c')
-rw-r--r-- | kernel/power/console.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/kernel/power/console.c b/kernel/power/console.c new file mode 100644 index 00000000..218e5af9 --- /dev/null +++ b/kernel/power/console.c @@ -0,0 +1,35 @@ +/* + * drivers/power/process.c - Functions for saving/restoring console. + * + * Originally from swsusp. + */ + +#include <linux/vt_kern.h> +#include <linux/kbd_kern.h> +#include <linux/vt.h> +#include <linux/module.h> +#include "power.h" + +#if defined(CONFIG_VT) && defined(CONFIG_VT_CONSOLE) +#define SUSPEND_CONSOLE (MAX_NR_CONSOLES-1) + +static int orig_fgconsole, orig_kmsg; + +int pm_prepare_console(void) +{ + orig_fgconsole = vt_move_to_console(SUSPEND_CONSOLE, 1); + if (orig_fgconsole < 0) + return 1; + + orig_kmsg = vt_kmsg_redirect(SUSPEND_CONSOLE); + return 0; +} + +void pm_restore_console(void) +{ + if (orig_fgconsole >= 0) { + vt_move_to_console(orig_fgconsole, 0); + vt_kmsg_redirect(orig_kmsg); + } +} +#endif |