summaryrefslogtreecommitdiffhomepage
path: root/dev/ZKA/Sources
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-08-26 04:07:14 +0200
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-08-26 04:16:24 +0200
commitff94ce367f7f23e3a78f157f9420c480a4d7f9aa (patch)
treefc87ecd1ccf3de317db4214fe6460e324a5e76e4 /dev/ZKA/Sources
parentb98a81f4f26b4da98f2ac760763af656f95f392b (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.cxx23
-rw-r--r--dev/ZKA/Sources/DLLMain.cxx30
-rw-r--r--dev/ZKA/Sources/PEFDLLInterface.cxx (renamed from dev/ZKA/Sources/PEFSharedObject.cxx)22
-rw-r--r--dev/ZKA/Sources/ProcessScheduler.cxx2
-rw-r--r--dev/ZKA/Sources/ThreadLocalStorage.cxx2
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.
*
* ========================================================