summaryrefslogtreecommitdiffstats
path: root/syscall
diff options
context:
space:
mode:
authorJon Santmyer <jon@jonsantmyer.com>2025-08-11 19:04:26 -0400
committerJon Santmyer <jon@jonsantmyer.com>2025-08-11 19:04:26 -0400
commitf466364b8a3858e7b3f19258d142851cb4a7e6d6 (patch)
treea22819dc585c44a6dd0cdd5c6856420443a031eb /syscall
parentc4f8ef91f18d854a4ede7a94e95b2eab898d6963 (diff)
downloadjove-kernel-main.tar.gz
jove-kernel-main.tar.bz2
jove-kernel-main.zip
remove _initData, replace with enum indexesmain
Diffstat (limited to 'syscall')
-rw-r--r--syscall/invoke_objdir.c36
1 files changed, 8 insertions, 28 deletions
diff --git a/syscall/invoke_objdir.c b/syscall/invoke_objdir.c
index 9cd3f32..97dd126 100644
--- a/syscall/invoke_objdir.c
+++ b/syscall/invoke_objdir.c
@@ -5,25 +5,6 @@
#include "print.h"
static int
-s_handle_invoke_objdir_nmemb(
- objdir_t *root_dir,
- objdir_t *target_dir,
- uint8_t *payload,
- size_t payload_at
- )
-{
- uint8_t *dest;
- SYSCALL_PAYLOAD_TAKEP(payload, payload_at, dest, uint8_t);
-
- *dest = target_dir->self.data;
-
-#ifdef DBG_SYSCALL
- klogf("objdir_nmemb %p[%i]\n", dest, *dest);
-#endif
- return KE_OK;
-}
-
-static int
s_handle_invoke_objdir_getmemb(
objdir_t *root_dir,
objdir_t *target_dir,
@@ -46,7 +27,7 @@ s_handle_invoke_objdir_getmemb(
}
static int
-s_handle_invoke_objdir_lastfree(
+s_handle_invoke_objdir_lastmemb(
objdir_t *root_dir,
objdir_t *target_dir,
uint8_t *payload,
@@ -56,19 +37,18 @@ s_handle_invoke_objdir_lastfree(
path_byte_t *dest;
SYSCALL_PAYLOAD_TAKEP(payload, payload_at, dest, path_byte_t);
- for(int i = 0; i < 256; i++) {
- if(target_dir->entries[i].type == KO_NONE) {
- *dest = (path_byte_t)i;
- return KE_OK;
- }
+ uint8_t lastfull = 0;
+ for(int i = 1; i < 256; i++) {
+ if(target_dir->entries[i].type != KO_NONE) lastfull = i;
}
- return -KE_FULL;
+
+ *dest = lastfull;
+ return 0;
}
static int (*s_invoke_handles[])(objdir_t*, objdir_t*, uint8_t*, size_t) = {
- [INVOKE_OBJDIR_NMEMB] = s_handle_invoke_objdir_nmemb,
[INVOKE_OBJDIR_GETMEMB] = s_handle_invoke_objdir_getmemb,
- [INVOKE_OBJDIR_LASTFREE] = s_handle_invoke_objdir_lastfree
+ [INVOKE_OBJDIR_LASTMEMB] = s_handle_invoke_objdir_lastmemb
};
static size_t s_invoke_handles_count = sizeof(s_invoke_handles) / sizeof(void*);