summaryrefslogtreecommitdiffhomepage
path: root/src/kernel/NeKit/Pmm.h
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-11-24 03:02:43 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2025-11-24 03:02:43 +0100
commit83d870e58457a1d335a1d9b9966a6a1887cc297b (patch)
tree72888f88c7728c82f3f6df1f4f70591de15eab36 /src/kernel/NeKit/Pmm.h
parentab37adbacf0f33845804c788b39680cd754752a8 (diff)
feat! breaking changes on kernel sources.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'src/kernel/NeKit/Pmm.h')
-rw-r--r--src/kernel/NeKit/Pmm.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/kernel/NeKit/Pmm.h b/src/kernel/NeKit/Pmm.h
new file mode 100644
index 00000000..8c117a67
--- /dev/null
+++ b/src/kernel/NeKit/Pmm.h
@@ -0,0 +1,39 @@
+
+/* ========================================
+
+ Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
+
+======================================== */
+
+#pragma once
+
+#include <NeKit/PageMgr.h>
+#include <NeKit/Ref.h>
+
+namespace Kernel {
+class Pmm;
+class PTEWrapper;
+
+class Pmm final {
+ public:
+ explicit Pmm();
+ ~Pmm();
+
+ Pmm& operator=(const Pmm&) = delete;
+ Pmm(const Pmm&) = default;
+
+ Ref<PTEWrapper> RequestPage(Boolean user = false, Boolean readWrite = false);
+ Boolean FreePage(Ref<PTEWrapper> refPage);
+
+ Boolean ToggleRw(Ref<PTEWrapper> refPage, Boolean enable = true);
+ Boolean TogglePresent(Ref<PTEWrapper> refPage, Boolean enable = true);
+ Boolean ToggleUser(Ref<PTEWrapper> refPage, Boolean enable = true);
+ Boolean ToggleShare(Ref<PTEWrapper> refPage, Boolean enable = true);
+
+ /// @brief Get the page manager of this.
+ Ref<PageMgr>& Leak() { return fPageMgr; }
+
+ private:
+ Ref<PageMgr> fPageMgr;
+};
+} // namespace Kernel