summaryrefslogtreecommitdiffhomepage
path: root/dev/Kernel
diff options
context:
space:
mode:
Diffstat (limited to 'dev/Kernel')
-rw-r--r--dev/Kernel/FirmwareKit/EFI/EFI.h59
-rw-r--r--dev/Kernel/FirmwareKit/Handover.h2
-rw-r--r--dev/Kernel/HALKit/AMD64/HalKernelMain.cc3
-rw-r--r--dev/Kernel/HALKit/AMD64/HalTimerAMD64.cc6
-rw-r--r--dev/Kernel/HALKit/ARM64/HalKernelMain.cc3
-rw-r--r--dev/Kernel/KernelKit/Timer.h6
-rw-r--r--dev/Kernel/src/KernelMain.cc1
-rw-r--r--dev/Kernel/src/SoftwareTimer.cc39
-rw-r--r--dev/Kernel/src/Timer.cc32
9 files changed, 97 insertions, 54 deletions
diff --git a/dev/Kernel/FirmwareKit/EFI/EFI.h b/dev/Kernel/FirmwareKit/EFI/EFI.h
index befa4e87..2e168bcd 100644
--- a/dev/Kernel/FirmwareKit/EFI/EFI.h
+++ b/dev/Kernel/FirmwareKit/EFI/EFI.h
@@ -42,6 +42,7 @@ struct EfiHandle;
struct EfiGraphicsOutputProtocol;
struct EfiBitmask;
struct EfiFileProtocol;
+struct EfiSimpleTextInputProtocol;
typedef UInt64 EfiStatusType;
@@ -473,6 +474,14 @@ typedef struct EfiGUID EFI_FINAL
* Protocol stuff...
*/
+#define EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID \
+ { \
+ 0x387477c1, 0x69c7, 0x11d2, \
+ { \
+ 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b \
+ } \
+ }
+
/** some helpers */
#define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL 0x00000001
#define EFI_OPEN_PROTOCOL_GET_PROTOCOL 0x00000002
@@ -563,6 +572,36 @@ typedef struct EfiSimpleTextOutputProtocol
VoidPtr Mode;
} EfiSimpleTextOutputProtocol;
+typedef struct
+{
+ UInt16 ScanCode;
+ char16_t UnicodeChar;
+} EfiInputKey;
+
+typedef EfiStatusType(EFI_API* EfiInputReadKey)(
+ IN EfiSimpleTextInputProtocol* This,
+ OUT EfiInputKey* Key);
+
+typedef EfiStatusType(EFI_API* EfiInputReset)(
+ IN EfiSimpleTextInputProtocol* This,
+ IN Boolean ExtendedChk );
+
+typedef
+EfiStatusType
+(EFI_API *EfiWaitForEvent) (
+ IN UInt32 NumberOfEvents,
+ IN VoidPtr Event,
+ OUT UInt32 *Index
+ );
+
+typedef struct EfiSimpleTextInputProtocol
+{
+ EfiInputReset Reset;
+ EfiInputReadKey ReadKeyStroke;
+ EfiWaitForEvent WaitForKey;
+} EfiSimpleTextInputProtocol;
+
+/// @biref Open Volume procedure ptr.
typedef UInt64(EFI_API* EfiOpenVolume)(struct EfiSimpleFilesystemProtocol*,
struct EfiFileProtocol**);
@@ -581,7 +620,7 @@ typedef struct EfiSystemTable
WideChar* FirmwareVendor;
UInt32 FirmwareRevision;
EfiHandlePtr ConsoleInHandle;
- VoidPtr ConIn;
+ EfiSimpleTextInputProtocol* ConIn;
EfiHandlePtr ConsoleOutHandle;
EfiSimpleTextOutputProtocol* ConOut;
EfiHandlePtr StandardErrorHandle;
@@ -826,11 +865,11 @@ typedef struct _EfiProcessorInformation
typedef EfiStatusType EFI_API (*EfiMpServicesGetNumberOfProcessors)(
IN struct _EfiMpServicesProtocol* Self,
- OUT UInt32* NumberOfProcessors,
- OUT UInt32* NumberOfEnabledProcessors);
+ OUT UInt32* NumberOfProcessors,
+ OUT UInt32* NumberOfEnabledProcessors);
typedef EfiStatusType EFI_API (*EfiMpServicesGetProcessorInfo)(
- IN struct _EfiMpServicesProtocol* Self,
+ IN struct _EfiMpServicesProtocol* Self,
IN UInt32* ProcessorNumber,
OUT struct _EfiProcessorInformation* NumberOfEnabledProcessors);
@@ -843,8 +882,8 @@ typedef EfiStatusType EFI_API (*EfiMpServicesStartupAllAPS)(
IN Boolean SingleThread,
IN VoidPtr WaitEvent OPTIONAL, // EFI_EVENT first, but unused here.
IN UInt32 TimeoutInMicroSeconds,
- IN Void* ProcedureArgument OPTIONAL,
- OUT UInt32** FailedCpuList OPTIONAL);
+ IN Void* ProcedureArgument OPTIONAL,
+ OUT UInt32** FailedCpuList OPTIONAL);
typedef EfiStatusType EFI_API (*EfiMpServicesSwitchBSP)(
IN struct _EfiMpServicesProtocol* Self,
@@ -857,18 +896,18 @@ typedef EfiStatusType EFI_API (*EfiMpServicesStartupThisAP)(
IN UInt32 ProcessorNumber,
IN VoidPtr WaitEvent OPTIONAL,
IN UInt32 TimeoutInMicroseconds,
- IN Void* ProcedureArgument OPTIONAL,
- OUT Boolean* Finished OPTIONAL);
+ IN Void* ProcedureArgument OPTIONAL,
+ OUT Boolean* Finished OPTIONAL);
typedef EfiStatusType EFI_API (*EfiMpServicesDisableThisAP)(
IN struct _EfiMpServicesProtocol* Self,
IN UInt32 ProcessorNumber,
IN Boolean EnableAP,
- IN UInt32* HealthFlag OPTIONAL);
+ IN UInt32* HealthFlag OPTIONAL);
typedef EfiStatusType EFI_API (*EfiMpServicesWhoAmI)(
IN struct _EfiMpServicesProtocol* Self,
- OUT UInt32* ProcessorNumber);
+ OUT UInt32* ProcessorNumber);
typedef struct _EfiMpServicesProtocol
{
diff --git a/dev/Kernel/FirmwareKit/Handover.h b/dev/Kernel/FirmwareKit/Handover.h
index 86650d34..9a7e7e80 100644
--- a/dev/Kernel/FirmwareKit/Handover.h
+++ b/dev/Kernel/FirmwareKit/Handover.h
@@ -103,7 +103,7 @@ namespace Kernel::HEL
};
/// @brief Alias of bootloader main type.
- typedef void (*HandoverProc)(BootInfoHeader* boot_info);
+ typedef Int32 (*HandoverProc)(BootInfoHeader* boot_info);
} // namespace Kernel::HEL
/// @brief Bootloader information header global variable.
diff --git a/dev/Kernel/HALKit/AMD64/HalKernelMain.cc b/dev/Kernel/HALKit/AMD64/HalKernelMain.cc
index 75c41433..690ece70 100644
--- a/dev/Kernel/HALKit/AMD64/HalKernelMain.cc
+++ b/dev/Kernel/HALKit/AMD64/HalKernelMain.cc
@@ -11,7 +11,6 @@
#include <Modules/ACPI/ACPIFactoryInterface.h>
#include <NetworkKit/IPC.h>
#include <CFKit/Property.h>
-#include <Modules/GfxMgr/AppearanceMgr.h>
#include <Modules/GfxMgr/TextMgr.h>
EXTERN_C Kernel::VoidPtr kInterruptVectorTable[];
@@ -84,8 +83,6 @@ EXTERN_C void hal_init_platform(
EXTERN_C Kernel::Void hal_real_init(Kernel::Void) noexcept
{
- UI::ui_draw_background();
-
auto str_proc = Kernel::rt_alloc_string("System");
Kernel::rtl_create_process(rtl_kernel_main, str_proc);
diff --git a/dev/Kernel/HALKit/AMD64/HalTimerAMD64.cc b/dev/Kernel/HALKit/AMD64/HalTimerAMD64.cc
index 97da8c48..9e42fe3f 100644
--- a/dev/Kernel/HALKit/AMD64/HalTimerAMD64.cc
+++ b/dev/Kernel/HALKit/AMD64/HalTimerAMD64.cc
@@ -62,10 +62,10 @@ HardwareTimer::~HardwareTimer()
fWaitFor = 0;
}
-Int32 HardwareTimer::Wait() noexcept
+BOOL HardwareTimer::Wait() noexcept
{
if (fWaitFor < 1)
- return 1;
+ return NO;
// if not enabled yet.
if (!(*(fDigitalTimer + cHPETConfigRegValue) & (1 << 0)))
@@ -82,5 +82,5 @@ Int32 HardwareTimer::Wait() noexcept
while (*(fDigitalTimer + cHPETCounterRegValue) < (ticks))
;
- return 0;
+ return YES;
}
diff --git a/dev/Kernel/HALKit/ARM64/HalKernelMain.cc b/dev/Kernel/HALKit/ARM64/HalKernelMain.cc
index ff4676e4..4a81fa64 100644
--- a/dev/Kernel/HALKit/ARM64/HalKernelMain.cc
+++ b/dev/Kernel/HALKit/ARM64/HalKernelMain.cc
@@ -15,7 +15,6 @@
#include <KernelKit/CodeMgr.h>
#include <Modules/ACPI/ACPIFactoryInterface.h>
#include <NetworkKit/IPC.h>
-#include <Modules/GfxMgr/AppearanceMgr.h>
#include <CFKit/Property.h>
Kernel::Void hal_real_init(Kernel::Void) noexcept;
@@ -47,8 +46,6 @@ EXTERN_C void hal_init_platform(
/// @note do initialize the interrupts after it.
- UI::ui_draw_background();
-
auto str_proc = Kernel::rt_alloc_string("System");
Kernel::rtl_create_process(rtl_kernel_main, str_proc);
diff --git a/dev/Kernel/KernelKit/Timer.h b/dev/Kernel/KernelKit/Timer.h
index a2dae8cd..db8b49fe 100644
--- a/dev/Kernel/KernelKit/Timer.h
+++ b/dev/Kernel/KernelKit/Timer.h
@@ -26,7 +26,7 @@ namespace Kernel
ZKA_COPY_DEFAULT(TimerInterface);
public:
- virtual Int32 Wait() noexcept;
+ virtual BOOL Wait() noexcept;
};
class SoftwareTimer final : public TimerInterface
@@ -39,7 +39,7 @@ namespace Kernel
ZKA_COPY_DEFAULT(SoftwareTimer);
public:
- Int32 Wait() noexcept override;
+ BOOL Wait() noexcept override;
private:
IntPtr* fDigitalTimer{nullptr};
@@ -56,7 +56,7 @@ namespace Kernel
ZKA_COPY_DEFAULT(HardwareTimer);
public:
- Int32 Wait() noexcept override;
+ BOOL Wait() noexcept override;
private:
IntPtr* fDigitalTimer{nullptr};
diff --git a/dev/Kernel/src/KernelMain.cc b/dev/Kernel/src/KernelMain.cc
index d3498f24..fdbda512 100644
--- a/dev/Kernel/src/KernelMain.cc
+++ b/dev/Kernel/src/KernelMain.cc
@@ -22,7 +22,6 @@
#include <NewKit/Utils.h>
#include <KernelKit/CodeMgr.h>
#include <CFKit/Property.h>
-#include <Modules/GfxMgr/AppearanceMgr.h>
#include <KernelKit/Timer.h>
namespace Kernel::Detail
diff --git a/dev/Kernel/src/SoftwareTimer.cc b/dev/Kernel/src/SoftwareTimer.cc
new file mode 100644
index 00000000..797722d3
--- /dev/null
+++ b/dev/Kernel/src/SoftwareTimer.cc
@@ -0,0 +1,39 @@
+/* -------------------------------------------
+
+ Copyright (C) 2024, Theater Quality Inc, all rights reserved.
+
+------------------------------------------- */
+
+#include <KernelKit/Timer.h>
+
+/// @brief SoftwareTimer class, meant to be generic.
+
+using namespace Kernel;
+
+SoftwareTimer::SoftwareTimer(Int64 seconds)
+ : fWaitFor(seconds)
+{
+ fDigitalTimer = new IntPtr();
+ MUST_PASS(fDigitalTimer);
+}
+
+SoftwareTimer::~SoftwareTimer()
+{
+ delete fDigitalTimer;
+ fDigitalTimer = nullptr;
+
+ fWaitFor = 0;
+}
+
+BOOL SoftwareTimer::Wait() noexcept
+{
+ if (fWaitFor < 1)
+ return NO;
+
+ while (*fDigitalTimer < (*fDigitalTimer + fWaitFor))
+ {
+ ++(*fDigitalTimer);
+ }
+
+ return YES;
+}
diff --git a/dev/Kernel/src/Timer.cc b/dev/Kernel/src/Timer.cc
index 8795dd66..d304f6ee 100644
--- a/dev/Kernel/src/Timer.cc
+++ b/dev/Kernel/src/Timer.cc
@@ -13,35 +13,7 @@
using namespace Kernel;
/// @brief Unimplemented as it is an interface.
-Int32 TimerInterface::Wait() noexcept
+BOOL TimerInterface::Wait() noexcept
{
- return kErrorUnimplemented;
-}
-
-/// @brief SoftwareTimer class, meant to be generic.
-
-SoftwareTimer::SoftwareTimer(Int64 seconds)
- : fWaitFor(seconds)
-{
- fDigitalTimer = new IntPtr();
- MUST_PASS(fDigitalTimer);
-}
-
-SoftwareTimer::~SoftwareTimer()
-{
- delete fDigitalTimer;
- fWaitFor = 0;
-}
-
-Int32 SoftwareTimer::Wait() noexcept
-{
- if (fWaitFor < 1)
- return 1;
-
- while (*fDigitalTimer < (*fDigitalTimer + fWaitFor))
- {
- ++(*fDigitalTimer);
- }
-
- return 0;
+ return NO;
}