summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/src
diff options
context:
space:
mode:
Diffstat (limited to 'dev/kernel/src')
-rw-r--r--dev/kernel/src/FS/HeFS.cc21
-rw-r--r--dev/kernel/src/KString.cc2
-rw-r--r--dev/kernel/src/Utils.cc10
3 files changed, 23 insertions, 10 deletions
diff --git a/dev/kernel/src/FS/HeFS.cc b/dev/kernel/src/FS/HeFS.cc
index 0344309e..142ddbea 100644
--- a/dev/kernel/src/FS/HeFS.cc
+++ b/dev/kernel/src/FS/HeFS.cc
@@ -4,7 +4,7 @@
------------------------------------------- */
-#ifdef __FSKIT_INCLUDES_HeFS__
+#ifdef __FSKIT_INCLUDES_HEFS__
#include <modules/AHCI/AHCI.h>
#include <modules/ATA/ATA.h>
@@ -22,12 +22,12 @@ namespace Kernel
{
namespace Detail
{
- STATIC HeFS_INDEX_NODE* hefs_get_index_node(HeFS_BOOT_NODE* root, DriveTrait* mnt, const Utf16Char* dir_name, const Utf16Char* file_name, UInt8 kind) noexcept
+ STATIC HEFS_INDEX_NODE* hefs_get_index_node(HEFS_BOOT_NODE* root, DriveTrait* mnt, const Utf16Char* dir_name, const Utf16Char* file_name, UInt8 kind) noexcept
{
if (root)
{
- HeFS_INDEX_NODE* node = new HeFS_INDEX_NODE();
- HeFS_INDEX_NODE_DIRECTORY* dir = new HeFS_INDEX_NODE_DIRECTORY();
+ HEFS_INDEX_NODE* node = new HEFS_INDEX_NODE();
+ HEFS_INDEX_NODE_DIRECTORY* dir = new HEFS_INDEX_NODE_DIRECTORY();
if (!node)
{
@@ -45,7 +45,7 @@ namespace Kernel
if (hop_watch++ > 100)
{
kout << "Error: Hop watch exceeded.\r";
-
+
break;
}
@@ -56,7 +56,7 @@ namespace Kernel
}
mnt->fPacket.fPacketLba = start;
- mnt->fPacket.fPacketSize = sizeof(HeFS_INDEX_NODE_DIRECTORY);
+ mnt->fPacket.fPacketSize = sizeof(HEFS_INDEX_NODE_DIRECTORY);
mnt->fPacket.fPacketContent = dir;
mnt->fInput(mnt->fPacket);
@@ -81,7 +81,7 @@ namespace Kernel
if (dir->fIndexNodeStart[inode_index] != 0)
{
mnt->fPacket.fPacketLba = dir->fIndexNodeStart[inode_index];
- mnt->fPacket.fPacketSize = sizeof(HeFS_INDEX_NODE);
+ mnt->fPacket.fPacketSize = sizeof(HEFS_INDEX_NODE);
mnt->fPacket.fPacketContent = node;
mnt->fInput(mnt->fPacket);
@@ -103,7 +103,7 @@ namespace Kernel
else if (dir->fIndexNodeEnd[inode_index] != 0)
{
mnt->fPacket.fPacketLba = dir->fIndexNodeEnd[inode_index];
- mnt->fPacket.fPacketSize = sizeof(HeFS_INDEX_NODE);
+ mnt->fPacket.fPacketSize = sizeof(HEFS_INDEX_NODE);
mnt->fPacket.fPacketContent = node;
mnt->fInput(mnt->fPacket);
@@ -151,4 +151,7 @@ namespace Kernel
} // namespace Detail
} // namespace Kernel
-#endif // ifdef __FSKIT_INCLUDES_HeFS__
+/// @note HeFS will allocate inodes and ind in advance, to avoid having to allocate them in real-time.
+/// @note This is certainly take longer to format a disk with it, but worth-it in the long run.
+
+#endif // ifdef __FSKIT_INCLUDES_HEFS__
diff --git a/dev/kernel/src/KString.cc b/dev/kernel/src/KString.cc
index 2f81ad3d..cb21e003 100644
--- a/dev/kernel/src/KString.cc
+++ b/dev/kernel/src/KString.cc
@@ -146,7 +146,7 @@ namespace Kernel
/// @note This is unsafe!!!
bool KStringBuilder::Equals(const Utf16Char* lhs, const Utf16Char* rhs)
{
- for (Size index = 0; index[rhs] != 0; ++index)
+ for (Size index = 0; index < wrt_string_len(rhs); ++index)
{
if (rhs[index] != lhs[index])
return false;
diff --git a/dev/kernel/src/Utils.cc b/dev/kernel/src/Utils.cc
index f5e61ddf..10c5d714 100644
--- a/dev/kernel/src/Utils.cc
+++ b/dev/kernel/src/Utils.cc
@@ -42,6 +42,16 @@ namespace Kernel
return len;
}
+
+ Size wrt_string_len(const Utf16Char* str)
+ {
+ SizeT len{0};
+
+ while (str[len] != 0)
+ ++len;
+
+ return len;
+ }
Size rt_string_len(const Char* ptr)
{