diff mbox

[1/1] hvc_console: escape magic sysrq key

Message ID 20081216092408.362722962@linux.vnet.ibm.com (mailing list archive)
State Superseded, archived
Headers show

Commit Message

Hendrik Brueckner Dec. 16, 2008, 9:15 a.m. UTC
From: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>

The ctrl-o (^O) is a common control key used by several applications like vim.

To allow users to send ^O to the terminal, this patch introduces a check
if ^O is pressed again if the sysrq_pressed variable is already set.
In this case, clear sysrq_pressed state and flip the ^O character to the tty.
(The old behavior has always set "sysrq_pressed" if ^0 has been entered, and it
has not flipped the ^O character to the tty.)

Signed-off-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
---
 drivers/char/hvc_console.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

Comments

Andreas Schwab Dec. 16, 2008, 9:36 a.m. UTC | #1
Hendrik Brueckner <brueckner@linux.vnet.ibm.com> writes:

> +					/* if ^0 is pressed again, reset
> +					 * sysrq_pressed and flip ^0 char */

The comment says ^0 twice when ^O is meant.

> +					sysrq_pressed = (sysrq_pressed) ? 0 : 1;

                                        sysrq_pressed = !sysrc_pressed;

Andreas.
diff mbox

Patch

--- a/drivers/char/hvc_console.c
+++ b/drivers/char/hvc_console.c
@@ -642,8 +642,11 @@  int hvc_poll(struct hvc_struct *hp)
 				/* Handle the SysRq Hack */
 				/* XXX should support a sequence */
 				if (buf[i] == '\x0f') {	/* ^O */
-					sysrq_pressed = 1;
-					continue;
+					/* if ^0 is pressed again, reset
+					 * sysrq_pressed and flip ^0 char */
+					sysrq_pressed = (sysrq_pressed) ? 0 : 1;
+					if (sysrq_pressed)
+						continue;
 				} else if (sysrq_pressed) {
 					handle_sysrq(buf[i], tty);
 					sysrq_pressed = 0;