[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [Xen-devel] [PATCH] break-in to Xen 1) when gdb is invoked and 2) ^C on gdb
Hello Keir, This patch makes gdb break-in to Xen when 1) it is invoked and 2) ^C is typed on gdb or clicking interrupt on ddd. diff -r 8b0f1f37e145 xen/common/keyhandler.c --- a/xen/common/keyhandler.c Sun Aug 16 08:46:08 2009 +0100 +++ b/xen/common/keyhandler.c Mon Aug 17 10:07:04 2009 -0700 @@ -397,7 +397,11 @@ .desc = "print all diagnostics" }; +#if 1 +void do_debug_key(unsigned char key, struct cpu_user_regs *regs) +#else static void do_debug_key(unsigned char key, struct cpu_user_regs *regs) +#endif { printk("'%c' pressed -> trapping into debugger\n", key); (void)debugger_trap_fatal(0xf001, regs); diff -r 8b0f1f37e145 xen/drivers/char/ns16550.c --- a/xen/drivers/char/ns16550.c Sun Aug 16 08:46:08 2009 +0100 +++ b/xen/drivers/char/ns16550.c Mon Aug 17 10:07:04 2009 -0700 @@ -16,6 +16,7 @@ #include <xen/serial.h> #include <xen/iocap.h> #include <asm/io.h> +#include <xen/keyhandler.h> /* * Configure serial port with a string: @@ -125,10 +126,16 @@ { struct serial_port *port = dev_id; struct ns16550 *uart = port->uart; + char lsr; while ( !(ns_read_reg(uart, IIR) & IIR_NOINT) ) { - char lsr = ns_read_reg(uart, LSR); + lsr = ns_read_reg(uart, LSR); +#if 1 + if ( lsr & LSR_BI ) { /* on BREAK */ + do_debug_key('g', regs); /* g is meaningless */ + } +#endif if ( lsr & LSR_THRE ) serial_tx_interrupt(port, regs); if ( lsr & LSR_DR ) diff -r 8b0f1f37e145 xen/include/xen/keyhandler.h --- a/xen/include/xen/keyhandler.h Sun Aug 16 08:46:08 2009 +0100 +++ b/xen/include/xen/keyhandler.h Mon Aug 17 10:07:04 2009 -0700 @@ -40,6 +40,10 @@ char *desc; }; +#if 1 +extern void do_debug_key(unsigned char key, struct cpu_user_regs *regs); +#endif + /* Initialize keytable with default handlers */ extern void initialize_keytable(void); Xen expects BREAK and 'g' which is the same sequence of the one on Linux kernel. I submitted a patch which sends BREAK and 'g' to gdb-patches on 08/07, but it is not approved yet. You can't use ssplitd/nsplitd because it does not pass BREAK. Therefore, you lose console output and corresponding ^A^A^A functions. My associated lines for the patch are menu.lst kernel /boot/xen-3.5-unstable.gz com1=115200,8n1 gdb=com1 .gdbinit set remotebreak BREAK-g target remote /dev/ttyS0 ddd --gdb --debugger "/home/caz/lightfleet/kgdb/gdb-KgdbLight/gdb/gdb" xen/xen-syms -caz Attachment:
BREAK-g.patch _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |