diff options
author | Jeff Dike <jdike@addtoit.com> | 2007-05-06 17:51:39 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-07 15:13:03 -0400 |
commit | 63843c265fd0e0c7894f713e0db5777560e756ae (patch) | |
tree | 020eb5c523857f2485fd1ca4968245f7264a4cba /arch/um | |
parent | 990c55871b655156ffd7787af791be977d946ef6 (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.h | 1 | ||||
-rw-r--r-- | arch/um/kernel/um_arch.c | 2 | ||||
-rw-r--r-- | arch/um/os-Linux/util.c | 6 |
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); | |||
279 | extern void setup_machinename(char *machine_out); | 279 | extern void setup_machinename(char *machine_out); |
280 | extern void setup_hostinfo(char *buf, int len); | 280 | extern void setup_hostinfo(char *buf, int len); |
281 | extern int setjmp_wrapper(void (*proc)(void *, void *), ...); | 281 | extern int setjmp_wrapper(void (*proc)(void *, void *), ...); |
282 | extern 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 | |||
123 | void os_dump_core(void) | ||
124 | { | ||
125 | signal(SIGSEGV, SIG_DFL); | ||
126 | abort(); | ||
127 | } | ||