Re: [PATCH 22/28] printk,kdb: capture printk() when in kdb shell

From: Jason Wessel
Date: Fri Feb 12 2010 - 18:21:15 EST


Andrew Morton wrote:
> On Fri, 12 Feb 2010 16:35:37 -0600 Jason Wessel <jason.wessel@xxxxxxxxxxxxx> wrote:
>
>
>> @@ -609,6 +610,14 @@ asmlinkage int printk(const char *fmt, ...)
>> va_list args;
>> int r;
>>
>> +#ifdef CONFIG_KGDB_KDB
>> + if (unlikely(kdb_trap_printk)) {
>> + va_start(args, fmt);
>> + r = vkdb_printf(fmt, args);
>> + va_end(args);
>> + return r;
>> + }
>> +#endif
>> va_start(args, fmt);
>> r = vprintk(fmt, args);
>> va_end(args);
>>
>
> this?
>
> --- a/kernel/printk.c~a
> +++ a/kernel/printk.c
> @@ -594,7 +594,11 @@ asmlinkage int printk(const char *fmt, .
> int r;
>
> va_start(args, fmt);
> +#ifdef CONFIG_KGDB_KDB
> + r = vkdb_printf(fmt, args);
> +#else
> r = vprintk(fmt, args);
> +#endif
> va_end(args);
>
> return r;
> _
>

If you feel that would be cleaner, I can make that change, but I would
also have to call vprintk() from vkdb_printf when ever kdb_trap_printk
is not set. Do I understand your recommendation correctly?

The only time the kdb_trap_printk is ever set comes when we are inside
the kernel debug shell, and do something like "bt". It serves the
purpose of letting folks run the stack dumper and a few other
functions. We want to trap printk's in this instance because we don't
want them in the log them and also for the case when your debug
connection is not actually a system log console, or if you run the
command via gdb (example is "monitor bt").

Thanks,
Jason.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/