summaryrefslogtreecommitdiffhomepage
path: root/Kernel
diff options
context:
space:
mode:
authorAmlal <amlal@zka.com>2024-07-14 00:37:06 +0200
committerAmlal <amlal@zka.com>2024-07-14 00:37:06 +0200
commitb038c3eff8c80be2e6e10bea16634523fff4a6b5 (patch)
treed4c9b5c1931d6e5029243446b66e8edb608072b8 /Kernel
parent062ba0a060929c18a2734835cd426e3d808093b7 (diff)
[IMP]
- IsUndefined returns const bool& now. - Replace kUndefined with kNull now. - Remove ML_ from macros in newstd.hxx. - Rename NSyscall to NSyscallInterface, which is a ref counted class now. - Rename MBCIType to PowerID - Update ToDos. - Update NewFS root catalog name. - Fix JSON 'null' initialization. - Add Json to variant object. - Replace kPointer with kBlob in variant kinds. - Add Leak() method to variant. Signed-off-by: Amlal <amlal@zka.com>
Diffstat (limited to 'Kernel')
-rw-r--r--Kernel/Docs/TODO-LIST.md10
-rw-r--r--Kernel/FSKit/NewFS.hxx2
-rw-r--r--Kernel/KernelKit/DebugOutput.hpp2
-rw-r--r--Kernel/NewKit/Json.hxx18
-rw-r--r--Kernel/NewKit/Variant.hpp20
-rw-r--r--Kernel/Sources/FS/NewFS.cxx4
-rw-r--r--Kernel/Sources/Json.cxx2
-rw-r--r--Kernel/Sources/Main.cxx8
-rw-r--r--Kernel/Sources/Variant.cxx10
9 files changed, 48 insertions, 28 deletions
diff --git a/Kernel/Docs/TODO-LIST.md b/Kernel/Docs/TODO-LIST.md
index ed7b1cf9..62cc886c 100644
--- a/Kernel/Docs/TODO-LIST.md
+++ b/Kernel/Docs/TODO-LIST.md
@@ -13,11 +13,13 @@
- AHCI driver [ WiP ]
- Context switch x87/SSE/AVX registers [ X ]
- Framebuffer [ X ]
-- AHCI support [ ]
-- Make installer [ ]
+- ATA support [ X ]
+- Make installer [ X ]
Status:
-newosldr: Need to boot from EPM partition.
+newosldr: Need to boot from EPM partition. [ X ]
<br>
-NewKernel: New Filesystem in progress.
+NewKernel: New Filesystem is done. [ X ]
+
+**Refer to Jira!**
diff --git a/Kernel/FSKit/NewFS.hxx b/Kernel/FSKit/NewFS.hxx
index 25b85ee0..27ce95d5 100644
--- a/Kernel/FSKit/NewFS.hxx
+++ b/Kernel/FSKit/NewFS.hxx
@@ -71,7 +71,7 @@ default.
#define kNewFSSeparator '\\'
#define kNewFSUpDir ".."
-#define kNewFSRoot "C:\\"
+#define kNewFSRoot "\\"
#define kNewFSLF '\r'
#define kNewFSEOF (-1)
diff --git a/Kernel/KernelKit/DebugOutput.hpp b/Kernel/KernelKit/DebugOutput.hpp
index 10895c1a..02b73fc9 100644
--- a/Kernel/KernelKit/DebugOutput.hpp
+++ b/Kernel/KernelKit/DebugOutput.hpp
@@ -205,4 +205,4 @@ namespace Kernel
#endif // ifdef kcout
#define kcout TerminalDevice::The()
-#define endl end_line()
+#define endl kcout << Kernel::end_line()
diff --git a/Kernel/NewKit/Json.hxx b/Kernel/NewKit/Json.hxx
index 4b994606..9371bf15 100644
--- a/Kernel/NewKit/Json.hxx
+++ b/Kernel/NewKit/Json.hxx
@@ -16,7 +16,8 @@
#include <NewKit/Utils.hpp>
#define cMaxJsonPath 4096
-#define cUndefinedLen 32
+#define cJSONLen 32
+#define cJSONNull "null"
namespace Kernel
{
@@ -25,10 +26,13 @@ namespace Kernel
{
public:
explicit JsonType()
- : Kernel::JsonType(cUndefinedLen, cUndefinedLen)
{
- this->AsKey() += "undefined";
- this->AsValue() += "undefined";
+ auto len = cJSONLen;
+ StringView key = StringView(len);
+ key += cJSONNull;
+
+ this->AsKey() = key;
+ this->AsValue() = key;
}
explicit JsonType(SizeT lhsLen, SizeT rhsLen)
@@ -40,7 +44,7 @@ namespace Kernel
NEWOS_COPY_DEFAULT(JsonType);
- Bool IsUndefined() { return fUndefined; }
+ const Bool& IsUndefined() { return fUndefined; }
private:
Bool fUndefined; // is this instance undefined?
@@ -62,7 +66,7 @@ namespace Kernel
return fValue;
}
- static JsonType kUndefined;
+ static JsonType kNull;
};
/// @brief Json stream reader helper.
@@ -71,7 +75,7 @@ namespace Kernel
STATIC JsonType In(const Char* full_array)
{
if (full_array[0] != '{')
- return JsonType::kUndefined;
+ return JsonType::kNull;
SizeT len = rt_string_len(full_array);
Boolean probe_value = false;
diff --git a/Kernel/NewKit/Variant.hpp b/Kernel/NewKit/Variant.hpp
index 27cd29cc..c118eda1 100644
--- a/Kernel/NewKit/Variant.hpp
+++ b/Kernel/NewKit/Variant.hpp
@@ -8,6 +8,7 @@
#include <NewKit/Defines.hpp>
#include <NewKit/String.hpp>
+#include <NewKit/Json.hxx>
namespace Kernel
{
@@ -17,8 +18,9 @@ namespace Kernel
enum class VariantKind
{
kString,
- kPointer,
- kUndefined
+ kBlob,
+ kNull,
+ kJson,
};
public:
@@ -35,20 +37,28 @@ namespace Kernel
: fPtr((voidPtr)stringView), fKind(VariantKind::kString)
{
}
+
+ explicit Variant(JsonType* json)
+ : fPtr((voidPtr)json), fKind(VariantKind::kJson)
+ {
+ }
+
explicit Variant(nullPtr)
- : fPtr(nullptr), fKind(VariantKind::kUndefined)
+ : fPtr(nullptr), fKind(VariantKind::kNull)
{
}
+
explicit Variant(voidPtr ptr)
- : fPtr(ptr), fKind(VariantKind::kPointer)
+ : fPtr(ptr), fKind(VariantKind::kBlob)
{
}
public:
const Char* ToString();
+ VoidPtr Leak();
private:
voidPtr fPtr{nullptr};
- VariantKind fKind{VariantKind::kUndefined};
+ VariantKind fKind{VariantKind::kNull};
};
} // namespace Kernel
diff --git a/Kernel/Sources/FS/NewFS.cxx b/Kernel/Sources/FS/NewFS.cxx
index 85926ff9..f796dd97 100644
--- a/Kernel/Sources/FS/NewFS.cxx
+++ b/Kernel/Sources/FS/NewFS.cxx
@@ -39,8 +39,8 @@ Kernel::SizeT drv_std_get_drv_size();
/***********************************************************************************/
/// This file implements the New File System.
/// New File System implements a B-Tree based algortihm.
-/// C:\\
-/// \\Path1\\ /\\ath2\\
+/// \\
+/// \\Path1\\ \\ath2\\
/// \\readme.rtf \\ListContents.pef \\readme.lnk <-- symlink.
/// \\Path1\\readme.rtf
/***********************************************************************************/
diff --git a/Kernel/Sources/Json.cxx b/Kernel/Sources/Json.cxx
index 6ecd8e47..ffec19ce 100644
--- a/Kernel/Sources/Json.cxx
+++ b/Kernel/Sources/Json.cxx
@@ -9,4 +9,4 @@
using namespace Kernel;
/// @brief Undefined object, is null in length.
-cInitObject(Kernel::JsonType::kUndefined, Kernel::JsonType);
+cInitObject(Kernel::JsonType::kNull, Kernel::JsonType);
diff --git a/Kernel/Sources/Main.cxx b/Kernel/Sources/Main.cxx
index 8c80d70c..c30b26e6 100644
--- a/Kernel/Sources/Main.cxx
+++ b/Kernel/Sources/Main.cxx
@@ -58,8 +58,8 @@ namespace Kernel::Detail
constexpr auto cFolderInfo = "META-INF";
const auto cDirCount = 9;
const char* cDirStr[cDirCount] = {
- "C:\\Boot\\", "C:\\System\\", "C:\\Support\\", "C:\\Applications\\",
- "C:\\Users\\", "C:\\Library\\", "C:\\Mount\\", "C:\\DCIM\\", "C:\\Storage\\"};
+ "\\Boot\\", "\\System\\", "\\Support\\", "\\Applications\\",
+ "\\Users\\", "\\Library\\", "\\Mount\\", "\\DCIM\\", "\\Storage\\"};
for (Kernel::SizeT dirIndx = 0UL; dirIndx < cDirCount; ++dirIndx)
{
@@ -119,7 +119,7 @@ namespace Kernel::Detail
}
NewCatalog* catalogDisk =
- this->fNewFS->GetParser()->GetCatalog("C:\\Mount\\SIM:");
+ this->fNewFS->GetParser()->GetCatalog("\\Mount\\SIM:");
const Kernel::Char* cSrcName = "DISK-INF";
@@ -130,7 +130,7 @@ namespace Kernel::Detail
else
{
catalogDisk =
- (NewCatalog*)this->Leak()->CreateAlias("C:\\Mount\\SIM:");
+ (NewCatalog*)this->Leak()->CreateAlias("\\Mount\\SIM:");
Kernel::StringView diskFolder(kNewFSSectorSz);
diff --git a/Kernel/Sources/Variant.cxx b/Kernel/Sources/Variant.cxx
index 9788f18c..7dc71df5 100644
--- a/Kernel/Sources/Variant.cxx
+++ b/Kernel/Sources/Variant.cxx
@@ -12,13 +12,17 @@ namespace Kernel
{
switch (fKind)
{
+ case VariantKind::kJson:
+ return ("Class:{Json}");
case VariantKind::kString:
return ("Class:{String}");
- case VariantKind::kPointer:
- return ("Class:{Pointer}");
+ case VariantKind::kBlob:
+ return ("Class:{Blob}");
default:
- return ("Class:{Undefined}");
+ return ("Class:{Null}");
}
}
+ /// @brief Leak variant's instance.
+ VoidPtr Variant::Leak() { return fPtr; }
} // namespace Kernel