summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/src/FS/HeFS.cc
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-04-21 17:47:16 +0200
committerAmlal El Mahrouss <amlal@nekernel.org>2025-04-21 17:47:16 +0200
commit4f8fb9c70f814de796d61d7d85d4bf133afddafa (patch)
treee411bb18332d2e3a37e37a12b51017e366cad31d /dev/kernel/src/FS/HeFS.cc
parent58f969493aaa834f472402a2bebe1cd37094a6d2 (diff)
dev, kernel: Made HeFS use a RB-Tree traversal algorithm.
- ran format command. - a variation of a red-black tree traversal, with customized fallback mechanism. Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel/src/FS/HeFS.cc')
-rw-r--r--dev/kernel/src/FS/HeFS.cc23
1 files changed, 17 insertions, 6 deletions
diff --git a/dev/kernel/src/FS/HeFS.cc b/dev/kernel/src/FS/HeFS.cc
index 8d73b61e..2269896f 100644
--- a/dev/kernel/src/FS/HeFS.cc
+++ b/dev/kernel/src/FS/HeFS.cc
@@ -141,11 +141,22 @@ namespace Kernel
start = dir->fNext;
- if (start == 0)
- start = dir->fChild;
-
- if (start == 0)
- start = dir->fParent;
+ if (dir->fColor == kHeFSBlack)
+ {
+ if (dir->fParent != 0)
+ start = dir->fParent;
+ }
+ else
+ {
+ if (dir->fChild != 0)
+ start = dir->fChild;
+ else if (dir->fNext != 0)
+ start = dir->fNext;
+ else if (dir->fPrev != 0)
+ start = dir->fPrev;
+ else
+ start = dir->fParent;
+ }
}
delete dir;
@@ -173,7 +184,7 @@ namespace Kernel
NE_UNUSED(mnt);
NE_UNUSED(parent_dir_name);
NE_UNUSED(node);
-
+
return NO;
}
} // namespace Detail