1 /* 2 * drivers/power/process.c - Functions for saving/restoring console. 3 * 4 * Originally from swsusp. 5 */ 6 7 #include <linux/vt_kern.h> 8 #include <linux/kbd_kern.h> 9 #include <linux/console.h> 10 #include "power.h" 11 12 #if defined(CONFIG_VT) && defined(CONFIG_VT_CONSOLE) 13 #define SUSPEND_CONSOLE (MAX_NR_CONSOLES-1) 14 15 static int orig_fgconsole, orig_kmsg; 16 17 int pm_prepare_console(void) 18 { 19 acquire_console_sem(); 20 21 orig_fgconsole = fg_console; 22 23 if (vc_allocate(SUSPEND_CONSOLE)) { 24 /* we can't have a free VC for now. Too bad, 25 * we don't want to mess the screen for now. */ 26 release_console_sem(); 27 return 1; 28 } 29 30 set_console(SUSPEND_CONSOLE); 31 release_console_sem(); 32 33 if (vt_waitactive(SUSPEND_CONSOLE)) { 34 pr_debug("Suspend: Can't switch VCs."); 35 return 1; 36 } 37 orig_kmsg = kmsg_redirect; 38 kmsg_redirect = SUSPEND_CONSOLE; 39 return 0; 40 } 41 42 void pm_restore_console(void) 43 { 44 acquire_console_sem(); 45 set_console(orig_fgconsole); 46 release_console_sem(); 47 kmsg_redirect = orig_kmsg; 48 return; 49 } 50 #endif 51