summaryrefslogtreecommitdiffhomepage
path: root/dev/ZKA/NewKit
diff options
context:
space:
mode:
authorAmlal <amlalelmahrouss@icloud.com>2024-09-05 19:13:02 +0000
committerAmlal <amlalelmahrouss@icloud.com>2024-09-05 19:13:02 +0000
commit621e814da6d5005ade8a1fe3f378a363db559cf7 (patch)
tree438f1337c0eb2ae83cf3d409c29848d396be08b2 /dev/ZKA/NewKit
parentcc9ce57cac59bd443e2319e3b8f427172b93f7da (diff)
parent3b60a1e87ab02a1b72d8bb9f7392780899d5a0d7 (diff)
Merged in major-refactor (pull request #19)
Major refactor
Diffstat (limited to 'dev/ZKA/NewKit')
-rw-r--r--dev/ZKA/NewKit/KernelCheck.hxx3
-rw-r--r--dev/ZKA/NewKit/Macros.hxx23
-rw-r--r--dev/ZKA/NewKit/PageAllocator.hxx3
-rw-r--r--dev/ZKA/NewKit/PageMgr.hxx (renamed from dev/ZKA/NewKit/PageManager.hxx)22
-rw-r--r--dev/ZKA/NewKit/Pmm.hxx8
-rw-r--r--dev/ZKA/NewKit/Ref.hxx2
6 files changed, 35 insertions, 26 deletions
diff --git a/dev/ZKA/NewKit/KernelCheck.hxx b/dev/ZKA/NewKit/KernelCheck.hxx
index 58a76acb..8797ff86 100644
--- a/dev/ZKA/NewKit/KernelCheck.hxx
+++ b/dev/ZKA/NewKit/KernelCheck.hxx
@@ -20,7 +20,7 @@ namespace Kernel
Kernel::ke_runtime_check(EXPR, FILE, STRINGIFY(LINE))
#ifdef __DEBUG__
-#define MUST_PASS(EXPR) __MUST_PASS(EXPR, __FILE__, __LINE__)
+#define MUST_PASS(EXPR) __MUST_PASS((EXPR), __FILE__, __LINE__)
#define assert(EXPR) MUST_PASS(EXPR, RUNTIME_CHECK_EXPRESSION)
#else
#define MUST_PASS(EXPR) (Kernel::Void)(EXPR)
@@ -43,6 +43,7 @@ enum RUNTIME_CHECK
RUNTIME_CHECK_BOOTSTRAP,
RUNTIME_CHECK_UNEXCPECTED,
RUNTIME_CHECK_FILESYSTEM,
+ RUNTIME_CHECK_VIRTUAL_OUT_OF_MEM,
RUNTIME_CHECK_COUNT,
};
diff --git a/dev/ZKA/NewKit/Macros.hxx b/dev/ZKA/NewKit/Macros.hxx
index 153b8c45..b20ddb8a 100644
--- a/dev/ZKA/NewKit/Macros.hxx
+++ b/dev/ZKA/NewKit/Macros.hxx
@@ -7,31 +7,31 @@
#pragma once
#ifndef KIB
-#define KIB(X) ((X) / 1024)
+#define KIB(X) (Kernel::UInt64)((X) / 1024)
#endif
#ifndef kib_cast
-#define kib_cast(X) ((X)*1024)
+#define kib_cast(X) (Kernel::UInt64)((X)*1024)
#endif
#ifndef MIB
-#define MIB(X) ((Kernel::UInt64)KIB(X) / 1024)
+#define MIB(X) (Kernel::UInt64)((Kernel::UInt64)KIB(X) / 1024)
#endif
#ifndef mib_cast
-#define mib_cast(X) ((Kernel::UInt64)kib_cast(X) * 1024)
+#define mib_cast(X) (Kernel::UInt64)((Kernel::UInt64)kib_cast(X) * 1024)
#endif
#ifndef GIB
-#define GIB(X) ((Kernel::UInt64)MIB(X) / 1024)
+#define GIB(X) (Kernel::UInt64)((Kernel::UInt64)MIB(X) / 1024)
#endif
#ifndef gib_cast
-#define gib_cast(X) ((Kernel::UInt64)mib_cast(X) * 1024)
+#define gib_cast(X) (Kernel::UInt64)((Kernel::UInt64)mib_cast(X) * 1024)
#endif
#ifndef TIB
-#define TIB(X) ((Kernel::UInt64)GIB(X) / 1024)
+#define TIB(X) (Kernel::UInt64)((Kernel::UInt64)GIB(X) / 1024)
#endif
#ifndef tib_cast
@@ -94,7 +94,7 @@
#define CANT_REACH() __builtin_unreachable()
#endif
-#define kBadPtr 0xFBFBFBFBFBFBFBFB
+#define kInvalidAddress 0xFBFBFBFBFBFBFBFB
#define kBadAddress 0x00000000000000
#define kMaxAddr 0xFFFFFFFFFFFFFFFF
#define kPathLen 255
@@ -119,3 +119,10 @@
/// @brief The main system driver.
#define kSysDrv "\\System\\startup.sys"
+
+/// @brief The main font file.
+#define kSysTTF "\\System\\urbanist.ttf"
+
+/// @brief The main kernel file.
+#define kSysChime "\\System\\startup.wav"
+
diff --git a/dev/ZKA/NewKit/PageAllocator.hxx b/dev/ZKA/NewKit/PageAllocator.hxx
index b485e722..5b19c0c2 100644
--- a/dev/ZKA/NewKit/PageAllocator.hxx
+++ b/dev/ZKA/NewKit/PageAllocator.hxx
@@ -7,13 +7,12 @@
#pragma once
#include <NewKit/Defines.hxx>
-#include <NewKit/PageManager.hxx>
+#include <NewKit/PageMgr.hxx>
namespace Kernel
{
namespace Detail
{
- VoidPtr create_page_wrapper(Boolean rw, Boolean user, SizeT pageSz);
void exec_disable(UIntPtr addr);
bool page_disable(UIntPtr addr);
} // namespace Detail
diff --git a/dev/ZKA/NewKit/PageManager.hxx b/dev/ZKA/NewKit/PageMgr.hxx
index 249c0cc9..1f6b5021 100644
--- a/dev/ZKA/NewKit/PageManager.hxx
+++ b/dev/ZKA/NewKit/PageMgr.hxx
@@ -15,7 +15,7 @@
namespace Kernel
{
- class PageManager;
+ class PageMgr;
class PTEWrapper final
{
@@ -31,7 +31,9 @@ namespace Kernel
const UIntPtr VirtualAddress();
void NoExecute(const bool enable = false);
- const bool& NoExecute();
+ const Bool& NoExecute();
+
+ operator bool() { return fVirtAddr; }
bool Reclaim();
bool Shareable();
@@ -50,25 +52,25 @@ namespace Kernel
Boolean fAccessed;
private:
- friend class PageManager;
+ friend class PageMgr;
friend class Pmm;
};
- struct PageManager final
+ struct PageMgr final
{
public:
- PageManager() = default;
- ~PageManager() = default;
+ PageMgr() = default;
+ ~PageMgr() = default;
- PageManager& operator=(const PageManager&) = default;
- PageManager(const PageManager&) = default;
+ PageMgr& operator=(const PageMgr&) = default;
+ PageMgr(const PageMgr&) = default;
public:
PTEWrapper Request(Boolean Rw, Boolean User, Boolean ExecDisable, SizeT Sz);
- bool Free(Ref<PTEWrapper*>& wrapper);
+ bool Free(Ref<PTEWrapper>& wrapper);
private:
- void FlushTLB(UIntPtr VirtAddr);
+ void FlushTLB();
private:
friend PTEWrapper;
diff --git a/dev/ZKA/NewKit/Pmm.hxx b/dev/ZKA/NewKit/Pmm.hxx
index 111b3044..cdf498d9 100644
--- a/dev/ZKA/NewKit/Pmm.hxx
+++ b/dev/ZKA/NewKit/Pmm.hxx
@@ -7,7 +7,7 @@
#pragma once
-#include <NewKit/PageManager.hxx>
+#include <NewKit/PageMgr.hxx>
#include <NewKit/Ref.hxx>
namespace Kernel
@@ -33,12 +33,12 @@ namespace Kernel
Boolean ToggleShare(Ref<PTEWrapper> refPage, Boolean enable = true);
/// @brief Get the page manager of this.
- Ref<PageManager>& Leak()
+ Ref<PageMgr>& Leak()
{
- return fPageManager;
+ return fPageMgr;
}
private:
- Ref<PageManager> fPageManager;
+ Ref<PageMgr> fPageMgr;
};
} // namespace Kernel
diff --git a/dev/ZKA/NewKit/Ref.hxx b/dev/ZKA/NewKit/Ref.hxx
index 977c353a..7f5167c2 100644
--- a/dev/ZKA/NewKit/Ref.hxx
+++ b/dev/ZKA/NewKit/Ref.hxx
@@ -84,7 +84,7 @@ namespace Kernel
NonNullRef(T* ref)
: fRef(ref, true)
{
- MUST_PASS(ref != nullptr);
+ MUST_PASS(ref);
}
Ref<T>& operator->()