2008-08-16 04:15:15

by Jeffrey V. Merkey

[permalink] [raw]
Subject: [PATCH 2.6.27-rc3 19/28] mdb: adding notify_die handler for keyboard debugger entry

added module support for keyboard debugger entry point and
notify_die entry point.

Signed-off-by: Jeffrey Vernon Merkey ([email protected])

--- a/drivers/char/keyboard.c 2008-08-15 21:26:13.000000000 -0600
+++ b/drivers/char/keyboard.c 2008-08-15 15:41:57.000000000 -0600
@@ -44,6 +44,10 @@
#include <linux/notifier.h>
#include <linux/jiffies.h>

+#if defined(CONFIG_MDB) || defined(CONFIG_MDB_MODULE)
+#include <linux/kdebug.h>
+#endif
+
extern void ctrl_alt_del(void);

#define to_handle_h(n) container_of(n, struct input_handle, h_node)
@@ -1180,6 +1184,15 @@
if (keycode < BTN_MISC && printk_ratelimit())
printk(KERN_WARNING "keyboard.c: can't emulate rawmode for keycode %d\n", keycode);

+#if defined(CONFIG_MDB) || defined(CONFIG_MDB_MODULE)
+ if (down && !rep && keycode == KEY_PAUSE)
+ {
+ if (notify_die(DIE_KERNELDEBUG, NULL, get_irq_regs(),
+ 0, -1, SIGINT) == NOTIFY_STOP)
+ return;
+ }
+#endif
+
#ifdef CONFIG_MAGIC_SYSRQ /* Handle the SysRq Hack */
if (keycode == KEY_SYSRQ && (sysrq_down || (down == 1 && sysrq_alt))) {
if (!sysrq_down) {


2008-08-16 06:31:05

by Andi Kleen

[permalink] [raw]
Subject: Re: [PATCH 2.6.27-rc3 19/28] mdb: adding notify_die handler for keyboard debugger entry

[email protected] writes:

> +#if defined(CONFIG_MDB) || defined(CONFIG_MDB_MODULE)
> + if (down && !rep && keycode == KEY_PAUSE)
> + {
> + if (notify_die(DIE_KERNELDEBUG, NULL, get_irq_regs(),
> + 0, -1, SIGINT) == NOTIFY_STOP)
> + return;
> + }
> +#endif
> +
> #ifdef CONFIG_MAGIC_SYSRQ /* Handle the SysRq Hack */
> if (keycode == KEY_SYSRQ && (sysrq_down || (down == 1 && sysrq_alt))) {
> if (!sysrq_down) {

A nicer alternative to adding an hook here would be to use
register_sysrq_key() to register a sysrq key that triggers
the debugger. That function is also already exported.

-Andi

2008-08-16 06:57:25

by Jeffrey V. Merkey

[permalink] [raw]
Subject: Re: [PATCH 2.6.27-rc3 19/28] mdb: adding notify_die handler for keyboard debugger entry

> [email protected] writes:
>
>> +#if defined(CONFIG_MDB) || defined(CONFIG_MDB_MODULE)
>> + if (down && !rep && keycode == KEY_PAUSE)
>> + {
>> + if (notify_die(DIE_KERNELDEBUG, NULL, get_irq_regs(),
>> + 0, -1, SIGINT) == NOTIFY_STOP)
>> + return;
>> + }
>> +#endif
>> +
>> #ifdef CONFIG_MAGIC_SYSRQ /* Handle the SysRq Hack */
>> if (keycode == KEY_SYSRQ && (sysrq_down || (down == 1 && sysrq_alt)))
>> {
>> if (!sysrq_down) {
>
> A nicer alternative to adding an hook here would be to use
> register_sysrq_key() to register a sysrq key that triggers
> the debugger. That function is also already exported.
>
> -Andi
>

Got it. Added to the list. I will Instrument it.

Jeff