diff options
| -rw-r--r-- | common/uapi/dispatch.c | 6 | ||||
| -rw-r--r-- | common/uapi/proc.c | 15 | ||||
| -rw-r--r-- | include/apos/syscalls.h | 22 | ||||
| -rw-r--r-- | include/apos/uapi.h | 2 |
4 files changed, 20 insertions, 25 deletions
diff --git a/common/uapi/dispatch.c b/common/uapi/dispatch.c index 1e72e77..65e02a3 100644 --- a/common/uapi/dispatch.c +++ b/common/uapi/dispatch.c @@ -31,15 +31,14 @@ static const sys_t syscall_table[] = { [SYS_FORK] = sys_fork, [SYS_EXEC] = sys_exec, [SYS_SIGNAL] = sys_signal, - [SYS_SWITCH] = sys_switch, + [SYS_SWAP] = sys_swap, /* conf */ [SYS_CONF] = sys_conf, [SYS_POWEROFF] = sys_poweroff, }; -SYSCALL_DEFINE0(noop)() -{ +SYSCALL_DEFINE0(noop)(){ return (struct sys_ret){ OK, 0 }; } @@ -47,6 +46,7 @@ struct sys_ret syscall_dispatch(sys_arg_t syscall, sys_arg_t a, sys_arg_t b, sys_arg_t c, sys_arg_t d) { sys_t call = syscall_table[syscall]; + if (!call) return (struct sys_ret){ ERR_INVAL, 0 }; diff --git a/common/uapi/proc.c b/common/uapi/proc.c index 43e825d..e36c62e 100644 --- a/common/uapi/proc.c +++ b/common/uapi/proc.c @@ -5,8 +5,7 @@ #include <apos/uapi.h> -SYSCALL_DEFINE0(create)() -{ +SYSCALL_DEFINE0(create)(){ return (struct sys_ret){ OK, 0 }; } @@ -20,25 +19,21 @@ SYSCALL_DEFINE0(create)() * would have to periodically ask the kernel about all threads it is aware of * via sys_sync. Dunno. */ -SYSCALL_DEFINE0(fork)() -{ +SYSCALL_DEFINE0(fork)(){ return (struct sys_ret){ OK, 0 }; } -SYSCALL_DEFINE3(exec)(sys_arg_t bin, sys_arg_t argc, sys_arg_t argv) -{ +SYSCALL_DEFINE3(exec)(sys_arg_t bin, sys_arg_t argc, sys_arg_t argv){ /* TODO: execute new process, probably with more sensible argc passing */ return (struct sys_ret){ OK, 0 }; } -SYSCALL_DEFINE2(signal)(sys_arg_t tid, sys_arg_t signal) -{ +SYSCALL_DEFINE2(signal)(sys_arg_t tid, sys_arg_t signal){ /* TODO: signals? */ return (struct sys_ret){ OK, 0 }; } -SYSCALL_DEFINE1(switch)(sys_arg_t tid) -{ +SYSCALL_DEFINE1(swap)(sys_arg_t tid){ /* TODO: switch to process */ /* TODO: should switch return the registers of the new thread that would * be used for message passing? */ diff --git a/include/apos/syscalls.h b/include/apos/syscalls.h index 19e27ea..e89d07a 100644 --- a/include/apos/syscalls.h +++ b/include/apos/syscalls.h @@ -14,10 +14,10 @@ enum { SYS_NOOP, /* memory management */ - SYS_REQ_MEM, /* request memory from anywhere */ - SYS_REQ_PMEM, /* request physical address */ + SYS_REQ_MEM, /* request memory from anywhere */ + SYS_REQ_PMEM, /* request physical address */ SYS_REQ_FIXMEM, /* request memory at fixed address */ - SYS_FREE_MEM, /* free memory */ + SYS_FREE_MEM, /* free memory */ /* timers */ SYS_TIMEBASE, @@ -29,21 +29,21 @@ enum { /* I really should try to find my notes about the server/client * structure of the OS, but these following syscalls are probably * required */ - SYS_IPC_SERVER, /* inform kernel that process should be treated as a server */ - SYS_IPC_REQ_PROC, /* IPC request to server on behalf of process */ + SYS_IPC_SERVER, /* inform kernel that process should be treated as a server */ + SYS_IPC_REQ_PROC, /* IPC request to server on behalf of process */ SYS_IPC_REQ_THREAD, /* IPC request to server on behalf of thread */ - SYS_IPC_RESP, /* IPC response from server */ + SYS_IPC_RESP, /* IPC response from server */ /* process management */ SYS_CREATE, /* create new thread */ - SYS_FORK, /* duplicate process */ - SYS_EXEC, /* execute new binary in process space */ - SYS_KILL, /* kill thread */ + SYS_FORK, /* duplicate process */ + SYS_EXEC, /* execute new binary in process space */ + SYS_KILL, /* kill thread */ SYS_SIGNAL, /* send signal to process (kill etc.) */ - SYS_SWITCH, /* switch running process */ + SYS_SWAP /* switch running process */ /* kernel management */ - SYS_CONF, /* config system parameters (stack size etc.) */ + SYS_CONF, /* config system parameters (stack size etc.) */ SYS_POWEROFF, /* shutdown/reboot etc. */ }; diff --git a/include/apos/uapi.h b/include/apos/uapi.h index d33a855..dc20187 100644 --- a/include/apos/uapi.h +++ b/include/apos/uapi.h @@ -108,7 +108,7 @@ SYSCALL_DECLARE(create); SYSCALL_DECLARE(fork); SYSCALL_DECLARE(exec); SYSCALL_DECLARE(signal); -SYSCALL_DECLARE(switch); +SYSCALL_DECLARE(swap); /* conf */ SYSCALL_DECLARE(conf); |
