summaryrefslogtreecommitdiffhomepage
path: root/dev
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
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')
-rw-r--r--dev/SCI/SCIErr.hxx49
-rw-r--r--dev/SCI/Sources/SCIErr.cxx9
-rw-r--r--dev/SCI/Sources/base.cxx (renamed from dev/SCI/Sources/SCIBase.cxx)2
-rw-r--r--dev/SCI/sci_base.hxx (renamed from dev/SCI/SCIBase.hxx)43
-rw-r--r--dev/SCI/sci_err.hxx47
-rw-r--r--dev/SCI/sci_hint.hxx (renamed from dev/SCI/Hint.h)0
-rw-r--r--dev/ZBA/Sources/HEL/AMD64/BootMain.cxx3
-rw-r--r--dev/ZKA/CompressKit/RLE.hxx (renamed from dev/ZKA/KernelKit/RLE.hxx)7
-rw-r--r--dev/ZKA/FirmwareKit/Handover.hxx15
-rw-r--r--dev/ZKA/HALKit/AXP/Processor.hxx (renamed from dev/ZKA/HALKit/AXP/Processor.hpp)0
-rw-r--r--dev/ZKA/KernelKit/CodeManager.hxx2
-rw-r--r--dev/ZKA/KernelKit/DLLInterface.hxx44
-rw-r--r--dev/ZKA/KernelKit/PEFDLLInterface.hxx (renamed from dev/ZKA/KernelKit/PEFSharedObject.hxx)38
-rw-r--r--dev/ZKA/KernelKit/ProcessScheduler.hxx5
-rw-r--r--dev/ZKA/KernelKit/User.hxx3
-rw-r--r--dev/ZKA/NetworkKit/IPC.hxx2
-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
21 files changed, 197 insertions, 151 deletions
diff --git a/dev/SCI/SCIErr.hxx b/dev/SCI/SCIErr.hxx
deleted file mode 100644
index af5d54fd..00000000
--- a/dev/SCI/SCIErr.hxx
+++ /dev/null
@@ -1,49 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#pragma once
-
-#include <SCI/SCIBase.hxx>
-
-#define ErrLocalIsOk() (kLastError == kErrorSuccess)
-#define ErrLocalFailed() (kLastError != kErrorSuccess)
-#define ErrLocal() (kLastError)
-
-typedef SInt32 NEW_ERROR_TYPE;
-
-inline constexpr NEW_ERROR_TYPE kErrorSuccess = 0;
-inline constexpr NEW_ERROR_TYPE kErrorExecutable = 33;
-inline constexpr NEW_ERROR_TYPE kErrorExecutableLib = 34;
-inline constexpr NEW_ERROR_TYPE kErrorFileNotFound = 35;
-inline constexpr NEW_ERROR_TYPE kErrorDirectoryNotFound = 36;
-inline constexpr NEW_ERROR_TYPE kErrorDiskReadOnly = 37;
-inline constexpr NEW_ERROR_TYPE kErrorDiskIsFull = 38;
-inline constexpr NEW_ERROR_TYPE kErrorProcessFault = 39;
-inline constexpr NEW_ERROR_TYPE kErrorSocketHangUp = 40;
-inline constexpr NEW_ERROR_TYPE kErrorThreadLocalStorage = 41;
-inline constexpr NEW_ERROR_TYPE kErrorMath = 42;
-inline constexpr NEW_ERROR_TYPE kErrorNoNetwork = 43;
-inline constexpr NEW_ERROR_TYPE kErrorHeapOutOfMemory = 44;
-inline constexpr NEW_ERROR_TYPE kErrorNoSuchDisk = 45;
-inline constexpr NEW_ERROR_TYPE kErrorFileExists = 46;
-inline constexpr NEW_ERROR_TYPE kErrorFormatFailed = 47;
-inline constexpr NEW_ERROR_TYPE kErrorNetworkTimeout = 48;
-inline constexpr NEW_ERROR_TYPE kErrorInternal = 49;
-inline constexpr NEW_ERROR_TYPE kErrorForkAlreadyExists = 50;
-inline constexpr NEW_ERROR_TYPE kErrorOutOfTeamSlot = 51;
-inline constexpr NEW_ERROR_TYPE kErrorHeapNotPresent = 52;
-inline constexpr NEW_ERROR_TYPE kErrorNoEntrypoint = 53;
-inline constexpr NEW_ERROR_TYPE kErrorDiskIsCorrupted = 54;
-inline constexpr NEW_ERROR_TYPE kErrorDisk = 55;
-inline constexpr NEW_ERROR_TYPE kErrorInvalidData = 56;
-inline constexpr NEW_ERROR_TYPE kErrorAsync = 57;
-inline constexpr NEW_ERROR_TYPE kErrorNonBlocking = 58;
-inline constexpr NEW_ERROR_TYPE kErrorIPC = 59;
-inline constexpr NEW_ERROR_TYPE kErrorSign = 60;
-inline constexpr NEW_ERROR_TYPE kErrorInvalidCreds = 61;
-inline constexpr NEW_ERROR_TYPE kErrorUnimplemented = 0;
-
-IMPORT_C NEW_ERROR_TYPE kLastError;
diff --git a/dev/SCI/Sources/SCIErr.cxx b/dev/SCI/Sources/SCIErr.cxx
deleted file mode 100644
index 509ccd6d..00000000
--- a/dev/SCI/Sources/SCIErr.cxx
+++ /dev/null
@@ -1,9 +0,0 @@
-/* -------------------------------------------
-
- Copyright ZKA Technologies.
-
-------------------------------------------- */
-
-#include <SCI/SCIErr.hxx>
-
-NEW_ERROR_TYPE kLastError = 0;
diff --git a/dev/SCI/Sources/SCIBase.cxx b/dev/SCI/Sources/base.cxx
index b103886c..6963a624 100644
--- a/dev/SCI/Sources/SCIBase.cxx
+++ b/dev/SCI/Sources/base.cxx
@@ -4,4 +4,4 @@
------------------------------------------- */
-#include <SCI/SCIBase.hxx>
+#include <SCI/sci_base.hxx>
diff --git a/dev/SCI/SCIBase.hxx b/dev/SCI/sci_base.hxx
index 982ca950..1d69a56b 100644
--- a/dev/SCI/SCIBase.hxx
+++ b/dev/SCI/sci_base.hxx
@@ -10,7 +10,7 @@ Purpose: SCI/M core header file (C++)
#ifndef __SCI_BASE_HXX__
#define __SCI_BASE_HXX__
-#include <SCI/Hint.h>
+#include <SCI/sci_hint.hxx>
#define IMPORT_CXX extern "C++"
#define IMPORT_C extern "C"
@@ -34,6 +34,8 @@ typedef void* VoidPtr;
typedef __UINTPTR_TYPE__ UIntPtr;
typedef char Char;
+#include <SCI/sci_err.hxx>
+
#ifdef __SCI_IMPL__
#include <SCI/scm.internal.inl>
#else
@@ -89,12 +91,13 @@ public:
/// @note Handle types.
// ------------------------------------------------------------------------------------------ //
-typedef VoidPtr NEW_OBJECT;
+typedef VoidPtr ZKAObject;
-typedef NEW_OBJECT DLL_OBJECT;
-typedef NEW_OBJECT IO_OBJECT;
-typedef NEW_OBJECT COMP_OBJECT;
-typedef NEW_OBJECT SCM_OBJECT;
+typedef ZKAObject ZKADLLObject;
+typedef ZKAObject ZKAIOObject;
+typedef ZKAObject ZKASCMObject;
+typedef ZKAObject ZKAThreadObject;
+typedef ZKAObject ZKASocketObject;
// ------------------------------------------------------------------------------------------ //
@@ -106,18 +109,18 @@ typedef NEW_OBJECT SCM_OBJECT;
/// @param symbol the symbol to look for
/// @param dll_handle the DLL handle.
/// @return the proc pointer.
-IMPORT_C NEW_OBJECT LdrGetDLLProc(_Input const Char* symbol, _Input NEW_OBJECT dll_handle);
+IMPORT_C ZKAObject LdrGetDLLProc(_Input const Char* symbol, _Input ZKAObject dll_handle);
/// @brief Open DLL handle.
/// @param path
/// @param drv
/// @return
-IMPORT_C NEW_OBJECT LdrOpenDLL(_Input const Char* path, _Input const Char* drive_letter);
+IMPORT_C ZKAObject LdrOpenDLL(_Input const Char* path, _Input const Char* drive_letter);
/// @brief Close DLL handle
/// @param dll_handle
/// @return
-IMPORT_C UInt0 LdrCloseDLL(_Input NEW_OBJECT dll_handle);
+IMPORT_C UInt0 LdrCloseDLL(_Input ZKAObject dll_handle);
// ------------------------------------------------------------------------------------------ //
// File API.
@@ -127,18 +130,28 @@ IMPORT_C UInt0 LdrCloseDLL(_Input NEW_OBJECT dll_handle);
/// @param fs_path the filesystem path.
/// @param drive_letter drive name, use NULL to use default one.
/// @return the file descriptor of the file.
-IMPORT_C NEW_OBJECT RtlOpenFile(const Char* fs_path, const Char* drive_letter);
+IMPORT_C ZKAObject IoOpenFile(const Char* fs_path, const Char* drive_letter);
/// @brief Closes a file and flushes its content.
/// @param file_desc the file descriptor.
-/// @return
-IMPORT_C UInt0 RtlCloseFile(_Input NEW_OBJECT file_desc);
+/// @return void.
+IMPORT_C UInt0 IoCloseFile(_Input ZKAObject file_desc);
+
+IMPORT_C UInt32 IoWriteFile(_Input ZKAObject file_desc, _Output VoidPtr out_data, SizeT sz_data);
+
+IMPORT_C UInt32 IoReadFile(_Input ZKAObject file_desc, _Output VoidPtr* out_data, SizeT sz_data);
+
+IMPORT_C UInt64 IoRewindFile(_Input ZKAObject file_desc);
+
+IMPORT_C UInt64 IoTellFile(_Input ZKAObject file_desc);
+
+IMPORT_C UInt64 IoSeekFile(_Input ZKAObject file_desc, UInt64 file_offset);
// ------------------------------------------------------------------------
// TLS API.
// ------------------------------------------------------------------------
-/// @brief Installs the TIB and GIB inside the current process.
+/// @brief Installs the Thread Information Block and Global Information Block inside the current process.
/// @param void.
/// @return > 0 error ocurred or already present, = 0 success.
IMPORT_C UInt32 TlsInstallIB(UInt0);
@@ -165,11 +178,11 @@ SInt32 ScmReleaseClass(_Input TCLS* cls);
/// @brief Creates an SCM instance in the process.
/// @param handle_instance the SCM handle.
/// @param flags the SCM flags.
-IMPORT_C SInt32 ScmCreateInstance(_Input UInt32 flags, _Output SCM_OBJECT* handle_instance);
+IMPORT_C SInt32 ScmCreateInstance(_Input UInt32 flags, _Output ZKAObject* handle_instance);
/// @brief Destroys an SCM instance of the process.
/// @param handle_instance the SCM handle.
-IMPORT_C UInt0 ScmDestroyInstance(_Input SCM_OBJECT handle_instance);
+IMPORT_C UInt0 ScmDestroyInstance(_Input ZKAObject handle_instance);
// ------------------------------------------------------------------------
// Memory Management API.
diff --git a/dev/SCI/sci_err.hxx b/dev/SCI/sci_err.hxx
new file mode 100644
index 00000000..a1e56dfd
--- /dev/null
+++ b/dev/SCI/sci_err.hxx
@@ -0,0 +1,47 @@
+/* -------------------------------------------
+
+ Copyright ZKA Technologies.
+
+------------------------------------------- */
+
+#pragma once
+
+#define ErrLocalIsOk() (kLastError == kErrorSuccess)
+#define ErrLocalFailed() (kLastError != kErrorSuccess)
+#define ErrLocal() (kLastError)
+
+typedef SInt32 ZKAErr;
+
+inline constexpr ZKAErr kErrorSuccess = 0;
+inline constexpr ZKAErr kErrorExecutable = 33;
+inline constexpr ZKAErr kErrorExecutableLib = 34;
+inline constexpr ZKAErr kErrorFileNotFound = 35;
+inline constexpr ZKAErr kErrorDirectoryNotFound = 36;
+inline constexpr ZKAErr kErrorDiskReadOnly = 37;
+inline constexpr ZKAErr kErrorDiskIsFull = 38;
+inline constexpr ZKAErr kErrorProcessFault = 39;
+inline constexpr ZKAErr kErrorSocketHangUp = 40;
+inline constexpr ZKAErr kErrorThreadLocalStorage = 41;
+inline constexpr ZKAErr kErrorMath = 42;
+inline constexpr ZKAErr kErrorNoNetwork = 43;
+inline constexpr ZKAErr kErrorHeapOutOfMemory = 44;
+inline constexpr ZKAErr kErrorNoSuchDisk = 45;
+inline constexpr ZKAErr kErrorFileExists = 46;
+inline constexpr ZKAErr kErrorFormatFailed = 47;
+inline constexpr ZKAErr kErrorNetworkTimeout = 48;
+inline constexpr ZKAErr kErrorInternal = 49;
+inline constexpr ZKAErr kErrorForkAlreadyExists = 50;
+inline constexpr ZKAErr kErrorOutOfTeamSlot = 51;
+inline constexpr ZKAErr kErrorHeapNotPresent = 52;
+inline constexpr ZKAErr kErrorNoEntrypoint = 53;
+inline constexpr ZKAErr kErrorDiskIsCorrupted = 54;
+inline constexpr ZKAErr kErrorDisk = 55;
+inline constexpr ZKAErr kErrorInvalidData = 56;
+inline constexpr ZKAErr kErrorAsync = 57;
+inline constexpr ZKAErr kErrorNonBlocking = 58;
+inline constexpr ZKAErr kErrorIPC = 59;
+inline constexpr ZKAErr kErrorSign = 60;
+inline constexpr ZKAErr kErrorInvalidCreds = 61;
+inline constexpr ZKAErr kErrorUnimplemented = 0;
+
+IMPORT_C ZKAErr kLastError;
diff --git a/dev/SCI/Hint.h b/dev/SCI/sci_hint.hxx
index c785f953..c785f953 100644
--- a/dev/SCI/Hint.h
+++ b/dev/SCI/sci_hint.hxx
diff --git a/dev/ZBA/Sources/HEL/AMD64/BootMain.cxx b/dev/ZBA/Sources/HEL/AMD64/BootMain.cxx
index 9cdaf603..cd18d34a 100644
--- a/dev/ZBA/Sources/HEL/AMD64/BootMain.cxx
+++ b/dev/ZBA/Sources/HEL/AMD64/BootMain.cxx
@@ -253,6 +253,9 @@ EFI_EXTERN_C EFI_API Int Main(EfiHandlePtr ImageHandle,
// If we succeed in reading the blob, then execute it.
// ------------------------------------------ //
+ handoverHdrPtr->f_HardwareTables.f_ImagePtr = readerKernel.Blob();
+ handoverHdrPtr->f_HardwareTables.f_ImageSz = readerKernel.Size();
+
if (readerKernel.Blob())
{
loader = new Boot::BThread(readerKernel.Blob());
diff --git a/dev/ZKA/KernelKit/RLE.hxx b/dev/ZKA/CompressKit/RLE.hxx
index 31e37619..647cf00b 100644
--- a/dev/ZKA/KernelKit/RLE.hxx
+++ b/dev/ZKA/CompressKit/RLE.hxx
@@ -9,7 +9,10 @@
#include <NewKit/Defines.hxx>
-EXTERN_C void rle_compress(void* data, long sz, void* out, long out_sz);
-EXTERN_C void rle_decompress(void* data, long sz, void* out, long out_sz);
+namespace Kernel
+{
+ EXTERN_C Void rle_compress(VoidPtr data, Size sz, VoidPtr out, Size out_sz);
+ EXTERN_C Void rle_decompress(VoidPtr data, Size sz, VoidPtr out, Size out_sz);
+} // namespace Kernel
#endif // !ifndef __KERNELKIT_RLE_HXX__
diff --git a/dev/ZKA/FirmwareKit/Handover.hxx b/dev/ZKA/FirmwareKit/Handover.hxx
index 5c09f79b..ba7b23b2 100644
--- a/dev/ZKA/FirmwareKit/Handover.hxx
+++ b/dev/ZKA/FirmwareKit/Handover.hxx
@@ -26,8 +26,8 @@
#define kHandoverMaxCmdLine 8
-#define kHandoverBetterEFI "ZKA_EFI"
-#define kHandoverBetterEFI_U L"ZKA_EFI"
+#define kHandoverBetterEFI "ZKA_EFI"
+#define kHandoverBetterEFI_U L"ZKA_EFI"
#define kHandoverHeapSz gib_cast(2)
@@ -43,8 +43,8 @@ namespace Kernel::HEL
kTypeKernel = 100,
kTypeKernelDriver = 101,
kTypeRsrc = 102,
- kTypeInvalid = 103,
- kTypeCount = 4,
+ kTypeInvalid = 103,
+ kTypeCount = 4,
};
/**
@@ -75,6 +75,11 @@ namespace Kernel::HEL
{
VoidPtr f_SmBios;
VoidPtr f_VendorPtr;
+ struct
+ {
+ VoidPtr f_ImagePtr;
+ SizeT f_ImageSz;
+ };
VoidPtr f_MPPtr;
} f_HardwareTables;
@@ -89,7 +94,7 @@ namespace Kernel::HEL
} f_GOP;
UInt64 f_FirmwareSpecific[8];
- Char f_CommandLine[255][kHandoverMaxCmdLine];
+ Char f_CommandLine[255][kHandoverMaxCmdLine];
};
enum
diff --git a/dev/ZKA/HALKit/AXP/Processor.hpp b/dev/ZKA/HALKit/AXP/Processor.hxx
index 25a434a0..25a434a0 100644
--- a/dev/ZKA/HALKit/AXP/Processor.hpp
+++ b/dev/ZKA/HALKit/AXP/Processor.hxx
diff --git a/dev/ZKA/KernelKit/CodeManager.hxx b/dev/ZKA/KernelKit/CodeManager.hxx
index a1fea211..b551815e 100644
--- a/dev/ZKA/KernelKit/CodeManager.hxx
+++ b/dev/ZKA/KernelKit/CodeManager.hxx
@@ -16,7 +16,7 @@
#include <KernelKit/PECodeManager.hxx>
#include <KernelKit/PEFCodeManager.hxx>
-#include <KernelKit/PEFSharedObject.hxx>
+#include <KernelKit/PEFDLLInterface.hxx>
namespace Kernel
{
diff --git a/dev/ZKA/KernelKit/DLLInterface.hxx b/dev/ZKA/KernelKit/DLLInterface.hxx
new file mode 100644
index 00000000..370363b7
--- /dev/null
+++ b/dev/ZKA/KernelKit/DLLInterface.hxx
@@ -0,0 +1,44 @@
+/*
+ * ========================================================
+ *
+ * Kernel
+ * Copyright ZKA Technologies., all rights reserved.
+ *
+ * ========================================================
+ */
+
+#pragma once
+
+#include <NewKit/Defines.hxx>
+
+namespace Kernel
+{
+ class DLLInterface
+ {
+ public:
+ explicit DLLInterface() = default;
+ virtual ~DLLInterface() = default;
+
+ struct DLL_TRAITS final
+ {
+ VoidPtr fImageObject{nullptr};
+ VoidPtr fImageEntrypointOffset{nullptr};
+
+ Bool IsValid()
+ {
+ return fImageObject && fImageEntrypointOffset;
+ }
+ };
+
+ ZKA_COPY_DEFAULT(DLLInterface);
+
+ virtual DLL_TRAITS** GetAddressOf() = 0;
+ virtual DLL_TRAITS* Get() = 0;
+
+ virtual void Mount(DLL_TRAITS* to_mount) = 0;
+ virtual void Unmount() = 0;
+ };
+
+ /// @brief Pure implementation, missing method/function handler.
+ EXTERN_C void __zka_pure_call(void);
+} // namespace Kernel
diff --git a/dev/ZKA/KernelKit/PEFSharedObject.hxx b/dev/ZKA/KernelKit/PEFDLLInterface.hxx
index 48b70508..3c0187f1 100644
--- a/dev/ZKA/KernelKit/PEFSharedObject.hxx
+++ b/dev/ZKA/KernelKit/PEFDLLInterface.hxx
@@ -10,54 +10,42 @@
#ifndef __KERNELKIT_SHARED_OBJECT_HXX__
#define __KERNELKIT_SHARED_OBJECT_HXX__
-#include <KernelKit/LoaderInterface.hxx>
#include <KernelKit/PEF.hxx>
#include <KernelKit/PEFCodeManager.hxx>
#include <NewKit/Defines.hxx>
+#include <KernelKit/DLLInterface.hxx>
namespace Kernel
{
- /// @brief Pure implementation, missing method/function handler.
- extern "C" void __mh_purecall(void);
-
/**
* @brief Shared Library class
* Load library from this class
*/
- class PEFSharedObjectInterface final
+ class PEFDLLInterface final : public DLLInterface
{
public:
- struct PEF_SHARED_OBJECT_TRAITS final
- {
- VoidPtr fImageObject{nullptr};
- VoidPtr fImageEntrypointOffset{nullptr};
-
- Bool IsValid() { return fImageObject && fImageEntrypointOffset; }
- };
-
- public:
- explicit PEFSharedObjectInterface() = default;
- ~PEFSharedObjectInterface() = default;
+ explicit PEFDLLInterface() = default;
+ ~PEFDLLInterface() = default;
public:
- ZKA_COPY_DEFAULT(PEFSharedObjectInterface);
+ ZKA_COPY_DEFAULT(PEFDLLInterface);
private:
- PEF_SHARED_OBJECT_TRAITS* fMounted{nullptr};
+ DLL_TRAITS* fMounted{nullptr};
public:
- PEF_SHARED_OBJECT_TRAITS** GetAddressOf()
+ DLL_TRAITS** GetAddressOf()
{
return &fMounted;
}
- PEF_SHARED_OBJECT_TRAITS* Get()
+ DLL_TRAITS* Get()
{
return fMounted;
}
public:
- void Mount(PEF_SHARED_OBJECT_TRAITS* to_mount)
+ void Mount(DLL_TRAITS* to_mount)
{
if (!to_mount || !to_mount->fImageObject)
return;
@@ -96,7 +84,7 @@ namespace Kernel
if (!ret)
{
if (kind == kPefCode)
- return (VoidPtr)__mh_purecall;
+ return (VoidPtr)__zka_pure_call;
return nullptr;
}
@@ -108,10 +96,10 @@ namespace Kernel
PEFLoader* fLoader{nullptr};
};
- typedef PEFSharedObjectInterface* SharedObjectPtr;
+ typedef PEFDLLInterface* DLLInterfacePtr;
- EXTERN_C SharedObjectPtr rtl_init_shared_object(PROCESS_HEADER_BLOCK* header);
- EXTERN_C Void rtl_fini_shared_object(PROCESS_HEADER_BLOCK* header, SharedObjectPtr lib, Bool* successful);
+ EXTERN_C DLLInterfacePtr rtl_init_shared_object(PROCESS_HEADER_BLOCK* header);
+ EXTERN_C Void rtl_fini_shared_object(PROCESS_HEADER_BLOCK* header, DLLInterfacePtr lib, Bool* successful);
} // namespace Kernel
#endif /* ifndef __KERNELKIT_SHARED_OBJECT_HXX__ */
diff --git a/dev/ZKA/KernelKit/ProcessScheduler.hxx b/dev/ZKA/KernelKit/ProcessScheduler.hxx
index 5df9d369..1f70158b 100644
--- a/dev/ZKA/KernelKit/ProcessScheduler.hxx
+++ b/dev/ZKA/KernelKit/ProcessScheduler.hxx
@@ -29,7 +29,7 @@ namespace Kernel
//! @brief Forward declarations.
struct PROCESS_HEADER_BLOCK;
- class PEFSharedObjectInterface;
+ class PEFDLLInterface;
class ProcessTeam;
class ProcessScheduler;
class ProcessHelper;
@@ -157,8 +157,7 @@ namespace Kernel
HeapPtrKind HeapPtr{nullptr};
// shared library handle, reserved for kSharedObjectKind types of executables only.
- PEFSharedObjectInterface* DLLPtr{nullptr};
-
+ PEFDLLInterface* DLLPtr{nullptr};
PROCESS_HEADER_BLOCK* Parent{nullptr};
// Memory usage.
diff --git a/dev/ZKA/KernelKit/User.hxx b/dev/ZKA/KernelKit/User.hxx
index a7f8fc02..d8f81fd7 100644
--- a/dev/ZKA/KernelKit/User.hxx
+++ b/dev/ZKA/KernelKit/User.hxx
@@ -27,7 +27,6 @@
namespace Kernel
{
- class UserManager;
class User;
enum class RingKind
@@ -74,8 +73,6 @@ namespace Kernel
RingKind fRing{RingKind::kRingStdUser};
Char fUserName[kMaxUserNameLen] = { 0 };
Char fUserToken[kMaxUserTokenLen] = { 0 };
-
- friend UserManager;
};
} // namespace Kernel
diff --git a/dev/ZKA/NetworkKit/IPC.hxx b/dev/ZKA/NetworkKit/IPC.hxx
index 2a5ae452..eb62f433 100644
--- a/dev/ZKA/NetworkKit/IPC.hxx
+++ b/dev/ZKA/NetworkKit/IPC.hxx
@@ -13,6 +13,8 @@
#include <NewKit/Defines.hxx>
#include <NewKit/String.hxx>
+#include <CompressKit/RLE.hxx>
+
/// @file IPC.hxx
/// @brief IPC protocol.
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.
*
* ========================================================