summaryrefslogtreecommitdiffhomepage
path: root/Kernel/KernelKit
diff options
context:
space:
mode:
authorAmlal EL Mahrouss <amlalelmahrouss@icloud.com>2024-07-31 16:40:11 +0200
committerAmlal EL Mahrouss <amlalelmahrouss@icloud.com>2024-07-31 16:42:42 +0200
commit63dc1384bcbf8caf4ca53c715628db2c36b0b096 (patch)
tree2937e78fc2f0e729052660bdd1c74fdacf57d0ec /Kernel/KernelKit
parent59e0caa55e97f1a998904f404e5fedac3b2b0ec6 (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.hxx4
-rw-r--r--Kernel/KernelKit/ProcessHeap.hxx10
-rw-r--r--Kernel/KernelKit/ProcessScheduler.hxx10
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};