From 84aea90cff9952dbafcf147b7741c1985622a8d2 Mon Sep 17 00:00:00 2001 From: Amlal EL Mahrouss Date: Sun, 16 Jun 2024 00:25:47 +0200 Subject: MHR-31: Add cHartIpi enum, improve ReadMe and fix FilesystemWizard. Signed-off-by: Amlal EL Mahrouss --- Kernel/Builtins/ReadMe.txt | 8 ++++---- Kernel/HALKit/ARM64/Hart.hxx | 10 +++++++++- Kernel/Sources/KeMain.cxx | 42 +++++++++++++++++++++--------------------- 3 files changed, 34 insertions(+), 26 deletions(-) (limited to 'Kernel') diff --git a/Kernel/Builtins/ReadMe.txt b/Kernel/Builtins/ReadMe.txt index b0a5a327..df63e0be 100644 --- a/Kernel/Builtins/ReadMe.txt +++ b/Kernel/Builtins/ReadMe.txt @@ -6,14 +6,14 @@ NewOS Builtins What are these? =============== -These are NewOS builtins device drivers. +These are like modules for the kernel. =================== Maintainers/Authors =================== -ACPIFactoryInterface: Amlal EL Mahrouss. +ACPI: Amlal EL Mahrouss. AHCI: Amlal EL Mahrouss. GX: Amlal EL Mahrouss. -PS2: Amlal EL Mahrouss -ATA: Amlal EL Mahrouss \ No newline at end of file +PS2: Amlal EL Mahrouss. +ATA: Amlal EL Mahrouss. \ No newline at end of file diff --git a/Kernel/HALKit/ARM64/Hart.hxx b/Kernel/HALKit/ARM64/Hart.hxx index bc35c3f5..1b16a072 100644 --- a/Kernel/HALKit/ARM64/Hart.hxx +++ b/Kernel/HALKit/ARM64/Hart.hxx @@ -17,4 +17,12 @@ typedef NewOS::Int32 Arm64HartType; /// @param hart the hart /// @param epc the pc. /// @return -EXTERN_C NewOS::Void hal_switch_to_hart(Arm64HartType hart, NewOS::VoidPtr epc); \ No newline at end of file +EXTERN_C NewOS::Void hal_switch_to_hart(Arm64HartType hart, NewOS::VoidPtr epc); + +/// @brief Hart IPI enum +enum { + cHartIpiTurnOn, + cHartIpiTurnOff, + cHartIpiStop, + cHartIpiResume, +}; diff --git a/Kernel/Sources/KeMain.cxx b/Kernel/Sources/KeMain.cxx index e1b347b8..83702d77 100644 --- a/Kernel/Sources/KeMain.cxx +++ b/Kernel/Sources/KeMain.cxx @@ -33,6 +33,7 @@ namespace NewOS::Detail NewOS::NewFilesystemManager* fNewFS{nullptr}; public: + /// @brief wizard constructor. explicit FilesystemWizard() { if (NewOS::FilesystemManagerInterface::GetMounted()) @@ -54,7 +55,7 @@ namespace NewOS::Detail constexpr auto cFolderInfo = "META-INF"; const auto cDirCount = 8; const char* cDirStr[cDirCount] = { - "\\Boot\\", "\\System\\", "\\Support\\", "\\Applications\\", + "\\Boot\\", "\\System\\", "\\Support\\", "\\Packages\\", "\\Users\\", "\\Library\\", "\\Mount\\", "\\DCIM\\"}; for (NewOS::SizeT dirIndx = 0UL; dirIndx < cDirCount; ++dirIndx) @@ -92,9 +93,9 @@ namespace NewOS::Detail metadataFolder += "

Kind: folder

\r

Created by: system

\r

Edited by: " - "system

\r

Volume Type: New OS Standard

\r"; + "system

\r

Volume Type: s10 Filesystem

\r"; - metadataFolder += "

File name: "; + metadataFolder += "

Path: "; metadataFolder += cDirStr[dirIndx]; metadataFolder += "

\r"; @@ -113,7 +114,7 @@ namespace NewOS::Detail } NewCatalog* catalogDisk = - this->fNewFS->GetParser()->GetCatalog("\\Mount\\This Disk"); + this->fNewFS->GetParser()->GetCatalog("\\Mount\\C:\\"); const NewOS::Char* cSrcName = "DISK-INF"; @@ -128,16 +129,16 @@ namespace NewOS::Detail else { catalogDisk = - (NewCatalog*)this->Leak()->CreateAlias("\\Mount\\This Disk"); + (NewCatalog*)this->Leak()->CreateAlias("\\Mount\\C:\\"); NewOS::StringView diskFolder(kNewFSSectorSz); diskFolder += - "

Kind: alias to disk

\r

Created by: newoskrnl

\r

Edited " + "

Kind: alias to disk

\r

Created by: system

\r

Edited " "by: " - "N/A

\r

Volume Type: New OS Standard

\r"; + "system

\r

Volume Type: s10 Filesystem

\r"; - diskFolder += "

Original Path: "; + diskFolder += "

Root: "; diskFolder += NewOS::NewFilesystemHelper::Root(); diskFolder += "

\r"; @@ -165,43 +166,41 @@ namespace NewOS::Detail } } - ~FilesystemWizard() - { - delete fNewFS; - } + ~FilesystemWizard() = default; NEWOS_COPY_DEFAULT(FilesystemWizard); - /// Grab the disk's NewFS reference. + /// @brief Grab the disk's NewFS reference. + /// @return NewFilesystemManager the filesystem interface NewOS::NewFilesystemManager* Leak() { return fNewFS; } }; - /// @brief System loader entrypoint. + /// @brief Loads necessary servers for the OS to work. /// @param void no parameters. /// @return void no return value. STATIC NewOS::Void ke_launch_srv(NewOS::Void) { - NewOS::PEFLoader lockScreen("\\System\\securesrv.exe"); + NewOS::PEFLoader secureSrv("\\System\\securesrv.exe"); - if (!lockScreen.IsLoaded()) + if (!secureSrv.IsLoaded()) { NewOS::ke_stop(RUNTIME_CHECK_FAILED); } - NewOS::Utils::execute_from_image(lockScreen, + NewOS::Utils::execute_from_image(secureSrv, NewOS::ProcessHeader::kAppKind); - NewOS::PEFLoader stageBoard("\\System\\uisrv.exe"); + NewOS::PEFLoader uiSrv("\\System\\uisrv.exe"); - if (!stageBoard.IsLoaded()) + if (!uiSrv.IsLoaded()) { NewOS::ke_stop(RUNTIME_CHECK_FAILED); } - NewOS::Utils::execute_from_image(stageBoard, + NewOS::Utils::execute_from_image(uiSrv, NewOS::ProcessHeader::kAppKind); } } // namespace NewOS::Detail @@ -219,7 +218,8 @@ EXTERN_C NewOS::Void KeMain(NewOS::Void) // fetch system cores. NewOS::HAL::hal_system_get_cores(kHandoverHeader->f_HardwareTables.f_RsdPtr); - while (true) + // spin forever. + while (Yes) { // start scheduling. NewOS::ProcessHelper::StartScheduling(); -- cgit v1.2.3