diff options
| -rw-r--r-- | src/kernel/NeKit/Domain.h (renamed from src/kernel/NeKit/Nullable.h) | 11 | ||||
| -rw-r--r-- | src/kernel/NeKit/Function.h | 2 | ||||
| -rw-r--r-- | src/kernel/NeKit/Ref.h | 2 | ||||
| -rw-r--r-- | src/kernel/NeKit/TOML.h | 2 | ||||
| -rw-r--r-- | src/kernel/NeKit/Variant.h | 6 | ||||
| -rw-r--r-- | src/kernel/NeKit/Vettable.h | 8 | ||||
| -rw-r--r-- | src/kernel/SwapKit/DiskSwap.h | 22 | ||||
| -rw-r--r-- | src/kernel/src/BitMapMgr.cc | 10 | ||||
| -rw-r--r-- | src/kernel/src/Swap/DiskSwap.cc | 19 |
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 |
