diff options
Diffstat (limited to 'Private/Source/PEFSharedObjectRT.cxx')
| -rw-r--r-- | Private/Source/PEFSharedObjectRT.cxx | 107 |
1 files changed, 0 insertions, 107 deletions
diff --git a/Private/Source/PEFSharedObjectRT.cxx b/Private/Source/PEFSharedObjectRT.cxx deleted file mode 100644 index da12eb05..00000000 --- a/Private/Source/PEFSharedObjectRT.cxx +++ /dev/null @@ -1,107 +0,0 @@ -/* - * ======================================================== - * - * NewOS - * Copyright Mahrouss Logic, all rights reserved. - * - * ======================================================== - */ - -#include <KernelKit/DebugOutput.hpp> -#include <KernelKit/PEF.hpp> -#include <KernelKit/PEFSharedObject.hxx> -#include <KernelKit/ProcessScheduler.hpp> -#include <KernelKit/ThreadLocalStorage.hxx> -#include <NewKit/Defines.hpp> - -/* ------------------------------------------- - - Revision History: - - 01/02/24: Rework shared library ABI, except a rt_library_init and - rt_library_free (amlel) 15/02/24: Breaking changes, changed the name of the - routines. (amlel) - - ------------------------------------------- */ - -using namespace NewOS; - -/***********************************************************************************/ -/// @file SharedObjectRT.cxx -/// @brief Shared Object runtime. -/***********************************************************************************/ - -/***********************************************************************************/ -/* @brief Library runtime initializer. */ -/***********************************************************************************/ - -EXTERN_C SharedObjectPtr rt_library_init(void) -{ - SharedObjectPtr library = tls_new_class<SharedObject>(); - - if (!library) - { - ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); - - return nullptr; - } - - library->Mount(tls_new_class<SharedObject::SharedObjectTrait>()); - - if (!library->Get()) - { - ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); - - return nullptr; - } - - library->Get()->fImageObject = - ProcessScheduler::Shared().Leak().GetCurrent().Leak().Image; - - if (!library->Get()->fImageObject) - { - ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); - - return nullptr; - } - - library->Get()->fImageEntrypointOffset = - library->Load<VoidPtr>(kPefStart, rt_string_len(kPefStart, 0), kPefCode); - - return library; -} - -/***********************************************************************************/ -/* @brief Ends the library. */ -/* @note Please check if the lib got freed! */ -/* @param SharedObjectPtr the library to free. */ -/***********************************************************************************/ - -EXTERN_C Void rt_library_free(SharedObjectPtr lib, bool* successful) -{ - MUST_PASS(successful); - - // sanity check (will also trigger a bug check if this fails) - if (lib == nullptr) - { - *successful = false; - ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); - } - - delete lib->Get(); - delete lib; - - lib = nullptr; - - *successful = true; -} - -/***********************************************************************************/ - -/// @brief Unimplemented function (crashes by default) -/// @param -EXTERN_C void __mh_purecall(void) -{ - ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); - return; -} |
