* [PATCH] Hook up sysrq for xencons
@ 2005-08-31 22:20 Jeremy Katz
2005-09-01 10:46 ` Christian Limpach
0 siblings, 1 reply; 2+ messages in thread
From: Jeremy Katz @ 2005-08-31 22:20 UTC (permalink / raw)
To: xen-devel@lists.xensource.com
[-- Attachment #1: Type: text/plain, Size: 195 bytes --]
Having sysrq is regularly handy. Following in the tradition set by the
various consoles for virtual ppc stuff, I've made the sysrq key ^O.
Signed-off-by: Jeremy Katz <katzj@redhat.com>
Jeremy
[-- Attachment #2: xen-sysrq.patch --]
[-- Type: text/x-patch, Size: 3244 bytes --]
diff -r 8af8ddf91078 linux-2.6-xen-sparse/drivers/xen/console/console.c
--- a/linux-2.6-xen-sparse/drivers/xen/console/console.c Wed Aug 31 14:53:43 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/console/console.c Wed Aug 31 18:19:48 2005
@@ -45,6 +45,7 @@
#include <linux/init.h>
#include <linux/console.h>
#include <linux/bootmem.h>
+#include <linux/sysrq.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/uaccess.h>
@@ -66,6 +67,11 @@
static enum { XC_OFF, XC_DEFAULT, XC_TTY, XC_SERIAL } xc_mode = XC_DEFAULT;
static int xc_num = -1;
+#ifdef CONFIG_MAGIC_SYSRQ
+static unsigned long sysrq_requested;
+extern int sysrq_enabled;
+#endif
+
static int __init xencons_setup(char *str)
{
char *q;
@@ -296,7 +302,7 @@
static char x_char;
/* Non-privileged receive callback. */
-static void xencons_rx(char *buf, unsigned len)
+static void xencons_rx(char *buf, unsigned len, struct pt_regs *regs)
{
int i;
unsigned long flags;
@@ -304,8 +310,27 @@
spin_lock_irqsave(&xencons_lock, flags);
if ( xencons_tty != NULL )
{
- for ( i = 0; i < len; i++ )
+ for ( i = 0; i < len; i++ ) {
+#ifdef CONFIG_MAGIC_SYSRQ
+ if (sysrq_enabled) {
+ if (buf[i] == '\x0f') { /* ^O */
+ sysrq_requested = jiffies;
+ continue; /* don't print the sysrq key */
+ } else if (sysrq_requested) {
+ unsigned long sysrq_timeout = sysrq_requested + HZ*2;
+ sysrq_requested = 0;
+ /* if it's been less than a timeout, do the sysrq */
+ if (time_before(jiffies, sysrq_timeout)) {
+ spin_unlock_irqrestore(&xencons_lock, flags);
+ handle_sysrq(buf[i], regs, xencons_tty);
+ spin_lock_irqsave(&xencons_lock, flags);
+ continue;
+ }
+ }
+ }
+#endif
tty_insert_flip_char(xencons_tty, buf[i], 0);
+ }
tty_flip_buffer_push(xencons_tty);
}
spin_unlock_irqrestore(&xencons_lock, flags);
diff -r 8af8ddf91078 linux-2.6-xen-sparse/drivers/xen/console/xencons_ring.c
--- a/linux-2.6-xen-sparse/drivers/xen/console/xencons_ring.c Wed Aug 31 14:53:43 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/console/xencons_ring.c Wed Aug 31 18:19:48 2005
@@ -82,7 +82,7 @@
while (ring->cons < ring->prod) {
if (xencons_receiver != NULL) {
xencons_receiver(ring->buf + XENCONS_IDX(ring->cons),
- 1);
+ 1, regs);
}
ring->cons++;
}
diff -r 8af8ddf91078 linux-2.6-xen-sparse/drivers/xen/console/xencons_ring.h
--- a/linux-2.6-xen-sparse/drivers/xen/console/xencons_ring.h Wed Aug 31 14:53:43 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/console/xencons_ring.h Wed Aug 31 18:19:48 2005
@@ -7,7 +7,8 @@
int xencons_ring_init(void);
int xencons_ring_send(const char *data, unsigned len);
-typedef void (xencons_receiver_func)(char *buf, unsigned len);
+typedef void (xencons_receiver_func)(char *buf, unsigned len,
+ struct pt_regs *regs);
void xencons_ring_register_receiver(xencons_receiver_func *f);
#endif /* _XENCONS_RING_H */
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] Hook up sysrq for xencons
2005-08-31 22:20 [PATCH] Hook up sysrq for xencons Jeremy Katz
@ 2005-09-01 10:46 ` Christian Limpach
0 siblings, 0 replies; 2+ messages in thread
From: Christian Limpach @ 2005-09-01 10:46 UTC (permalink / raw)
To: Jeremy Katz; +Cc: xen-devel@lists.xensource.com
Thanks!
On 8/31/05, Jeremy Katz <katzj@redhat.com> wrote:
> Having sysrq is regularly handy. Following in the tradition set by the
> various consoles for virtual ppc stuff, I've made the sysrq key ^O.
>
> Signed-off-by: Jeremy Katz <katzj@redhat.com>
>
> Jeremy
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xensource.com
> http://lists.xensource.com/xen-devel
>
>
>
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2005-09-01 10:46 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-08-31 22:20 [PATCH] Hook up sysrq for xencons Jeremy Katz
2005-09-01 10:46 ` Christian Limpach
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.