summaryrefslogtreecommitdiffstats
path: root/lib/objdir.c
diff options
context:
space:
mode:
authorJon Santmyer <jon@jonsantmyer.com>2025-07-30 14:32:01 -0400
committerJon Santmyer <jon@jonsantmyer.com>2025-07-30 14:32:01 -0400
commitb905869a35f062a4e5072f10bec3a2ba3db0e365 (patch)
tree0666691804878857b4bb07daca8a54f5ddb8ae0b /lib/objdir.c
downloadjove-kernel-b905869a35f062a4e5072f10bec3a2ba3db0e365.tar.gz
jove-kernel-b905869a35f062a4e5072f10bec3a2ba3db0e365.tar.bz2
jove-kernel-b905869a35f062a4e5072f10bec3a2ba3db0e365.zip
working userland with some invoke syscalls
Diffstat (limited to 'lib/objdir.c')
-rw-r--r--lib/objdir.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/objdir.c b/lib/objdir.c
new file mode 100644
index 0000000..665da4c
--- /dev/null
+++ b/lib/objdir.c
@@ -0,0 +1,15 @@
+#include "object.h"
+
+objdir_entry_t*
+objdir_seek(objdir_t *dir, uintmax_t index)
+{
+ uint8_t tli = index & 0xFF;
+ if(tli == 0) return &dir->self;
+
+ objdir_entry_t *entry = &dir->entries[tli];
+ if(entry->type == KO_OBJECT_DIRECTORY) {
+ if(tli == index) return entry;
+ return objdir_seek((objdir_t*)entry->data, index >> 8);
+ }
+ return entry;
+}