summaryrefslogtreecommitdiffhomepage
path: root/Kernel/Source
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-05-10 07:06:43 +0200
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-05-10 07:06:43 +0200
commit84b0e780dfd9272b177c32cc3bb99f37bb88304d (patch)
tree44d596f6511eae83b8762aa42550b100d5646de6 /Kernel/Source
parent915c14eb3b717bbd168d069e296a4246c6aef117 (diff)
MHR-23: Getting SMP to work...
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'Kernel/Source')
-rw-r--r--Kernel/Source/AppMain.cxx39
-rw-r--r--Kernel/Source/FileManager.cxx22
-rw-r--r--Kernel/Source/KernelCheck.cxx2
-rw-r--r--Kernel/Source/ProcessScheduler.cxx2
-rw-r--r--Kernel/Source/Variant.cxx5
5 files changed, 39 insertions, 31 deletions
diff --git a/Kernel/Source/AppMain.cxx b/Kernel/Source/AppMain.cxx
index 4f5de11f..028e70e5 100644
--- a/Kernel/Source/AppMain.cxx
+++ b/Kernel/Source/AppMain.cxx
@@ -179,25 +179,50 @@ namespace Detail
}
};
- STATIC NewOS::Void AppWatchdogThread(NewOS::Void)
+ /// @brief System loader entrypoint.
+ /// @param void no parameters.
+ /// @return void no return value.
+ STATIC NewOS::Void AppSystemLoader(NewOS::Void)
{
- NewOS::kcout << "SystemSanityThread: Exiting process...";
+ NewOS::PEFLoader coreGraphicsShLib("/System/CoreGraphics");
+
+ if (!coreGraphicsShLib.IsLoaded())
+ {
+ NewOS::ke_stop(RUNTIME_CHECK_FAILED);
+ }
+
+ NewOS::Utils::execute_from_image(coreGraphicsShLib,
+ NewOS::ProcessHeader::kLibKind);
+
+ NewOS::PEFLoader logonService("/System/Login");
+
+ if (!logonService.IsLoaded())
+ {
+ NewOS::ke_stop(RUNTIME_CHECK_FAILED);
+ }
+
+ NewOS::Utils::execute_from_image(logonService,
+ NewOS::ProcessHeader::kAppKind);
+
+ NewOS::kcout << "SystemLoader: Exiting process, we're done initializing stuff...";
+
NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().Exit(0);
}
} // namespace Detail
-/// @file Main microkernel entrypoint.
-
+/// @brief Application entrypoint.
+/// @param Void
+/// @return Void
EXTERN_C NewOS::Void AppMain(NewOS::Void)
{
/// Now run kernel loop, until no process are running.
Detail::FilesystemWizard wizard; // automatic.
- auto cWatchdogThreadName = "SystemSanityThread";
- NewOS::execute_from_image((NewOS::MainKind)Detail::AppWatchdogThread, cWatchdogThreadName);
+ auto cLoaderName = "SystemLoader";
+ NewOS::execute_from_image(Detail::AppSystemLoader, cLoaderName);
while (NewOS::ProcessScheduler::Shared().Leak().Run() > 0)
{
- ;
+ NewOS::kcout << "New OS: sleeping...\r";
}
}
diff --git a/Kernel/Source/FileManager.cxx b/Kernel/Source/FileManager.cxx
index 72ea15a1..ed90dab8 100644
--- a/Kernel/Source/FileManager.cxx
+++ b/Kernel/Source/FileManager.cxx
@@ -90,11 +90,11 @@ namespace NewOS
NEWOS_UNUSED(flags);
- const char* cReadAllFork = fDataFork;
-
+ auto dataForkName = "FileData";
+
if ((reinterpret_cast<NewCatalog*>(node))->Kind == kNewFSCatalogKindFile)
fImpl->WriteCatalog(reinterpret_cast<NewCatalog*>(node), data, size,
- cReadAllFork);
+ dataForkName);
}
/// @brief Read from filesystem fork.
@@ -112,11 +112,11 @@ namespace NewOS
NEWOS_UNUSED(flags);
- const char* cReadAllFork = fDataFork;
+ auto dataForkName = "FileData";
if ((reinterpret_cast<NewCatalog*>(node))->Kind == kNewFSCatalogKindFile)
return fImpl->ReadCatalog(reinterpret_cast<NewCatalog*>(node), sz,
- cReadAllFork);
+ dataForkName);
return nullptr;
}
@@ -167,17 +167,5 @@ namespace NewOS
{
return fImpl;
}
-
- void NewFilesystemManager::SetResourceFork(const char* forkName)
- {
- if (!forkName) return;
- rt_copy_memory((VoidPtr)forkName, (VoidPtr)fRsrcFork, rt_string_len(forkName));
- }
-
- void NewFilesystemManager::SetDataFork(const char* forkName)
- {
- if (!forkName) return;
- rt_copy_memory((VoidPtr)forkName, (VoidPtr)fDataFork, rt_string_len(forkName));
- }
#endif // __FSKIT_NEWFS__
} // namespace NewOS
diff --git a/Kernel/Source/KernelCheck.cxx b/Kernel/Source/KernelCheck.cxx
index e7c43650..5df52248 100644
--- a/Kernel/Source/KernelCheck.cxx
+++ b/Kernel/Source/KernelCheck.cxx
@@ -26,7 +26,7 @@ namespace NewOS
void ke_stop(const NewOS::Int& id)
{
kcout << "*** STOP *** \r";
- kcout << "*** NewKernel.exe has trigerred a runtime stop. *** \r";
+ kcout << "*** Kernel has trigerred a runtime stop. *** \r";
switch (id)
{
diff --git a/Kernel/Source/ProcessScheduler.cxx b/Kernel/Source/ProcessScheduler.cxx
index 859ce657..555dfe07 100644
--- a/Kernel/Source/ProcessScheduler.cxx
+++ b/Kernel/Source/ProcessScheduler.cxx
@@ -218,7 +218,7 @@ namespace NewOS
kcout << "ProcessScheduler::Add(Ref<ProcessHeader>& process)\r";
/// Create heap according to type of process.
- if (process.Leak().Kind == ProcessHeader::kUserKind)
+ if (process.Leak().Kind == ProcessHeader::kAppKind)
process.Leak().HeapPtr = rt_new_heap(kUserHeapUser | kUserHeapRw);
else if (process.Leak().Kind == ProcessHeader::kLibKind)
process.Leak().HeapPtr = rt_new_heap(kUserHeapUser | kUserHeapRw | kUserHeapShared);
diff --git a/Kernel/Source/Variant.cxx b/Kernel/Source/Variant.cxx
index afe66624..1a09718b 100644
--- a/Kernel/Source/Variant.cxx
+++ b/Kernel/Source/Variant.cxx
@@ -10,11 +10,6 @@ namespace NewOS
{
const Char* Variant::ToString()
{
- if (fPtr == nullptr)
- {
- return ("Memory:{Nullptr}");
- }
-
switch (fKind)
{
case VariantKind::kString: