On Sat, 9 Feb 2002, Hugh Dickins wrote:
>
> It's frustrating that when Verbose BUG() reporting is configured,
> info gets lost: fix for i386 below. This is your area, Andrew:
> please confirm to Marcelo if you'd like him to apply this.
>
> Example: in hpa's recent prune_dcache crash, %eax showed the length of
> the kernel BUG printk, when we'd have liked to see the invalid d_count:
> off-by-one or obviously corrupted?
Don't do it this way.
Instead, put the string printout in the _trap_ handler, and make the
format of BUG() be something like this:
#ifdef CONFIG_DEBUG_BUGVERBOSE
#define BUGSTR "\"" __FILE__ "\""
#else
#define BUGSTR ""
#endif
#define BUG() \
asm("ud2\n\t.word __LINE__\n\t.asciiz " BUGSTR)
and then have the trap handler print out the pretty-printed version.
The advantage of this is:
- much smaller footprint even when messages are enabled.
- no register corruption
- easily extendible (ie we can put a "bug code" etc, and have the trap
handler do different things depending on the code)
Ok?
Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Fri Feb 15 2002 - 21:00:27 EST