aboutsummaryrefslogtreecommitdiffstats
path: root/arch/um
diff options
context:
space:
mode:
authorJeff Dike <jdike@addtoit.com>2007-05-06 17:51:39 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-05-07 15:13:03 -0400
commit63843c265fd0e0c7894f713e0db5777560e756ae (patch)
tree020eb5c523857f2485fd1ca4968245f7264a4cba /arch/um
parent990c55871b655156ffd7787af791be977d946ef6 (diff)
uml: dump core on panic
Dump core after a panic. This will provide better debugging information than is currently available. Signed-off-by: Jeff Dike <jdike@linux.intel.com> Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/um')
-rw-r--r--arch/um/include/os.h1
-rw-r--r--arch/um/kernel/um_arch.c2
-rw-r--r--arch/um/os-Linux/util.c6
3 files changed, 8 insertions, 1 deletions
diff --git a/arch/um/include/os.h b/arch/um/include/os.h
index b463170a5308..901804db3c35 100644
--- a/arch/um/include/os.h
+++ b/arch/um/include/os.h
@@ -279,6 +279,7 @@ extern int raw(int fd);
279extern void setup_machinename(char *machine_out); 279extern void setup_machinename(char *machine_out);
280extern void setup_hostinfo(char *buf, int len); 280extern void setup_hostinfo(char *buf, int len);
281extern int setjmp_wrapper(void (*proc)(void *, void *), ...); 281extern int setjmp_wrapper(void (*proc)(void *, void *), ...);
282extern void os_dump_core(void);
282 283
283/* time.c */ 284/* time.c */
284#define BILLION (1000 * 1000 * 1000) 285#define BILLION (1000 * 1000 * 1000)
diff --git a/arch/um/kernel/um_arch.c b/arch/um/kernel/um_arch.c
index 9bf31533a8fd..1cf954a47fd7 100644
--- a/arch/um/kernel/um_arch.c
+++ b/arch/um/kernel/um_arch.c
@@ -474,7 +474,7 @@ static int panic_exit(struct notifier_block *self, unsigned long unused1,
474 show_regs(&(current->thread.regs)); 474 show_regs(&(current->thread.regs));
475 bust_spinlocks(0); 475 bust_spinlocks(0);
476 uml_exitcode = 1; 476 uml_exitcode = 1;
477 machine_halt(); 477 os_dump_core();
478 return 0; 478 return 0;
479} 479}
480 480
diff --git a/arch/um/os-Linux/util.c b/arch/um/os-Linux/util.c
index 48bc4927b996..c307a89ed259 100644
--- a/arch/um/os-Linux/util.c
+++ b/arch/um/os-Linux/util.c
@@ -119,3 +119,9 @@ int setjmp_wrapper(void (*proc)(void *, void *), ...)
119 va_end(args); 119 va_end(args);
120 return n; 120 return n;
121} 121}
122
123void os_dump_core(void)
124{
125 signal(SIGSEGV, SIG_DFL);
126 abort();
127}