patch-2.4.19 linux-2.4.19/drivers/char/pc_keyb.c
Next file: linux-2.4.19/drivers/char/pcwd.c
Previous file: linux-2.4.19/drivers/char/nvram.c
Back to the patch index
Back to the overall index
- Lines: 44
- Date:
Fri Aug 2 17:39:43 2002
- Orig file:
linux-2.4.18/drivers/char/pc_keyb.c
- Orig date:
Fri Nov 9 14:01:21 2001
diff -urN linux-2.4.18/drivers/char/pc_keyb.c linux-2.4.19/drivers/char/pc_keyb.c
@@ -1215,3 +1215,43 @@
}
#endif /* CONFIG_PSMOUSE */
+
+
+static int blink_frequency = HZ/2;
+
+/* Tell the user who may be running in X and not see the console that we have
+ panic'ed. This is to distingush panics from "real" lockups.
+ Could in theory send the panic message as morse, but that is left as an
+ exercise for the reader. */
+void panic_blink(void)
+{
+ static unsigned long last_jiffie;
+ static char led;
+ /* Roughly 1/2s frequency. KDB uses about 1s. Make sure it is
+ different. */
+ if (!blink_frequency)
+ return;
+ if (jiffies - last_jiffie > blink_frequency) {
+ led ^= 0x01 | 0x04;
+ while (kbd_read_status() & KBD_STAT_IBF) mdelay(1);
+ kbd_write_output(KBD_CMD_SET_LEDS);
+ mdelay(1);
+ while (kbd_read_status() & KBD_STAT_IBF) mdelay(1);
+ mdelay(1);
+ kbd_write_output(led);
+ last_jiffie = jiffies;
+ }
+}
+
+static int __init panicblink_setup(char *str)
+{
+ int par;
+ if (get_option(&str,&par))
+ blink_frequency = par*(1000/HZ);
+ return 1;
+}
+
+/* panicblink=0 disables the blinking as it caused problems with some console
+ switches. otherwise argument is ms of a blink period. */
+__setup("panicblink=", panicblink_setup);
+
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)