summaryrefslogtreecommitdiffstats
path: root/sys/syscall_pagedir.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/syscall_pagedir.c')
-rw-r--r--sys/syscall_pagedir.c27
1 files changed, 12 insertions, 15 deletions
diff --git a/sys/syscall_pagedir.c b/sys/syscall_pagedir.c
index 961c477..7b8f315 100644
--- a/sys/syscall_pagedir.c
+++ b/sys/syscall_pagedir.c
@@ -28,10 +28,9 @@ s_get_untyped(
"Message too small for untyped path.");
errno = 0;
- jove_perm_obj_t untyped = link_try_traverse(
- lockstack_push(lockstack, objdir_trygetobj(
- objdir, payload->untyped_path, payload->untyped_pathlen)),
- lockstack);
+ jove_perm_obj_t untyped = link_try_traverse_objdir(
+ objdir, lockstack, payload->untyped_pathlen, payload->untyped_path);
+
if(errno) {
kprintf("%s: Untyped obj failed for the reason: %s\n", __func__, errstr(errno));
return errno;
@@ -81,10 +80,9 @@ s_syscall_pagedir_unmap(
CHECK_TOOSMALL(bytes_needed, payload_bytes,
"Message too small for none path");
- jove_perm_obj_t none = link_try_traverse(
- lockstack_push(lockstack, objdir_trygetobj(
- objdir, payload->none_path, payload->none_pathlen)),
- lockstack);
+ jove_perm_obj_t none = link_try_traverse_objdir(
+ objdir, lockstack, payload->none_pathlen, payload->none_path);
+
if(errno) {
kprintf("%s: None obj retrieval failed for the reason: %s\n",
__func__, errstr(errno));
@@ -163,15 +161,14 @@ s_syscall_pagedir_map_shmem(
bytes_needed += payload->shmem_pathlen << 1;
CHECK_TOOSMALL(bytes_needed, payload_bytes,
- "Message too small for untyped path.");
+ "Message too small for shared memory path.");
errno = 0;
- jove_perm_obj_t shmem = link_try_traverse(
- lockstack_push(lockstack, objdir_trygetobj(
- objdir, payload->shmem_path, payload->shmem_pathlen)),
- lockstack);
+ jove_perm_obj_t shmem = link_try_traverse_objdir(
+ objdir, lockstack, payload->shmem_pathlen, payload->shmem_path);
if(errno) {
- klogf("Shared memory obj failed for the reason: %s\n", errstr(errno));
+ klogf("Unable to retrieve shared memory object %P : %s\n",
+ payload->shmem_path, payload->shmem_pathlen, errstr(errno));
return errno;
}
@@ -179,7 +176,7 @@ s_syscall_pagedir_map_shmem(
"Shared memory path does not point to a shared memory object.");
uintmax_t shmem_value = obj_getvalue(shmem.obj);
- uint8_t shmem_pages = shmem_value & 0xFF;
+ uint8_t shmem_pages = shmem_value & 0xFFF;
if(payload->page_offset >= shmem_pages) {
klogf("Page offset goes beyond size of shared memory object: (%i >= %i)\n",