5c522ffc7f
Signed-off-by: Chloe M. <chloe@mensia.org>
55 lines
1.3 KiB
C
55 lines
1.3 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"
|
|
};
|
|
|
|
/* 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));
|
|
}
|