diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-01-28 19:29:01 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-01-28 19:29:42 +0100 |
| commit | f06d0703a5813841f5a6dacd294c5cfbe9394037 (patch) | |
| tree | b6626ef96cd0fe290e889054c8a934e04d556eef /Private/Source/SharedObject.cxx | |
| parent | 4a789fd64c44e38ed0c3d9fb597e62afd17a337d (diff) | |
Kernel: Update SPECIFICATION.TXT, Implement Shared objects primitives.
Kernel: Working on EFI reimplementation.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'Private/Source/SharedObject.cxx')
| -rw-r--r-- | Private/Source/SharedObject.cxx | 42 |
1 files changed, 28 insertions, 14 deletions
diff --git a/Private/Source/SharedObject.cxx b/Private/Source/SharedObject.cxx index 154fe0ed..a6ccc224 100644 --- a/Private/Source/SharedObject.cxx +++ b/Private/Source/SharedObject.cxx @@ -1,41 +1,55 @@ -/* -* ======================================================== -* -* hCore -* Copyright 2024 Mahrouss Logic, all rights reserved. -* -* ======================================================== -*/ +/* + * ======================================================== + * + * hCore + * Copyright 2024 Mahrouss Logic, all rights reserved. + * + * ======================================================== + */ #include <KernelKit/DebugOutput.hpp> +#include <KernelKit/PEF.hpp> #include <KernelKit/ProcessManager.hpp> -#include <KernelKit/ThreadLocalStorage.hxx> #include <KernelKit/SharedObjectCore.hxx> +#include <KernelKit/ThreadLocalStorage.hxx> +#include <NewKit/Defines.hpp> using namespace hCore; /***********************************************************************************/ -extern "C" SharedObject* __LibMain(VoidPtr image) +extern "C" SharedObject *__LibMain(VoidPtr image) { /***********************************************************************************/ /* Allocate new library to be added to the lookup table. */ /***********************************************************************************/ - SharedObject* library = hcore_tls_new_class<SharedObject>(); + SharedObject *library = hcore_tls_new_class<SharedObject>(); if (!library) { - kcout << "__LibMain: out of memory!\n"; + kcout << "__LibMain: Out of Memory!\n"; ProcessManager::Shared().Leak().GetCurrent().Leak().Crash(); + return nullptr; } library->Mount(hcore_tls_new_class<SharedObject::SharedObjectTraits>()); - kcout << "__LibMain: Done allocate DSO.\n"; + if (!library->Get()) + { + kcout << "__LibMain: Out of Memory!\n"; + ProcessManager::Shared().Leak().GetCurrent().Leak().Crash(); + + return nullptr; + } + + library->Get()->fImageObject = ProcessManager::Shared().Leak().GetCurrent().Leak().Image; + library->Get()->fImageEntrypointOffset = library->Load<VoidPtr>(kPefStart); + + kcout << "__LibMain: Done allocating Shared Library...\n"; return library; } -/***********************************************************************************/
\ No newline at end of file +/***********************************************************************************/ |
