diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-08-26 04:07:14 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-08-26 04:16:24 +0200 |
| commit | ff94ce367f7f23e3a78f157f9420c480a4d7f9aa (patch) | |
| tree | fc87ecd1ccf3de317db4214fe6460e324a5e76e4 /dev/ZKA/Sources | |
| parent | b98a81f4f26b4da98f2ac760763af656f95f392b (diff) | |
[IMP] DLLInterface class and also reworked SCI's API.
[IMP] Handover now gives the kernel image, for the OS.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/ZKA/Sources')
| -rw-r--r-- | dev/ZKA/Sources/DLLInterface.cxx | 23 | ||||
| -rw-r--r-- | dev/ZKA/Sources/DLLMain.cxx | 30 | ||||
| -rw-r--r-- | dev/ZKA/Sources/PEFDLLInterface.cxx (renamed from dev/ZKA/Sources/PEFSharedObject.cxx) | 22 | ||||
| -rw-r--r-- | dev/ZKA/Sources/ProcessScheduler.cxx | 2 | ||||
| -rw-r--r-- | dev/ZKA/Sources/ThreadLocalStorage.cxx | 2 |
5 files changed, 41 insertions, 38 deletions
diff --git a/dev/ZKA/Sources/DLLInterface.cxx b/dev/ZKA/Sources/DLLInterface.cxx new file mode 100644 index 00000000..ed1793eb --- /dev/null +++ b/dev/ZKA/Sources/DLLInterface.cxx @@ -0,0 +1,23 @@ +/* + * ======================================================== + * + * newoskrnl + * Copyright ZKA Technologies., all rights reserved. + * + * ======================================================== + */ + +#include <KernelKit/DLLInterface.hxx> +#include <KernelKit/DebugOutput.hxx> + +using namespace Kernel; + +/***********************************************************************************/ +/// @brief Unimplemented function (crashes by default) +/// @param +/***********************************************************************************/ + +EXTERN_C void __zka_pure_call(void) +{ + kcout << "newoskrnl: unimplemented symbol!\r"; +} diff --git a/dev/ZKA/Sources/DLLMain.cxx b/dev/ZKA/Sources/DLLMain.cxx index c8db0c29..997fed52 100644 --- a/dev/ZKA/Sources/DLLMain.cxx +++ b/dev/ZKA/Sources/DLLMain.cxx @@ -80,7 +80,7 @@ namespace Kernel::Detail if (catalogDir) { - Kernel::kcout << "newoskrnl: already exists.\r"; + Kernel::kcout << "newoskrnl: Already exists.\r"; delete catalogDir; continue; @@ -132,9 +132,9 @@ namespace Kernel::Detail } NFS_CATALOG_STRUCT* catalogDisk = - this->fNewFS->GetParser()->GetCatalog("\\Mount\\NUL:"); + this->fNewFS->GetParser()->GetCatalog("\\System\\newoskrnl.dll"); - const Kernel::Char* cSrcName = "DISK-INF"; + const Kernel::Char* cSrcName = "KERNEL_EXEC"; if (catalogDisk) { @@ -143,17 +143,7 @@ namespace Kernel::Detail else { catalogDisk = - (NFS_CATALOG_STRUCT*)this->Leak()->CreateAlias("\\Mount\\NUL:"); - - Kernel::StringView diskFolder(kNewFSSectorSz); - - diskFolder += - "<!properties/><p>Kind: alias to NULL.</p>\r<p>Created by: system</p>\r<p>Edited " - "by: " - "system</p>\r<p>Volume Type: NULL.</p>\r"; - - diskFolder += "<p>Root: NUL"; - diskFolder += "</p>\r"; + (NFS_CATALOG_STRUCT*)this->Leak()->CreateAlias("\\System\\newoskrnl.dll"); NFS_FORK_STRUCT theDiskFork{0}; @@ -164,16 +154,16 @@ namespace Kernel::Detail theDiskFork.CatalogName, Kernel::rt_string_len(catalogDisk->Name)); - theDiskFork.DataSize = kNewFSForkSize; - theDiskFork.ResourceId = 0; - theDiskFork.ResourceKind = Kernel::kNewFSRsrcForkKind; + theDiskFork.DataSize = kHandoverHeader->f_HardwareTables.f_ImageSz; + theDiskFork.ResourceId = Kernel::kPefKindExec | 0xFFFF000; + theDiskFork.ResourceKind = Kernel::kNewFSDataForkKind; theDiskFork.Kind = Kernel::kNewFSDataForkKind; fNewFS->GetParser()->CreateFork(catalogDisk, theDiskFork); fNewFS->GetParser()->WriteCatalog(catalogDisk, - true, - (Kernel::VoidPtr)diskFolder.CData(), - kNewFSSectorSz, cSrcName); + false, + kHandoverHeader->f_HardwareTables.f_ImagePtr, + kHandoverHeader->f_HardwareTables.f_ImageSz, cSrcName); delete catalogDisk; } diff --git a/dev/ZKA/Sources/PEFSharedObject.cxx b/dev/ZKA/Sources/PEFDLLInterface.cxx index 22890e22..0ca6b85e 100644 --- a/dev/ZKA/Sources/PEFSharedObject.cxx +++ b/dev/ZKA/Sources/PEFDLLInterface.cxx @@ -1,7 +1,7 @@ /* * ======================================================== * - * Kernel + * newoskrnl * Copyright ZKA Technologies., all rights reserved. * * ======================================================== @@ -9,7 +9,7 @@ #include <KernelKit/DebugOutput.hxx> #include <KernelKit/PEF.hxx> -#include <KernelKit/PEFSharedObject.hxx> +#include <KernelKit/PEFDLLInterface.hxx> #include <KernelKit/ProcessScheduler.hxx> #include <KernelKit/ThreadLocalStorage.hxx> #include <NewKit/Defines.hxx> @@ -37,9 +37,9 @@ using namespace Kernel; /** @brief Library initializer. */ /***********************************************************************************/ -EXTERN_C SharedObjectPtr rtl_init_shared_object(PROCESS_HEADER_BLOCK* header) +EXTERN_C DLLInterfacePtr rtl_init_shared_object(PROCESS_HEADER_BLOCK* header) { - SharedObjectPtr sharedObj = tls_new_class<PEFSharedObjectInterface>(); + DLLInterfacePtr sharedObj = tls_new_class<PEFDLLInterface>(); if (!sharedObj) { @@ -48,7 +48,7 @@ EXTERN_C SharedObjectPtr rtl_init_shared_object(PROCESS_HEADER_BLOCK* header) return nullptr; } - sharedObj->Mount(tls_new_class<PEFSharedObjectInterface::PEF_SHARED_OBJECT_TRAITS>()); + sharedObj->Mount(tls_new_class<PEFDLLInterface::DLL_TRAITS>()); if (!sharedObj->Get()) { @@ -80,7 +80,7 @@ EXTERN_C SharedObjectPtr rtl_init_shared_object(PROCESS_HEADER_BLOCK* header) /** @param successful Reports if successful or not. */ /***********************************************************************************/ -EXTERN_C Void rtl_fini_shared_object(PROCESS_HEADER_BLOCK* header, SharedObjectPtr lib, Bool* successful) +EXTERN_C Void rtl_fini_shared_object(PROCESS_HEADER_BLOCK* header, DLLInterfacePtr lib, Bool* successful) { MUST_PASS(successful); @@ -98,13 +98,3 @@ EXTERN_C Void rtl_fini_shared_object(PROCESS_HEADER_BLOCK* header, SharedObjectP *successful = true; } - -/***********************************************************************************/ -/// @brief Unimplemented function (crashes by default) -/// @param -/***********************************************************************************/ - -EXTERN_C void __mh_purecall(void) -{ - kcout << "newoskrnl: unimplemented symbol!\r"; -} diff --git a/dev/ZKA/Sources/ProcessScheduler.cxx b/dev/ZKA/Sources/ProcessScheduler.cxx index d33c7e85..965c5eb1 100644 --- a/dev/ZKA/Sources/ProcessScheduler.cxx +++ b/dev/ZKA/Sources/ProcessScheduler.cxx @@ -10,7 +10,7 @@ /***********************************************************************************/ #include <KernelKit/ProcessScheduler.hxx> -#include <KernelKit/PEFSharedObject.hxx> +#include <KernelKit/PEFDLLInterface.hxx> #include <KernelKit/MP.hxx> #include <KernelKit/Heap.hxx> #include <NewKit/String.hxx> diff --git a/dev/ZKA/Sources/ThreadLocalStorage.cxx b/dev/ZKA/Sources/ThreadLocalStorage.cxx index a29f153e..ed12c890 100644 --- a/dev/ZKA/Sources/ThreadLocalStorage.cxx +++ b/dev/ZKA/Sources/ThreadLocalStorage.cxx @@ -1,7 +1,7 @@ /* * ======================================================== * - * Kernel + * newoskrnl * Copyright ZKA Technologies., all rights reserved. * * ======================================================== |
