summaryrefslogtreecommitdiffhomepage
path: root/dev/ZKA/KernelKit
diff options
context:
space:
mode:
Diffstat (limited to 'dev/ZKA/KernelKit')
-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/RLE.hxx15
-rw-r--r--dev/ZKA/KernelKit/User.hxx3
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