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/KernelKit | |
| 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/KernelKit')
| -rw-r--r-- | dev/ZKA/KernelKit/CodeManager.hxx | 2 | ||||
| -rw-r--r-- | dev/ZKA/KernelKit/DLLInterface.hxx | 44 | ||||
| -rw-r--r-- | dev/ZKA/KernelKit/PEFDLLInterface.hxx (renamed from dev/ZKA/KernelKit/PEFSharedObject.hxx) | 38 | ||||
| -rw-r--r-- | dev/ZKA/KernelKit/ProcessScheduler.hxx | 5 | ||||
| -rw-r--r-- | dev/ZKA/KernelKit/RLE.hxx | 15 | ||||
| -rw-r--r-- | dev/ZKA/KernelKit/User.hxx | 3 |
6 files changed, 60 insertions, 47 deletions
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/RLE.hxx b/dev/ZKA/KernelKit/RLE.hxx deleted file mode 100644 index 31e37619..00000000 --- a/dev/ZKA/KernelKit/RLE.hxx +++ /dev/null @@ -1,15 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - -------------------------------------------- */ - -#ifndef __KERNELKIT_RLE_HXX__ -#define __KERNELKIT_RLE_HXX__ - -#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); - -#endif // !ifndef __KERNELKIT_RLE_HXX__ 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 |
