PRIVATE void ser_debug(const int c) { serial_debug_active = 1; switch(c) { case 'Q': minix_shutdown(NULL); NOT_REACHABLE; #ifdef CONFIG_SMP case 'B': dump_bkl_usage(); break; case 'b': reset_bkl_usage(); break; #endif case '1': ser_dump_proc(); break; case '2': ser_dump_queues(); break; case '3': ser_dump_segs(); break; #ifdef CONFIG_SMP case '4': ser_dump_proc_cpu(); break; #endif #if DEBUG_TRACE #define TOGGLECASE(ch, flag) \ case ch: { \ if(verboseflags & flag) { \ verboseflags &= ~flag; \ printf("%s disabled\n", #flag); \ } else { \ verboseflags |= flag; \ printf("%s enabled\n", #flag); \ } \ break; \ } TOGGLECASE('8', VF_SCHEDULING) TOGGLECASE('9', VF_PICKPROC) #endif #ifdef USE_APIC case 'I': dump_apic_irq_state(); break; #endif } serial_debug_active = 0; }
/*===========================================================================* * minix_panic * *===========================================================================*/ PUBLIC void minix_panic(char *mess,int nr) { /* The system has run aground of a fatal kernel error. Terminate execution. */ if (minix_panicing++) { arch_monitor(); } if (mess != NULL) { kprintf("kernel panic: %s", mess); if(nr != NO_NUM) kprintf(" %d", nr); kprintf("\n"); } kprintf("kernel: "); util_stacktrace(); /* Abort MINIX. */ minix_shutdown(NULL); }
/*===========================================================================* * panic * *===========================================================================*/ PUBLIC void panic(const char *fmt, ...) { va_list arg; /* The system has run aground of a fatal kernel error. Terminate execution. */ if (minix_panicing == ARE_PANICING) { arch_monitor(); } minix_panicing = ARE_PANICING; if (fmt != NULL) { printf("kernel panic: "); va_start(arg, fmt); vprintf(fmt, arg); printf("\n"); } printf("kernel: "); util_stacktrace(); /* Abort MINIX. */ minix_shutdown(NULL); }
/*===========================================================================* * panic * *===========================================================================*/ PUBLIC void panic(const char *fmt, ...) { va_list arg; /* The system has run aground of a fatal kernel error. Terminate execution. */ if (minix_panicing == ARE_PANICING) { reset(); } minix_panicing = ARE_PANICING; if (fmt != NULL) { printf("kernel panic: "); va_start(arg, fmt); vprintf(fmt, arg); printf("\n"); } printf("kernel on CPU %d: ", cpuid); util_stacktrace(); printf("current process : "); proc_stacktrace(get_cpulocal_var(proc_ptr)); /* Abort MINIX. */ minix_shutdown(NULL); }