summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/kernel/NeKit/Domain.h (renamed from src/kernel/NeKit/Nullable.h)11
-rw-r--r--src/kernel/NeKit/Function.h2
-rw-r--r--src/kernel/NeKit/Ref.h2
-rw-r--r--src/kernel/NeKit/TOML.h2
-rw-r--r--src/kernel/NeKit/Variant.h6
-rw-r--r--src/kernel/NeKit/Vettable.h8
-rw-r--r--src/kernel/SwapKit/DiskSwap.h22
-rw-r--r--src/kernel/src/BitMapMgr.cc10
-rw-r--r--src/kernel/src/Swap/DiskSwap.cc19
9 files changed, 36 insertions, 46 deletions
diff --git a/src/kernel/NeKit/Nullable.h b/src/kernel/NeKit/Domain.h
index 30ce9da4..cda63ee9 100644
--- a/src/kernel/NeKit/Nullable.h
+++ b/src/kernel/NeKit/Domain.h
@@ -4,8 +4,8 @@
======================================== */
-#ifndef __NE_KIT_NULLABLE_H__
-#define __NE_KIT_NULLABLE_H__
+#ifndef __NE_KIT_DOMAIN_H__
+#define __NE_KIT_DOMAIN_H__
#include <NeKit/Config.h>
@@ -23,10 +23,15 @@ struct IsDefined<nullPtr> final {
static constexpr bool kValue = false;
};
+using NullDomain = IsDefined<nullPtr>;
+
+template <class Type>
+using Domain = IsDefined<Type>;
+
template <class Type>
concept IsAcceptable = requires() {
{ IsDefined<Type>::kValue };
};
} // namespace Kernel
-#endif // !__NE_KIT_NULLABLE_H__ \ No newline at end of file
+#endif // !__NE_KIT_DOMAIN_H__ \ No newline at end of file
diff --git a/src/kernel/NeKit/Function.h b/src/kernel/NeKit/Function.h
index f7e47973..dfa8608a 100644
--- a/src/kernel/NeKit/Function.h
+++ b/src/kernel/NeKit/Function.h
@@ -27,8 +27,6 @@ class Function final {
T operator()(Args&&... args) { return fFn(args...); }
- T Call(Args&&... args) { return fFn(args...); }
-
explicit operator bool() { return fFn; }
bool operator!() { return !fFn; }
diff --git a/src/kernel/NeKit/Ref.h b/src/kernel/NeKit/Ref.h
index 62460568..4767f728 100644
--- a/src/kernel/NeKit/Ref.h
+++ b/src/kernel/NeKit/Ref.h
@@ -12,7 +12,7 @@
#include <KernelKit/HeapMgr.h>
#include <NeKit/Config.h>
#include <NeKit/KernelPanic.h>
-#include <NeKit/Nullable.h>
+#include <NeKit/Domain.h>
#include <NeKit/Vettable.h>
namespace Kernel {
diff --git a/src/kernel/NeKit/TOML.h b/src/kernel/NeKit/TOML.h
index dee273ad..3eaf5197 100644
--- a/src/kernel/NeKit/TOML.h
+++ b/src/kernel/NeKit/TOML.h
@@ -6,6 +6,8 @@
#pragma once
+#include <NeKit/Config.h>
+
namespace Kernel {
class TOMLObject final {
public:
diff --git a/src/kernel/NeKit/Variant.h b/src/kernel/NeKit/Variant.h
index f7b2c450..5747e9ca 100644
--- a/src/kernel/NeKit/Variant.h
+++ b/src/kernel/NeKit/Variant.h
@@ -40,13 +40,9 @@ class Variant final {
: fPtr((VoidPtr) stringView), fKind(VariantKind::kString) {}
explicit Variant(JsonObject<>* json) : fPtr((VoidPtr) json), fKind(VariantKind::kJson) {}
-
explicit Variant(TOMLObject* toml) : fPtr((VoidPtr) toml), fKind(VariantKind::kTOML) {}
-
explicit Variant(nullPtr ptr) : fPtr(ptr), fKind(VariantKind::kNull) {}
-
- explicit Variant(SWAP_DISK_HEADER* ptr) : fPtr(ptr), fKind(VariantKind::kSwap) {}
-
+ explicit Variant(SwapDiskHdr* ptr) : fPtr(ptr), fKind(VariantKind::kSwap) {}
explicit Variant(VoidPtr ptr) : fPtr(ptr), fKind(VariantKind::kBlob) {}
public:
diff --git a/src/kernel/NeKit/Vettable.h b/src/kernel/NeKit/Vettable.h
index fad1f06c..d79aaa0b 100644
--- a/src/kernel/NeKit/Vettable.h
+++ b/src/kernel/NeKit/Vettable.h
@@ -39,12 +39,12 @@ struct Vettable<IVettable> final {
static constexpr bool kValue = true;
};
-using FallbackType = bool (*)(bool type_value);
+template <class Type>
+using FallbackType = Void (*)(const PropertyResult<Type>& type_value);
-/// @brief Concept version of Vettable.
-template <typename Type, FallbackType OnFallback>
+template <class Type, FallbackType<Type> OnFallback>
concept IsVettable = requires() {
- { Vettable<Type>::kValue ? TrueResult<Type>::kValue : OnFallback(PropertyResult<Type>::kValue) };
+ { Vettable<Type>::kValue ? TrueResult<Type>{} : OnFallback(PropertyResult<Type>{}) };
};
} // namespace Kernel
diff --git a/src/kernel/SwapKit/DiskSwap.h b/src/kernel/SwapKit/DiskSwap.h
index 7b3cb0f1..c3297c66 100644
--- a/src/kernel/SwapKit/DiskSwap.h
+++ b/src/kernel/SwapKit/DiskSwap.h
@@ -18,19 +18,19 @@
/// @brief Virtual memory swap disk.
namespace Kernel {
-struct SWAP_DISK_HEADER;
-class DiskSwapInterface;
+struct SwapDiskHdr;
+class IDiskSwap;
/// @brief Virtual memory interface to swap memory chunks onto disk.
/// @note The class only supports the NeFS as of right now, as it is using forks to write data into
/// disk.
-class DiskSwapInterface final {
+class IDiskSwap final {
public:
- explicit DiskSwapInterface() = default;
- ~DiskSwapInterface() = default;
+ explicit IDiskSwap() = default;
+ ~IDiskSwap() = default;
- NE_COPY_DELETE(DiskSwapInterface)
- NE_MOVE_DELETE(DiskSwapInterface)
+ NE_COPY_DELETE(IDiskSwap)
+ NE_MOVE_DELETE(IDiskSwap)
public:
/***********************************************************************************/
@@ -40,7 +40,7 @@ class DiskSwapInterface final {
/// @param data the data packet.
/// @return Whether the swap was written to disk, or not.
/***********************************************************************************/
- BOOL Write(const Char* name, SizeT name_len, SWAP_DISK_HEADER* data);
+ BOOL Write(const Char* name, SizeT name_len, SwapDiskHdr* data);
/***********************************************************************************/
/// @brief Read memory chunk from disk.
@@ -49,7 +49,7 @@ class DiskSwapInterface final {
/// @param data the data packet length.
/// @return Whether the swap was fetched to disk, or not.
/***********************************************************************************/
- _Output SWAP_DISK_HEADER* Read(const Char* name, SizeT name_len, SizeT data_len);
+ _Output SwapDiskHdr* Read(const Char* name, SizeT name_len, SizeT data_len);
};
/// @brief Swap disk header, containing information about the held virtual memory.
@@ -60,7 +60,7 @@ class DiskSwapInterface final {
/// @param fVirtualAddress Virtual address pointed by data.
/// @param fBlobSz Blob's size.
/// @param fBlob Data blob.
-typedef struct SWAP_DISK_HEADER {
+typedef struct SwapDiskHdr {
UInt32 fMagic;
SizeT fHeaderSz;
UInt64 fTeamID;
@@ -68,5 +68,5 @@ typedef struct SWAP_DISK_HEADER {
UInt64 fVirtualAddress;
SizeT fBlobSz;
UInt8 fBlob[1];
-} PACKED ALIGN(8) SWAP_DISK_HEADER;
+} PACKED ALIGN(8) SwapDiskHdr;
} // namespace Kernel
diff --git a/src/kernel/src/BitMapMgr.cc b/src/kernel/src/BitMapMgr.cc
index 98e34afe..ca124ee8 100644
--- a/src/kernel/src/BitMapMgr.cc
+++ b/src/kernel/src/BitMapMgr.cc
@@ -59,7 +59,7 @@ namespace HAL {
return Yes;
}
- UInt32 MakeMMFlags(Bool wr, Bool user) {
+ UInt32 MakeMMFlags(const Bool& wr, const Bool& user) {
UInt32 flags = kMMFlagsPresent;
if (wr) flags |= kMMFlagsWr;
@@ -87,7 +87,7 @@ namespace HAL {
return nullptr;
}
- VoidPtr base = reinterpret_cast<VoidPtr>((UIntPtr) base_ptr);
+ VoidPtr base = reinterpret_cast<VoidPtr>(base_ptr);
MUST_PASS(base);
if (!base) return nullptr;
@@ -183,12 +183,6 @@ namespace HAL {
if (is_page) return nullptr;
ptr_new = kBitMapMgr.FindBitMap(kKernelBitMpStart, size, wr, user, pad);
-
- if (!ptr_new) {
- ke_panic(RUNTIME_CHECK_VIRTUAL_OUT_OF_MEM, "Out of memory bitmap");
- return nullptr;
- }
-
return ptr_new;
}
diff --git a/src/kernel/src/Swap/DiskSwap.cc b/src/kernel/src/Swap/DiskSwap.cc
index f0fa5915..0f97eb4d 100644
--- a/src/kernel/src/Swap/DiskSwap.cc
+++ b/src/kernel/src/Swap/DiskSwap.cc
@@ -17,20 +17,17 @@ static constexpr UInt32 kSwapDiskHeaderMagic = 0x44535750; // 'DSWP'
/// @param data the data packet.
/// @return Whether the swap was written to disk, or not.
/***********************************************************************************/
-BOOL DiskSwapInterface::Write(const Char* fork_name, SizeT fork_name_len, SWAP_DISK_HEADER* data) {
+BOOL IDiskSwap::Write(const Char* fork_name, SizeT fork_name_len, SwapDiskHdr* data) {
if (!fork_name || !fork_name_len) return NO;
-
if (*fork_name == 0) return NO;
if (!data || data->fMagic != kSwapDiskHeaderMagic) return NO;
FileStream file(kSwapPageFilePath, kRestrictWRB);
- ErrorOr<Int64> ret = file.Write(fork_name, data, sizeof(SWAP_DISK_HEADER) + data->fBlobSz);
-
- if (ret.Error()) return NO;
+ ErrorOr<Int64> ret = file.Write(fork_name, data, sizeof(SwapDiskHdr) + data->fBlobSz);
- return YES;
+ return ret.Value() < kErrorSuccess;
}
/***********************************************************************************/
@@ -40,25 +37,23 @@ BOOL DiskSwapInterface::Write(const Char* fork_name, SizeT fork_name_len, SWAP_D
/// @param data the data packet length.
/// @return Whether the swap was fetched to disk, or not.
/***********************************************************************************/
-SWAP_DISK_HEADER* DiskSwapInterface::Read(const Char* fork_name, SizeT fork_name_len,
+SwapDiskHdr* IDiskSwap::Read(const Char* fork_name, SizeT fork_name_len,
SizeT data_len) {
if (!fork_name || !fork_name_len) return nullptr;
-
if (*fork_name == 0) return nullptr;
if (data_len > kSwapBlockMaxSize) return nullptr;
-
if (data_len == 0) return nullptr;
FileStream file(kSwapPageFilePath, kRestrictRB);
- VoidPtr blob = file.Read(fork_name, sizeof(SWAP_DISK_HEADER) + data_len);
+ VoidPtr blob = file.Read(fork_name, sizeof(SwapDiskHdr) + data_len);
- if (!blob || ((SWAP_DISK_HEADER*) blob)->fMagic != kSwapDiskHeaderMagic) {
+ if (!blob || (static_cast<SwapDiskHdr*>(blob))->fMagic != kSwapDiskHeaderMagic) {
if (blob) mm_free_ptr(blob);
return nullptr;
}
- return reinterpret_cast<SWAP_DISK_HEADER*>(blob);
+ return reinterpret_cast<SwapDiskHdr*>(blob);
}
} // namespace Kernel