stos: Handle pre BPAL kernel knots
Signed-off-by: Chloe M. <chloe@mensia.org>
This commit is contained in:
@@ -97,6 +97,11 @@ VOID KeBpalInit(VOID);
|
||||
*/
|
||||
VOID KeBpalGetHandle(BPAL_HANDLE *Result);
|
||||
|
||||
/*
|
||||
* Returns true if the BPAL is initialized
|
||||
*/
|
||||
BOOLEAN KeBpalIsInit(VOID);
|
||||
|
||||
/*
|
||||
* Obtain the kernel load virtual memory base
|
||||
*/
|
||||
|
||||
@@ -16,10 +16,12 @@
|
||||
*
|
||||
* @KNOT_MISC: Misc. reason
|
||||
* @KNOT_UNBOUND_RSRC: Unbounded resource
|
||||
* @KNOT_BAD_BOOT_PROTO: Bad boot protocol
|
||||
*/
|
||||
typedef enum {
|
||||
KNOT_MISC,
|
||||
KNOT_UNBOUND_RSRC
|
||||
KNOT_UNBOUND_RSRC,
|
||||
KNOT_BAD_BOOT_PROTO
|
||||
} KNOT_REASON;
|
||||
|
||||
/*
|
||||
|
||||
+14
-1
@@ -7,6 +7,7 @@
|
||||
*/
|
||||
|
||||
#include <ke/bpal.h>
|
||||
#include <ke/knot.h>
|
||||
#include <stdef.h>
|
||||
#include <string.h>
|
||||
|
||||
@@ -17,6 +18,7 @@
|
||||
#endif /* !_BOOT_PROTO */
|
||||
|
||||
static BPAL_HANDLE BpalHandle;
|
||||
static BOOLEAN IsInit = false;
|
||||
|
||||
VOID
|
||||
KeBpalGetHandle(BPAL_HANDLE *Result)
|
||||
@@ -28,6 +30,12 @@ KeBpalGetHandle(BPAL_HANDLE *Result)
|
||||
*Result = BpalHandle;
|
||||
}
|
||||
|
||||
BOOLEAN
|
||||
KeBpalIsInit(VOID)
|
||||
{
|
||||
return IsInit;
|
||||
}
|
||||
|
||||
VOID
|
||||
KeBpalInit(VOID)
|
||||
{
|
||||
@@ -37,9 +45,14 @@ KeBpalInit(VOID)
|
||||
case 'l':
|
||||
if (RtlMemCmp(BootProto, "limine", 6) == 0) {
|
||||
KeBpalLimineInit(&BpalHandle);
|
||||
IsInit = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* TODO: PANIC HERE */
|
||||
KeKnot(
|
||||
KNOT_BAD_BOOT_PROTO,
|
||||
"got bad boot protocol '%s'\n",
|
||||
BootProto
|
||||
);
|
||||
}
|
||||
|
||||
+6
-1
@@ -7,6 +7,7 @@
|
||||
*/
|
||||
|
||||
#include <drivers/bootvid/fbio.h>
|
||||
#include <ke/bpal.h>
|
||||
#include <ex/trace.h>
|
||||
#include <ke/knot.h>
|
||||
|
||||
@@ -18,7 +19,8 @@
|
||||
/* Reason lookup table */
|
||||
static const CHAR *ReasonTable[] = {
|
||||
[KNOT_MISC] = "unspecified reason",
|
||||
[KNOT_UNBOUND_RSRC] = "unbounded resource"
|
||||
[KNOT_UNBOUND_RSRC] = "unbounded resource",
|
||||
[KNOT_BAD_BOOT_PROTO] = "bad boot protocol"
|
||||
};
|
||||
|
||||
/* Globals */
|
||||
@@ -40,7 +42,10 @@ 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);
|
||||
|
||||
Reference in New Issue
Block a user