Files
SystemPaw3/paw/stos/ke/knot.c
T
Chloe M. 114cc434d2 stos/amd64: intr: Add IRQL management
Signed-off-by: Chloe M. <chloe@mensia.org>
2026-06-23 22:01:52 +00:00

59 lines
1.5 KiB
C

/*
* Copyright (c) 2026, Chloe M.
* Provided under the BSD-3 clause.
*
* Description: Fucks and knots the kernel
* Author: Chloe M.
*/
#include <drivers/bootvid/fbio.h>
#include <ke/bpal.h>
#include <ex/trace.h>
#include <ke/knot.h>
#define KNOT_REASON(Reason) \
((Reason) >= NELEM(ReasonTable)) \
? ReasonTable[0] \
: ReasonTable[(Reason)]
/* Reason lookup table */
static const CHAR *ReasonTable[] = {
[KNOT_MISC] = "unspecified reason",
[KNOT_UNBOUND_RSRC] = "unbounded resource",
[KNOT_BAD_BOOT_PROTO] = "bad boot protocol",
[KNOT_OOM] = "out of memory",
[KNOT_EXCEPTION] = "fatal exception",
[IRQL_NOT_LTE] = "irql not less than or equal",
[IRQL_NOT_GTE] = "irql not greater than or equal"
};
/* Globals */
static CHAR KnotBuf[256];
static va_list Ap;
static BOOTCONS_ATTR KnotAttr = {
.Background = 0x000080,
.Foreground = 0xFFFFFF
};
static CHAR KnotMessage[] = {
"SystemPaw DR has ran into a wittle issue and the kernel pilot kitty\n"
"has suspended the CPU to prevent damage to your machine.\n\n"
"Press and hold the power button until the screen blanks.\n\n"
};
VOID
KiKnot(KNOT_REASON Reason, const CHAR *Fmt, ...)
{
va_start(Ap, Fmt);
FmtPrintf(KnotBuf, sizeof(KnotBuf), Fmt, Ap);
if (KeBpalIsInit()) {
BootVidInitCons(&KnotAttr);
}
TRACE("\033[H\033[2J");
TRACE(KnotMessage);
TRACE("knot: %s", KnotBuf);
TRACE("reason: %s\n", KNOT_REASON(Reason));
}