forked from luck/tmp_suning_uos_patched
console: Replace #if 0 with atomic var 'ignore_console_lock_warning'
The macro WARN_CONSOLE_UNLOCKED prints a warning when a thread enters the console's critical section without having acquired the console lock. The console lock can be ignored when debugging the console using printk, but this makes WARN_CONSOLE_UNLOCKED generate unnecessary warnings. The variable ignore_console_lock_warning temporarily disables WARN_CONSOLE_UNLOCKED. Developers interested in debugging the console's critical sections should increment it before entering the CS and decrement it after leaving the CS. Setting ignore_console_lock_warning is only for debugging. Regular operation should not manipulate it. Acknoledgements: This patch is based on an earlier version by Steven Rostedt. The use of atomic increment/decrement was suggested by Petr Mladek. Link: http://lkml.kernel.org/r/717e6337-e7a6-7a92-1c1b-8929a25696b5@suse.de Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Acked-by: Hans de Goede <hdegoede@redhat.com> Acked-by: Petr Mladek <pmladek@suse.com> Reviewed-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Cc: Steven Rostedt (VMware) <rostedt@goodmis.org> Cc: Andrew Morton <akpm@linux-foundation.org> [b.zolnierkie: use <linux/atomic.h>] Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
This commit is contained in:
parent
cb782a3fa9
commit
56e6c104e4
|
@ -14,6 +14,7 @@
|
|||
#ifndef _LINUX_CONSOLE_H_
|
||||
#define _LINUX_CONSOLE_H_ 1
|
||||
|
||||
#include <linux/atomic.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
struct vc_data;
|
||||
|
@ -201,11 +202,14 @@ void vcs_make_sysfs(int index);
|
|||
void vcs_remove_sysfs(int index);
|
||||
|
||||
/* Some debug stub to catch some of the obvious races in the VT code */
|
||||
#if 1
|
||||
#define WARN_CONSOLE_UNLOCKED() WARN_ON(!is_console_locked() && !oops_in_progress)
|
||||
#else
|
||||
#define WARN_CONSOLE_UNLOCKED()
|
||||
#endif
|
||||
#define WARN_CONSOLE_UNLOCKED() \
|
||||
WARN_ON(!atomic_read(&ignore_console_lock_warning) && \
|
||||
!is_console_locked() && !oops_in_progress)
|
||||
/*
|
||||
* Increment ignore_console_lock_warning if you need to quiet
|
||||
* WARN_CONSOLE_UNLOCKED() for debugging purposes.
|
||||
*/
|
||||
extern atomic_t ignore_console_lock_warning;
|
||||
|
||||
/* VESA Blanking Levels */
|
||||
#define VESA_NO_BLANKING 0
|
||||
|
|
|
@ -66,6 +66,9 @@ int console_printk[4] = {
|
|||
CONSOLE_LOGLEVEL_DEFAULT, /* default_console_loglevel */
|
||||
};
|
||||
|
||||
atomic_t ignore_console_lock_warning __read_mostly = ATOMIC_INIT(0);
|
||||
EXPORT_SYMBOL(ignore_console_lock_warning);
|
||||
|
||||
/*
|
||||
* Low level drivers may need that to know if they can schedule in
|
||||
* their unblank() callback or not. So let's export it.
|
||||
|
|
Loading…
Reference in New Issue
Block a user