diff options
Diffstat (limited to 'kern')
-rw-r--r-- | kern/debug.c | 21 | ||||
-rw-r--r-- | kern/debug.h | 1 | ||||
-rw-r--r-- | kern/lock_mon.c | 4 | ||||
-rw-r--r-- | kern/syscall_sw.c | 4 |
4 files changed, 20 insertions, 10 deletions
diff --git a/kern/debug.c b/kern/debug.c index 57a8126..26445f8 100644 --- a/kern/debug.c +++ b/kern/debug.c @@ -73,17 +73,16 @@ Assert(char *exp, char *file, int line) Debugger("assertion failure"); } -void Debugger(message) +void SoftDebugger(message) char * message; { + printf("Debugger invoked: %s\n", message); + #if !MACH_KDB - panic("Debugger invoked, but there isn't one!"); + printf("But no debugger, continuing.\n"); + return; #endif -#ifdef lint - message++; -#endif /* lint */ - #if defined(vax) || defined(PC532) asm("bpt"); #endif /* vax */ @@ -104,6 +103,16 @@ void Debugger(message) #ifdef i386 asm("int3"); #endif +} + +void Debugger(message) + char * message; +{ +#if !MACH_KDB + panic("Debugger invoked, but there isn't one!"); +#endif + + SoftDebugger(message); panic("Debugger returned!"); } diff --git a/kern/debug.h b/kern/debug.h index 287b152..f4e8200 100644 --- a/kern/debug.h +++ b/kern/debug.h @@ -60,6 +60,7 @@ extern void panic_init(void); extern void panic (const char *s, ...) __attribute__ ((noreturn)); +extern void SoftDebugger (char *message); extern void Debugger (char *message) __attribute__ ((noreturn)); #endif /* _mach_debug__debug_ */ diff --git a/kern/lock_mon.c b/kern/lock_mon.c index 7ffaeb6..1450428 100644 --- a/kern/lock_mon.c +++ b/kern/lock_mon.c @@ -348,7 +348,7 @@ decl_simple_lock_data(, *lock) return; db_printf("cpu %d looping on simple_lock(%x) called by %x\n", cpu_number(), lock, *(((int *)&lock) -1)); - Debugger("simple_lock timeout"); + SoftDebugger("simple_lock timeout"); count = 0; } } @@ -362,7 +362,7 @@ retry_bit_lock(index, addr) if (count++ > 1000000) { db_printf("cpu %d looping on bit_lock(%x, %x) called by %x\n", cpu_number(), index, addr, *(((int *)&index) -1)); - Debugger("bit_lock timeout"); + SoftDebugger("bit_lock timeout"); count = 0; } } diff --git a/kern/syscall_sw.c b/kern/syscall_sw.c index bd3b874..b2e20e6 100644 --- a/kern/syscall_sw.c +++ b/kern/syscall_sw.c @@ -60,13 +60,13 @@ int kern_invalid_debug = 0; mach_port_t null_port() { - if (kern_invalid_debug) Debugger("null_port mach trap"); + if (kern_invalid_debug) SoftDebugger("null_port mach trap"); return(MACH_PORT_NULL); } kern_return_t kern_invalid() { - if (kern_invalid_debug) Debugger("kern_invalid mach trap"); + if (kern_invalid_debug) SoftDebugger("kern_invalid mach trap"); return(KERN_INVALID_ARGUMENT); } |