From 5f813d49a08cf3c3f8cf6c422cfb6587df575f62 Mon Sep 17 00:00:00 2001 From: Jon Santmyer Date: Sat, 26 Sep 2026 17:11:50 -0400 Subject: add docs for syscalls. make syscall code kind-of cleaner --- arch/x86_64/hal/obj.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'arch/x86_64/hal/obj.c') diff --git a/arch/x86_64/hal/obj.c b/arch/x86_64/hal/obj.c index cb0e13d..9844a54 100644 --- a/arch/x86_64/hal/obj.c +++ b/arch/x86_64/hal/obj.c @@ -79,7 +79,7 @@ objdir_peeklocal( jove_owned_obj_t *objdir_obj, uint16_t entry) { - if(obj_gettype_linked(objdir_obj) != JOVE_OBJ_OBJDIR) { + if(obj_gettype(objdir_obj) != JOVE_OBJ_OBJDIR) { errno = EBADOBJ; return (jove_obj_t) { 0 }; } @@ -88,7 +88,7 @@ objdir_peeklocal( return (jove_obj_t) { 0 }; } - jove_objdir_t *objtab = obj_deref_linked(objdir_obj); + jove_objdir_t *objtab = obj_deref(objdir_obj); return objtab->entries[entry]; } @@ -97,14 +97,17 @@ objdir_getlocal( jove_owned_obj_t *objdir_obj, uint16_t entry) { - if(obj_gettype_linked(objdir_obj) != JOVE_OBJ_OBJDIR) { + while(obj_gettype(objdir_obj) == JOVE_OBJ_LINK) { + objdir_obj = link_deref(objdir_obj); + } + if(obj_gettype(objdir_obj) != JOVE_OBJ_OBJDIR) { reterr(EBADOBJ); } if(entry >= JOVE_OBJDIR_ENTRIES) { reterr(EBADPATH); } - jove_objdir_t *objtab = obj_deref_linked(objdir_obj); + jove_objdir_t *objtab = obj_deref(objdir_obj); return obj_take(&objtab->entries[entry]); } @@ -113,14 +116,17 @@ objdir_trygetlocal( jove_owned_obj_t *objdir_obj, uint16_t entry) { - if(obj_gettype_linked(objdir_obj) != JOVE_OBJ_OBJDIR) { + while(obj_gettype(objdir_obj) == JOVE_OBJ_LINK) { + objdir_obj = link_deref(objdir_obj); + } + if(obj_gettype(objdir_obj) != JOVE_OBJ_OBJDIR) { reterr(EBADOBJ); } if(entry >= JOVE_OBJDIR_ENTRIES) { reterr(EBADPATH); } - jove_objdir_t *objtab = obj_deref_linked(objdir_obj); + jove_objdir_t *objtab = obj_deref(objdir_obj); return obj_trytake(&objtab->entries[entry]); } -- cgit v1.2.3