summaryrefslogtreecommitdiffstats
path: root/sys/syscall.c
diff options
context:
space:
mode:
authorJon Santmyer <jon@jonsantmyer.com>2026-09-18 15:46:18 -0400
committerJon Santmyer <jon@jonsantmyer.com>2026-09-18 15:46:18 -0400
commit6da70f16c584ee897a4ac4f51d016a615c84042b (patch)
treece5458f9daa9f055340bfafc85d5197ce9aa678a /sys/syscall.c
parent13adbc58eb9f5eb5d6f0e4454bd005e9adbb47c8 (diff)
downloadjove-kernel-6da70f16c584ee897a4ac4f51d016a615c84042b.tar.gz
jove-kernel-6da70f16c584ee897a4ac4f51d016a615c84042b.tar.bz2
jove-kernel-6da70f16c584ee897a4ac4f51d016a615c84042b.zip
cleanup for real hw attempt
Diffstat (limited to 'sys/syscall.c')
-rw-r--r--sys/syscall.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/sys/syscall.c b/sys/syscall.c
index 5670bbb..f41f3f6 100644
--- a/sys/syscall.c
+++ b/sys/syscall.c
@@ -44,8 +44,8 @@ static const syscall_handle_t s_syscall_handles[128] = {
[JOVE_OBJ_OBJDIR] = _syscall_handle_objdir,
[JOVE_OBJ_PAGEDIR] = _syscall_handle_generic,
[JOVE_OBJ_PROCESSOR] = _syscall_handle_generic,
+ [JOVE_OBJ_HWMEMORY] = _syscall_handle_generic,
[JOVE_OBJ_PROCESS] = _syscall_handle_generic,
- [JOVE_OBJ_ACPI_TABLE] = _syscall_handle_generic,
[JOVE_OBJ_INT_HANDLE] = _syscall_handle_generic,
[JOVE_OBJ_INITRD_FILE] = _syscall_handle_generic,
[JOVE_OBJ_FRAMEBUFFER] = _syscall_handle_generic,
@@ -67,19 +67,19 @@ syscall_handler(uintmax_t message_path_raw, uint16_t message_pathlen)
jove_owned_obj_t *objdir = pcb_rootdir(pcb);
jove_owned_obj_t *message_obj = objdir_trygetobj(objdir, message_path, message_pathlen);
+ int sysret = 0;
+
if(message_obj == NULL) {
klogf("Process %i tried to call syscall with bad message %P : %s\n",
pcb_pid(pcb), message_path, message_pathlen, errstr(errno));
+ sysret = -errno;
goto release_premsg;
- return errno;
}
- int sysret = 0;
-
if(obj_gettype_linked(message_obj) != JOVE_OBJ_MESSAGE) {
klogf("Process %i tried to call syscall with invalid object %P\n",
pcb_pid(pcb), message_path, message_pathlen);
- sysret = EBADOBJ;
+ sysret = -EBADOBJ;
goto release_return;
}
@@ -91,7 +91,7 @@ syscall_handler(uintmax_t message_path_raw, uint16_t message_pathlen)
if(bytes_needed > messagelen) {
//Target path exceeds message length.
klogf("Process %i tried to call syscall with target path too big for message.\n", pcb_pid(pcb));
- sysret = ETOOSMALL;
+ sysret = -ETOOSMALL;
goto release_return;
}
jove_owned_obj_t *target = objdir_trygetobj(objdir, header->path, header->pathlen);
@@ -99,7 +99,7 @@ syscall_handler(uintmax_t message_path_raw, uint16_t message_pathlen)
//Could not find payload target in pcb rootdir.
klogf("Process %i tried to call syscall with bad target path %P : %s\n",
pcb_pid(pcb), header->path, header->pathlen, errstr(errno));
- sysret = errno;
+ sysret = -errno;
goto release_return;
}
@@ -114,7 +114,7 @@ syscall_handler(uintmax_t message_path_raw, uint16_t message_pathlen)
if(call_handle == NULL) {
klogf("Process %i tried to call syscall on object %P which doesn't support syscalls!\n",
pcb_pid(pcb), header->path, header->pathlen);
- sysret = EBADOBJ;
+ sysret = -EBADOBJ;
}else
sysret = call_handle(
pcb_obj, objdir, message_obj, target,