From cb2f383f45dda8d1cdcef0b87fe4c70243659701 Mon Sep 17 00:00:00 2001 From: Amlal Date: Sun, 27 Apr 2025 17:30:36 +0200 Subject: dev, kernel: AHCI, HeFS filesystem, SysChk, and BootSATA improvements. what? - AHCI now writes to disk, forgot to do it. - Codebase's architecutre has been used to reuse the Generic+AHCI driver in SysChk for AHCI. (tradeoff is 256K in size instead of 36K) - DriveMgr now detects EPM. - And HeFS is still being worked on. Signed-off-by: Amlal --- dev/kernel/src/FS/HeFS.cc | 14 +++++++------- dev/kernel/src/Utils.cc | 7 +++++++ 2 files changed, 14 insertions(+), 7 deletions(-) (limited to 'dev/kernel/src') diff --git a/dev/kernel/src/FS/HeFS.cc b/dev/kernel/src/FS/HeFS.cc index eb6e6fc1..a27712e3 100644 --- a/dev/kernel/src/FS/HeFS.cc +++ b/dev/kernel/src/FS/HeFS.cc @@ -737,7 +737,7 @@ namespace Detail { auto old_start = start; hefsi_traverse_tree(dir, root, start); - + if (start == 0 || start == old_start) break; } @@ -824,7 +824,7 @@ _Output Bool HeFileSystemParser::Format(_Input _Output DriveTrait* drive, _Input root->fSectorSize = drive->fSectorSz; - root->fStartIND = drive->fLbaStart + sizeof(HEFS_BOOT_NODE) + sizeof(HEFS_BOOT_NODE); + root->fStartIND = drive->fLbaStart + sizeof(HEFS_BOOT_NODE); root->fEndIND = drive->fLbaEnd; root->fINDCount = 0; @@ -870,7 +870,7 @@ _Output Bool HeFileSystemParser::Format(_Input _Output DriveTrait* drive, _Input /// @note this allocates 4 ind at format. SizeT cnt = 4UL; - Lba next = drive->fLbaStart + sizeof(HEFS_BOOT_NODE) + sizeof(HEFS_BOOT_NODE); + Lba next = root->fStartIND + sizeof(HEFS_BOOT_NODE); HEFS_INDEX_NODE_DIRECTORY* index_node = new HEFS_INDEX_NODE_DIRECTORY(); @@ -889,11 +889,11 @@ _Output Bool HeFileSystemParser::Format(_Input _Output DriveTrait* drive, _Input index_node->fChecksum = 0; index_node->fIndexNodeChecksum = 0; - index_node->fUID = 0; - index_node->fGID = 0; - index_node->fMode = 0; + index_node->fUID = 0; + index_node->fGID = 0; + index_node->fMode = 0; - index_node->fColor = kHeFSBlack; + index_node->fColor = kHeFSBlack; index_node->fChild = 0; index_node->fParent = 0; index_node->fNext = 0; diff --git a/dev/kernel/src/Utils.cc b/dev/kernel/src/Utils.cc index eed6f076..ea0ff7a7 100644 --- a/dev/kernel/src/Utils.cc +++ b/dev/kernel/src/Utils.cc @@ -179,6 +179,8 @@ Char* rt_string_has_char(Char* str, Char chr) { } } // namespace Kernel +////// @note These symbols were written to satisfy gcc, clang and other compiler complaints. + EXTERN_C void* memset(void* dst, int c, long long unsigned int len) { return Kernel::rt_set_memory(dst, c, len); } @@ -187,3 +189,8 @@ EXTERN_C void* memcpy(void* dst, const void* src, long long unsigned int len) { Kernel::rt_copy_memory(const_cast(src), dst, len); return dst; } + +EXTERN_C Kernel::Int32 strcmp(const char* dst, const char* src) { + return Kernel::rt_string_cmp(dst, src, Kernel::rt_string_len(dst)); +} + -- cgit v1.2.3