On Nov 3, 2007 2:34 AM, Jay Lan <[EMAIL PROTECTED]> wrote:
>
> jidong xiao wrote:
> > Hi,all
> >
> > Can anyone kindly explain the usage of kdb_event?Thank you very much!
> > I saw this varible is used only in two places, inside kdb_printf() and
> > kdb(), kdb_event is incremented and decremented. But I have no idea
> > why do we need to use it in these two circumstance.
>
> KDB modifies <linux/console.h> in this way:
> #ifdef  CONFIG_KDB
> #include <linux/kdb.h>
> #define WARN_CONSOLE_UNLOCKED() WARN_ON(!is_console_locked() &&
> !oops_in_progress && !atomic_read(&kdb_event))
> #else   /* !CONFIG_KDB */
> #define WARN_CONSOLE_UNLOCKED() WARN_ON(!is_console_locked() &&
> !oops_in_progress)
> #endif  /* CONFIG_KDB */
>
> The counter of kdb_event affects the value of WARN_CONSOLE_UNLOCKED().
>
> Thanks,
>  - jay
>
Well yes I saw kdb modifies WARN_CONSOLE_UNLOCKED, and I can
understand the reason that kdb_event is incremented/decremented in
kdb_printf(),  because kdb_printf() will finally invoke
vt_console_print()->hide_cursor()->clear_selection()->highlight_pointer()->complement_pos(),
inside complement_pos(), WARN_CONSOLE_UNLOCKED is called. so in
kdb_printf() we should increment kdb_event to avoid the warning
message,or in other words, to avoid deadlock.

But what I can't understand is that why we increment kdb_event at the
begining of kdb()?Is it neccessary?

Thanks
Jason
---------------------------
Use http://oss.sgi.com/ecartis to modify your settings or to unsubscribe.

Reply via email to