// The OS/K Team licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. #include #include void _except(ctx_t *ctx, int code, char *fmt, ...) { va_list ap; // // Restore stdin echoing // struct termios t; tcgetattr(0, &t); t.c_lflag |= ECHO; tcsetattr(0, TCSANOW, &t); log("\nException %d - ", code); va_start(ap, fmt); vlog(fmt, ap); va_end(ap); log("\n"); dumpregs(ctx); log("\n"); dumpfwstack(ctx); if (ctx->mp) free(ctx->mp); // // Shut down devices // if (devfiniall(ctx) < 0) { log("Couldn't deinitialize devices\n"); exit(-100 - code); } exit(code); }