Expand description

Implementation of syscalls

The single entry point to all system calls, syscall(), is called whenever userspace wishes to perform a system call using the ecall instruction. In this case, the processor raises an ‘Environment call from U-mode’ exception, which is handled as one of the cases in crate::trap::trap_handler.

For clarity, each single syscall is implemented as its own function, named sys_ then the name of the syscall. You can find functions like this in submodules, and you should also implement syscalls this way.

Modules

fs 🔒

File and filesystem-related syscalls

process 🔒

Process management syscalls

Constants

close syscall

exec syscall

exit syscall

fork syscall

fstat syscall

getpid syscall

gettime syscall

linkat syscall

mmap syscall

munmap syscall

open syscall

read syscall

sbrk syscall

setpriority syscall

spawn syscall

taskinfo syscall

unlinkat syscall

waitpid syscall

write syscall

yield syscall

Functions

handle syscall exception with syscall_id and other arguments