/* Copyright (C) 2021,2022 fef . All rights reserved. */ #include #include #include #include #include #include #include __noreturn void panic(const char *fmt, ...) { va_list args; va_start(args, fmt); disable_intr(); kprintf("Kernel panic: "); if (fmt == nil) kprintf("(nil)\n"); else kvprintf(fmt, args); kprintf("\n"); ktrace_print(); kprintf("\nKernel version: %s\nSystem halted", GAY_VERSION_STR); /* no need for va_end() here i guess */ while (1) { halt(); disable_intr(); } } __noreturn void panic_notrace(const char *fmt, ...) { va_list args; va_start(args, fmt); disable_intr(); kprintf("Kernel panic: "); if (fmt == nil) kprintf("(nil)\n"); else kvprintf(fmt, args); kprintf("\nKernel version: %s\nSystem halted", GAY_VERSION_STR); /* no need for va_end() here i guess */ while (1) { halt(); disable_intr(); } }