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 --- sys/link.h | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) (limited to 'sys/link.h') diff --git a/sys/link.h b/sys/link.h index 37fa1e8..3f7331f 100644 --- a/sys/link.h +++ b/sys/link.h @@ -1,3 +1,4 @@ +#include "sys/lockstack.h" #ifndef _JOVE_SYS_LINK_HPP #define _JOVE_SYS_LINK_HPP 1 @@ -5,17 +6,28 @@ struct obj_link { - size_t refcount; jove_obj_t obj; + uint16_t refcount; + uint8_t permissions; }; -void *obj_deref_linked(jove_owned_obj_t *obj); -uint8_t obj_gettype_linked(jove_owned_obj_t *obj); -uint64_t obj_getvalue_linked(jove_owned_obj_t *obj); +typedef struct obj_perm_group +{ + jove_owned_obj_t *obj; + uint8_t permissions; +} jove_perm_obj_t; + +uint8_t link_gettype(jove_owned_obj_t *obj); +uint8_t link_getperm(jove_owned_obj_t *link); +uint64_t link_getvalue(jove_owned_obj_t *obj); jove_owned_obj_t *link_deref(jove_owned_obj_t *link); -jove_obj_t link_unlink(jove_owned_obj_t *link); +jove_owned_obj_t *link_try_deref(jove_owned_obj_t *link); -jove_owned_obj_t *link_new(jove_obj_t *tgt, jove_owned_obj_t *dst); +jove_perm_obj_t link_traverse(jove_owned_obj_t *link, lockstack_t *lockstack); +jove_perm_obj_t link_try_traverse(jove_owned_obj_t *link, lockstack_t *lockstack); + +jove_obj_t link_unlink(jove_owned_obj_t *link); +jove_owned_obj_t *link_new(jove_obj_t *tgt, jove_owned_obj_t *dst, uint16_t permissions); #endif -- cgit v1.2.3