forked from mirrors/linux
		
	[PATCH] Extract and use wake_up_klogd()
Remove hack with printing space to wake up klogd. Use explicit wake_up_klogd(). See earlier discussion http://groups.google.com/group/fa.linux.kernel/browse_frm/thread/75f496668409f58d/1a8f28983a51e1ff?lnk=st&q=wake_up_klogd+group%3Afa.linux.kernel&rnum=2#1a8f28983a51e1ff Signed-off-by: Alexey Dobriyan <adobriyan@openvz.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									cefc8be824
								
							
						
					
					
						commit
						e3e8a75d2a
					
				
					 3 changed files with 10 additions and 11 deletions
				
			
		|  | @ -176,6 +176,7 @@ static inline void console_verbose(void) | |||
| } | ||||
| 
 | ||||
| extern void bust_spinlocks(int yes); | ||||
| extern void wake_up_klogd(void); | ||||
| extern int oops_in_progress;		/* If set, an oops, panic(), BUG() or die() is in progress */ | ||||
| extern int panic_timeout; | ||||
| extern int panic_on_oops; | ||||
|  |  | |||
|  | @ -783,6 +783,12 @@ int is_console_locked(void) | |||
| 	return console_locked; | ||||
| } | ||||
| 
 | ||||
| void wake_up_klogd(void) | ||||
| { | ||||
| 	if (!oops_in_progress && waitqueue_active(&log_wait)) | ||||
| 		wake_up_interruptible(&log_wait); | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|  * release_console_sem - unlock the console system | ||||
|  * | ||||
|  | @ -825,8 +831,8 @@ void release_console_sem(void) | |||
| 	console_locked = 0; | ||||
| 	up(&console_sem); | ||||
| 	spin_unlock_irqrestore(&logbuf_lock, flags); | ||||
| 	if (wake_klogd && !oops_in_progress && waitqueue_active(&log_wait)) | ||||
| 		wake_up_interruptible(&log_wait); | ||||
| 	if (wake_klogd) | ||||
| 		wake_up_klogd(); | ||||
| } | ||||
| EXPORT_SYMBOL(release_console_sem); | ||||
| 
 | ||||
|  |  | |||
|  | @ -19,19 +19,11 @@ void __attribute__((weak)) bust_spinlocks(int yes) | |||
| 	if (yes) { | ||||
| 		oops_in_progress = 1; | ||||
| 	} else { | ||||
| 		int loglevel_save = console_loglevel; | ||||
| #ifdef CONFIG_VT | ||||
| 		unblank_screen(); | ||||
| #endif | ||||
| 		oops_in_progress = 0; | ||||
| 		/*
 | ||||
| 		 * OK, the message is on the console.  Now we call printk() | ||||
| 		 * without oops_in_progress set so that printk() will give klogd | ||||
| 		 * and the blanked console a poke.  Hold onto your hats... | ||||
| 		 */ | ||||
| 		console_loglevel = 15;		/* NMI oopser may have shut the console up */ | ||||
| 		printk(" "); | ||||
| 		console_loglevel = loglevel_save; | ||||
| 		wake_up_klogd(); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Kirill Korotaev
						Kirill Korotaev