Reference
Syscalls
NanoVM implements roughly eighty Linux syscalls, dispatched at syscall boundaries. They fall into a handful of handling modes.
Handling modes
- Direct — computed entirely inside the VM (getpid, brk, clock_gettime).
- Host-delegated — file and socket I/O that crosses the shared-memory FS protocol.
- Blocking — futex, epoll and timerfd waits that suspend a thread until an event.
Representative syscalls
Group
Syscalls
Process
clone, execve, exit, exit_group, wait4, getpid
Memory
brk, mmap, munmap, mprotect
File I/O
openat, read, write, close, lseek, fstat
Directory
getdents64, mkdirat, unlinkat
Sockets
socket, bind, listen, accept, connect, sendto, recvfrom
Polling
epoll_create1, epoll_ctl, epoll_wait, ppoll
Threading
futex, set_robust_list, sched_yield
Time
clock_gettime, nanosleep, timerfd_create
File I/O does not call the host per instruction — it goes through a shared-memory protocol (FS_PENDING), described in the Host API.
Full reference
The complete list, with the handling mode for each syscall, lives in docs/syscalls.md in the repository.