NeKernel dev
Loading...
Searching...
No Matches
Pmm.h
Go to the documentation of this file.
1
2/* ========================================
3
4 Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
5
6======================================== */
7
8#pragma once
9
10#include <NeKit/Config.h>
11#include <NeKit/PageMgr.h>
12#include <NeKit/Ref.h>
13
14namespace Kernel {
15class Pmm;
16class PTEWrapper;
17
18class Pmm final {
19 public:
20 explicit Pmm();
22
23 Pmm& operator=(const Pmm&) = delete;
24 Pmm(const Pmm&) = default;
25
26 Ref<PTEWrapper> RequestPage(Boolean user = false, Boolean readWrite = false);
28
29 Boolean ToggleRw(Ref<PTEWrapper> refPage, Boolean enable = true);
30 Boolean TogglePresent(Ref<PTEWrapper> refPage, Boolean enable = true);
31 Boolean ToggleUser(Ref<PTEWrapper> refPage, Boolean enable = true);
32 Boolean ToggleShare(Ref<PTEWrapper> refPage, Boolean enable = true);
33
35 Ref<PageMgr>& Leak() { return fPageMgr; }
36
37 private:
39};
40} // namespace Kernel
Definition PageMgr.h:18
Definition Pmm.h:18
Pmm()
Pmm constructor.
Definition Pmm.cc:22
Ref< PageMgr > & Leak()
Get the page manager of this.
Definition Pmm.h:35
Ref< PageMgr > fPageMgr
Definition Pmm.h:38
Pmm(const Pmm &)=default
Ref< PTEWrapper > RequestPage(Boolean user=false, Boolean readWrite=false)
Definition Pmm.cc:33
Boolean FreePage(Ref< PTEWrapper > refPage)
Definition Pmm.cc:44
Pmm & operator=(const Pmm &)=delete
Boolean TogglePresent(Ref< PTEWrapper > refPage, Boolean enable=true)
Definition Pmm.cc:52
Boolean ToggleUser(Ref< PTEWrapper > refPage, Boolean enable=true)
Definition Pmm.cc:60
Boolean ToggleRw(Ref< PTEWrapper > refPage, Boolean enable=true)
Definition Pmm.cc:68
Boolean ToggleShare(Ref< PTEWrapper > refPage, Boolean enable=true)
Definition Pmm.cc:76
Reference wrapper class. /// =========================================================== ///.
Definition Ref.h:22
UPS inline definitions.
Definition Device.h:12
bool Boolean
Definition Config.h:49