DORMANTno replies

[uml-devel] [patch 12/20] uml:use kallsyms when dumping stack

From: <hidden>
Date: 2004-11-04 02:03:26
Also in: lkml

This patch makes UML use print_symbol() when dumping the stack. It is not yet
complete (the i386 version uses the frame pointers to walk the stack, for
instance), but should be at least enough.

Also, it uses bust_spinlock() when dumping errors to help them reach the
console. This appears not to be enough - however I analyzed the UML console
code, and it seems that UML console don't get flushed *at all* when exiting.

Signed-off-by: Paolo 'Blaisorblade' Giarrusso <redacted>
---

 vanilla-linux-2.6.9-paolo/arch/um/kernel/sysrq.c   |   13 ++++++-------
 vanilla-linux-2.6.9-paolo/arch/um/kernel/um_arch.c |    6 +++---
 2 files changed, 9 insertions(+), 10 deletions(-)

diff -puN arch/um/kernel/sysrq.c~uml-use-kallsyms arch/um/kernel/sysrq.c
--- vanilla-linux-2.6.9/arch/um/kernel/sysrq.c~uml-use-kallsyms	2004-11-03 23:45:00.242401880 +0100
+++ vanilla-linux-2.6.9-paolo/arch/um/kernel/sysrq.c	2004-11-03 23:45:00.246401272 +0100
@@ -14,23 +14,23 @@
 
 void show_trace(unsigned long * stack)
 {
-        int i;
+	/* XXX: Copy the CONFIG_FRAME_POINTER stack-walking backtrace from
+	 * arch/i386/kernel/traps.c. */
         unsigned long addr;
 
         if (!stack)
                 stack = (unsigned long*) &stack;
 
-        printk("Call Trace:\n");
-        i = 1;
+        printk("Call Trace: \n");
         while (((long) stack & (THREAD_SIZE-1)) != 0) {
                 addr = *stack++;
 		if (__kernel_text_address(addr)) {
-			printk("[<%08lx>] ", addr);
-			print_symbol("%s", addr);
+			printk(" [<%08lx>]", addr);
+			print_symbol(" %s", addr);
 			printk("\n");
-			i++;
                 }
         }
+        printk("\n");
 }
 
 /*
@@ -48,4 +48,3 @@ void show_stack(struct task_struct *task
 {
 	show_trace(sp);
 }
-
diff -puN arch/um/kernel/um_arch.c~uml-use-kallsyms arch/um/kernel/um_arch.c
--- vanilla-linux-2.6.9/arch/um/kernel/um_arch.c~uml-use-kallsyms	2004-11-03 23:45:00.243401728 +0100
+++ vanilla-linux-2.6.9-paolo/arch/um/kernel/um_arch.c	2004-11-03 23:45:00.246401272 +0100
@@ -405,9 +405,9 @@ extern int uml_exitcode;
 static int panic_exit(struct notifier_block *self, unsigned long unused1,
 		      void *unused2)
 {
-#ifdef CONFIG_MAGIC_SYSRQ
-	handle_sysrq('p', &current->thread.regs, NULL);
-#endif
+	bust_spinlocks(1);
+	show_regs(&(current->thread.regs));
+	bust_spinlocks(0);
 	uml_exitcode = 1;
 	machine_halt();
 	return(0);
_


-------------------------------------------------------
This SF.Net email is sponsored by:
Sybase ASE Linux Express Edition - download now for FREE
LinuxWorld Reader's Choice Award Winner for best database on Linux.
http://ads.osdn.com/?ad_id=5588&alloc_id=12065&op=click
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help