summaryrefslogtreecommitdiffhomepage
path: root/dev/Kernel/KernelKit/ProcessHeap.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'dev/Kernel/KernelKit/ProcessHeap.hxx')
-rw-r--r--dev/Kernel/KernelKit/ProcessHeap.hxx44
1 files changed, 44 insertions, 0 deletions
diff --git a/dev/Kernel/KernelKit/ProcessHeap.hxx b/dev/Kernel/KernelKit/ProcessHeap.hxx
new file mode 100644
index 00000000..b6b6352c
--- /dev/null
+++ b/dev/Kernel/KernelKit/ProcessHeap.hxx
@@ -0,0 +1,44 @@
+/* -------------------------------------------
+
+ Copyright ZKA Technologies.
+
+------------------------------------------- */
+
+#pragma once
+
+#include <NewKit/Array.hxx>
+#include <NewKit/ArrayList.hxx>
+#include <NewKit/ErrorOr.hxx>
+#include <NewKit/PageManager.hxx>
+#include <NewKit/Ref.hxx>
+#include <NewKit/Pmm.hxx>
+
+/// @version 5/11/23
+/// @file ProcessHeap.hxx
+/// @brief Process heap allocator.
+
+#define kProcessHeapMag (0xFAF0FEF0)
+
+namespace Kernel
+{
+ typedef enum
+ {
+ /// @brief Shared heap.
+ kProcessHeapShared = 0x4,
+ /// @brief User and private heap.
+ kProcessHeapUser = 0x6,
+ /// @brief Read and Write heap.
+ kProcessHeapRw = 0x8,
+ } UserHeapFlags;
+
+ /// @brief Allocate a process heap, no zero out is done here.
+ /// @param flags the heap's flags.
+ /// @param len_in_gib the heap in GB.
+ /// @return The process's heap.
+ VoidPtr sched_new_heap(Int32 flags, SizeT len_in_gib);
+
+ /// @brief Frees the process heap.
+ /// @param pointer The process heap pointer.
+ /// @return status code of the freeing.
+ Int32 sched_free_heap(voidPtr pointer);
+} // namespace Kernel