summaryrefslogtreecommitdiffhomepage
path: root/Private/KernelKit/PEFSharedObject.hxx
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-05-08 12:32:41 +0200
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-05-08 12:32:41 +0200
commit09dd11ddf800898c00ecb04a65fb5cd10fb481fa (patch)
treeeda0b4e23d6a71da7de3a78f0bb76ec3201dd2f9 /Private/KernelKit/PEFSharedObject.hxx
parentca83108fd138cc0398f900e6a6c0a53ad51aee31 (diff)
MHR-23: :boom: changes, reworked project tree.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'Private/KernelKit/PEFSharedObject.hxx')
-rw-r--r--Private/KernelKit/PEFSharedObject.hxx112
1 files changed, 0 insertions, 112 deletions
diff --git a/Private/KernelKit/PEFSharedObject.hxx b/Private/KernelKit/PEFSharedObject.hxx
deleted file mode 100644
index 6176c31d..00000000
--- a/Private/KernelKit/PEFSharedObject.hxx
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * ========================================================
- *
- * NewOS
- * Copyright Mahrouss Logic, all rights reserved.
- *
- * ========================================================
- */
-
-#ifndef __KERNELKIT_SHARED_OBJECT_HXX__
-#define __KERNELKIT_SHARED_OBJECT_HXX__
-
-#include <KernelKit/LoaderInterface.hpp>
-#include <KernelKit/PEF.hpp>
-#include <KernelKit/PEFCodeManager.hxx>
-#include <NewKit/Defines.hpp>
-
-namespace NewOS
-{
- /// @brief Pure implementation, missing method/function handler.
- extern "C" void __mh_purecall(void);
-
- /**
- * @brief Shared Library class
- * Load library from this class
- */
- class SharedObject final
- {
- public:
- struct SharedObjectTrait final
- {
- VoidPtr fImageObject;
- VoidPtr fImageEntrypointOffset;
- };
-
- public:
- explicit SharedObject() = default;
- ~SharedObject() = default;
-
- public:
- NEWOS_COPY_DEFAULT(SharedObject);
-
- private:
- SharedObjectTrait* fMounted{nullptr};
-
- public:
- SharedObjectTrait** GetAddressOf()
- {
- return &fMounted;
- }
-
- SharedObjectTrait* Get()
- {
- return fMounted;
- }
-
- public:
- void Mount(SharedObjectTrait* to_mount)
- {
- if (!to_mount || !to_mount->fImageObject)
- return;
-
- fMounted = to_mount;
-
- if (fLoader && to_mount)
- {
- delete fLoader;
- fLoader = nullptr;
- }
-
- if (!fLoader)
- {
- fLoader = new PEFLoader(fMounted->fImageObject);
- }
- }
-
- void Unmount()
- {
- if (fMounted)
- fMounted = nullptr;
- };
-
- template <typename SymbolType>
- SymbolType Load(const char* symbol_name, SizeT len, Int32 kind)
- {
- if (symbol_name == nullptr || *symbol_name == 0)
- return nullptr;
- if (len > kPathLen || len < 1)
- return nullptr;
-
- auto ret =
- reinterpret_cast<SymbolType>(fLoader->FindSymbol(symbol_name, kind));
-
- if (!ret)
- {
- if (kind == kPefCode)
- return (VoidPtr)__mh_purecall;
-
- return nullptr;
- }
-
- return ret;
- }
-
- private:
- PEFLoader* fLoader{nullptr};
- };
-
- typedef SharedObject* SharedObjectPtr;
-} // namespace NewOS
-
-#endif /* ifndef __KERNELKIT_SHARED_OBJECT_HXX__ */