summaryrefslogtreecommitdiffstats
path: root/arch/x86_64/hal/obj.c
diff options
context:
space:
mode:
authorJon Santmyer <jon@jonsantmyer.com>2026-10-09 10:24:41 -0400
committerJon Santmyer <jon@jonsantmyer.com>2026-10-09 10:24:41 -0400
commitcc23ea5a4b38807e79aceb23e6f43e965926618f (patch)
tree90142bb44186f4dad7bbd82d3d53655b835c822b /arch/x86_64/hal/obj.c
parent434ddcd907832b1febc7d70e4faa52109c7eb3bd (diff)
downloadjove-kernel-cc23ea5a4b38807e79aceb23e6f43e965926618f.tar.gz
jove-kernel-cc23ea5a4b38807e79aceb23e6f43e965926618f.tar.bz2
jove-kernel-cc23ea5a4b38807e79aceb23e6f43e965926618f.zip
add basic scheduler logic. rename init rootdir indexes
Diffstat (limited to 'arch/x86_64/hal/obj.c')
-rw-r--r--arch/x86_64/hal/obj.c99
1 files changed, 5 insertions, 94 deletions
diff --git a/arch/x86_64/hal/obj.c b/arch/x86_64/hal/obj.c
index 110351c..b3658b2 100644
--- a/arch/x86_64/hal/obj.c
+++ b/arch/x86_64/hal/obj.c
@@ -28,6 +28,11 @@ obj_trytake(jove_obj_t *obj)
return (jove_owned_obj_t*)obj;
}
+jove_obj_t *obj_asunowned(jove_owned_obj_t *obj)
+{
+ return (jove_obj_t*)obj;
+}
+
jove_obj_t*
obj_release(jove_owned_obj_t *obj)
{
@@ -74,97 +79,3 @@ obj_setvalue(jove_owned_obj_t *obj, uintmax_t value)
obj->locked.value = value & 0x00007FFFFFFFFFFFULL;
}
-jove_obj_t
-objdir_peeklocal(
- jove_owned_obj_t *objdir_obj,
- uint16_t entry)
-{
- if(obj_gettype(objdir_obj) != JOVE_OBJ_OBJDIR) {
- errno = EBADOBJ;
- return (jove_obj_t) { 0 };
- }
- if(entry >= JOVE_OBJDIR_ENTRIES) {
- errno = EBADPATH;
- return (jove_obj_t) { 0 };
- }
-
- jove_objdir_t *objtab = obj_deref(objdir_obj);
- return objtab->entries[entry];
-}
-
-jove_owned_obj_t*
-objdir_getlocal(
- jove_owned_obj_t *objdir_obj,
- uint16_t entry)
-{
- if(obj_gettype(objdir_obj) != JOVE_OBJ_OBJDIR) {
- reterr(EBADOBJ);
- }
- if(entry >= JOVE_OBJDIR_ENTRIES) {
- reterr(EBADPATH);
- }
-
- jove_objdir_t *objtab = obj_deref(objdir_obj);
- return obj_take(&objtab->entries[entry]);
-}
-
-jove_owned_obj_t*
-objdir_trygetlocal(
- jove_owned_obj_t *objdir_obj,
- uint16_t entry)
-{
- if(obj_gettype(objdir_obj) != JOVE_OBJ_OBJDIR) {
- reterr(EBADOBJ);
- }
- if(entry >= JOVE_OBJDIR_ENTRIES) {
- reterr(EBADPATH);
- }
-
- jove_objdir_t *objtab = obj_deref(objdir_obj);
- return obj_trytake(&objtab->entries[entry]);
-}
-
-jove_owned_obj_t*
-objdir_getobj(
- jove_owned_obj_t *objdir_obj,
- const uint16_t *path,
- size_t path_len)
-{
- errno = 0;
- if(path_len == 0) {
- return objdir_obj;
- }
- {
- jove_owned_obj_t *child_objdir = objdir_getlocal(objdir_obj, path[0]);
- if(child_objdir == 0) {
- reterr(EBADPATH);
- }
-
- jove_owned_obj_t *target_obj = objdir_getobj(child_objdir, path + 1, path_len - 1);
- obj_release(child_objdir);
- return target_obj;
- }
-}
-
-jove_owned_obj_t*
-objdir_trygetobj(
- jove_owned_obj_t *objdir_obj,
- const uint16_t *path,
- size_t path_len)
-{
- errno = 0;
- if(path_len == 0) {
- return objdir_obj;
- }
- {
- jove_owned_obj_t *child_objdir = objdir_trygetlocal(objdir_obj, path[0]);
- if(child_objdir == 0) {
- return 0;
- }
-
- jove_owned_obj_t *target_obj = objdir_trygetobj(child_objdir, path + 1, path_len - 1);
- obj_release(child_objdir);
- return target_obj;
- }
-}
-