diff options
| author | Amlal EL Mahrouss <amlalelmahrouss@icloud.com> | 2024-07-31 16:40:11 +0200 |
|---|---|---|
| committer | Amlal EL Mahrouss <amlalelmahrouss@icloud.com> | 2024-07-31 16:42:42 +0200 |
| commit | 63dc1384bcbf8caf4ca53c715628db2c36b0b096 (patch) | |
| tree | 2937e78fc2f0e729052660bdd1c74fdacf57d0ec /Kernel/KernelKit | |
| parent | 59e0caa55e97f1a998904f404e5fedac3b2b0ec6 (diff) | |
[IMP] SEE BELOW.
- Support for shared libraries inside a process.
- SMP improvements, add the PROCESS_CONTROL_BLOCK, to handle task
switching.
- Add MUST_PASS in HardwareTimer class.
- Add rtl.internal.inl for SCM internal implementation.
Signed-off-by: Amlal EL Mahrouss <amlalelmahrouss@icloud.com>
Diffstat (limited to 'Kernel/KernelKit')
| -rw-r--r-- | Kernel/KernelKit/PEFSharedObject.hxx | 4 | ||||
| -rw-r--r-- | Kernel/KernelKit/ProcessHeap.hxx | 10 | ||||
| -rw-r--r-- | Kernel/KernelKit/ProcessScheduler.hxx | 10 |
3 files changed, 16 insertions, 8 deletions
diff --git a/Kernel/KernelKit/PEFSharedObject.hxx b/Kernel/KernelKit/PEFSharedObject.hxx index f8119971..d490c567 100644 --- a/Kernel/KernelKit/PEFSharedObject.hxx +++ b/Kernel/KernelKit/PEFSharedObject.hxx @@ -107,6 +107,10 @@ namespace Kernel }; typedef SharedObject* SharedObjectPtr; + + EXTERN_C SharedObjectPtr rtl_init_shared_object(ProcessHeader* header); + EXTERN_C Void rtl_fini_shared_object(ProcessHeader* header, SharedObjectPtr lib, Bool* successful); } // namespace Kernel #endif /* ifndef __KERNELKIT_SHARED_OBJECT_HXX__ */ + diff --git a/Kernel/KernelKit/ProcessHeap.hxx b/Kernel/KernelKit/ProcessHeap.hxx index 7772398e..377e6009 100644 --- a/Kernel/KernelKit/ProcessHeap.hxx +++ b/Kernel/KernelKit/ProcessHeap.hxx @@ -15,7 +15,7 @@ /// @version 5/11/23 /// @file ProcessHeap.hxx -/// @brief Heap for user processes. +/// @brief Process heap allocator. #define kUserHeapMaxSz (4096) #define kUserHeapMag (0xFAF0FEF0) @@ -33,12 +33,12 @@ namespace Kernel } kUserHeapFlags; /// @brief Allocate a process heap, no zero out is done here. - /// @param flags + /// @param flags the allocation flags. /// @return The process's heap. - VoidPtr rt_new_heap(Int32 flags); + VoidPtr sched_new_heap(Int32 flags); /// @brief Frees the process heap. /// @param pointer The process heap pointer. - /// @return - Int32 rt_free_heap(voidPtr pointer); + /// @return status code of the freeing. + Int32 sched_free_heap(voidPtr pointer); } // namespace Kernel diff --git a/Kernel/KernelKit/ProcessScheduler.hxx b/Kernel/KernelKit/ProcessScheduler.hxx index 5c27af79..b174858a 100644 --- a/Kernel/KernelKit/ProcessScheduler.hxx +++ b/Kernel/KernelKit/ProcessScheduler.hxx @@ -36,10 +36,11 @@ namespace Kernel //! @brief Process name length. inline constexpr SizeT kProcessLen = 256U; - //! @brief Forward declaration. + //! @brief Forward declarations. class ProcessHeader; class ProcessScheduler; class ProcessHelper; + class SharedObject; //! @brief Process status enum. enum class ProcessStatus : Int32 @@ -144,7 +145,7 @@ namespace Kernel const Int32& GetExitCode() noexcept; public: - Char Name[kProcessLen] = {"Process"}; + Char Name[kProcessLen] = {"Unknown Process"}; ProcessSubsystem SubSystem{ProcessSubsystem::eProcessSubsystemInvalid}; ProcessSelector Selector{ProcessSelector::kRingUser}; HAL::StackFramePtr StackFrame{nullptr}; @@ -156,7 +157,10 @@ namespace Kernel ImagePtr Image{nullptr}; HeapPtrKind HeapPtr{nullptr}; - // memory usage + // shared library handle, reserved for .lib only. + SharedObject* SharedLibObjectPtr{nullptr}; + + // Memory usage. SizeT UsedMemory{0}; SizeT FreeMemory{0}; |
