Skip to content

Latest commit

 

History

History
373 lines (367 loc) · 24.3 KB

support.md

File metadata and controls

373 lines (367 loc) · 24.3 KB

Syscall Support

The WALI prototype is designed to support syscalls across the following architectures: x86-64, aarch64, riscv64

Generated based on Marcin Juszkiewicz's syscall table

Number of supported syscalls: 142

Syscall # Args a1 a2 a3 a4 a5 a6
read 3 int void* size_t
write 3 int void* size_t
open 3 char* int mode_t
close 1 int
stat 2 char* struct stat*
fstat 2 int struct stat*
lstat 2 char* struct stat*
poll 3 struct pollfd* nfds_t int
lseek 3 int off_t int
mmap 6 void* size_t int int int off_t
mprotect 3 void* size_t int
munmap 2 void* size_t
brk 1 void*
rt_sigaction 4 int struct sigaction* struct sigaction* size_t
rt_sigprocmask 4 int sigset_t* sigset_t* size_t
rt_sigreturn 1 long
ioctl 3 int int char*
pread64 4 int char* size_t off_t
pwrite64 4 int char* size_t off_t
readv 3 int struct iovec* int
writev 3 int struct iovec* int
access 2 char* int
pipe 1 int*
select 5 int fd_set* fd_set* fd_set* struct timeval*
sched_yield 0
mremap 5 void* size_t size_t int void*
msync 3 void* size_t int
madvise 3 void* size_t int
dup 1 int
dup2 2 int int
nanosleep 2 struct timespec* struct timespec*
alarm 1 int
setitimer 3 int struct itimerval* struct itimerval*
getpid 0
socket 3 int int int
connect 3 int struct sockaddr* socklen_t
accept 3 int struct sockaddr* socklen_t*
sendto 6 int void* size_t int struct sockaddr* socklen_t
recvfrom 6 int void* size_t int struct sockaddr* socklen_t*
sendmsg 3 int struct msghdr* int
recvmsg 3 int struct msghdr* int
shutdown 2 int int
bind 3 int struct sockaddr* socklen_t
listen 2 int int
getsockname 3 int struct sockaddr* socklen_t*
getpeername 3 int struct sockaddr* socklen_t*
socketpair 4 int int int int*
setsockopt 5 int int int void* socklen_t
getsockopt 5 int int int void* socklen_t*
fork 0
execve 3 char* char* char*
exit 1 int
wait4 4 pid_t int* int struct rusage*
kill 2 pid_t int
uname 1 struct utsname*
fcntl 3 int int int
flock 2 int int
fsync 1 int
fdatasync 1 int
ftruncate 2 int off_t
getdents 3 int struct dirent* int
getcwd 2 char* size_t
chdir 1 char*
fchdir 1 int
rename 2 char* char*
mkdir 2 char* mode_t
rmdir 1 char*
link 2 char* char*
unlink 1 char*
symlink 2 char* char*
readlink 3 char* char* size_t
chmod 2 char* mode_t
fchmod 2 int mode_t
chown 3 char* uid_t gid_t
fchown 3 int uid_t gid_t
umask 1 mode_t
getrlimit 2 int struct rlimit*
getrusage 2 int struct rusage*
sysinfo 1 struct sysinfo*
getuid 0
getgid 0
setuid 1 uid_t
setgid 1 gid_t
geteuid 0
getegid 0
setpgid 2 pid_t pid_t
getppid 0
setsid 0
setreuid 2 uid_t uid_t
setregid 2 gid_t gid_t
getgroups 2 size_t gid_t*
setgroups 2 size_t gid_t*
setresuid 3 uid_t uid_t uid_t
setresgid 3 gid_t gid_t gid_t
getpgid 1 pid_t
getsid 1 pid_t
rt_sigpending 2 sigset_t* size_t
rt_sigsuspend 2 sigset_t* size_t
sigaltstack 2 stack_t* stack_t*
utime 2 char* struct utimbuf*
statfs 2 char* struct statfs*
fstatfs 2 int struct statfs*
prctl 5 int unsigned long unsigned long unsigned long unsigned long
setrlimit 2 int struct rlimit*
chroot 1 char*
gettid 0
tkill 2 int int
futex 6 int* int int struct timespec* int* int
sched_getaffinity 3 pid_t size_t cpu_set_t*
getdents64 3 int struct dirent* int
set_tid_address 1 int*
fadvise 4 int off_t off_t int
clock_gettime 2 clockid_t struct timespec*
clock_getres 2 clockid_t struct timespec*
clock_nanosleep 4 clockid_t int struct timespec* struct timespec*
exit_group 1 int
epoll_ctl 4 int int int struct epoll_event*
openat 4 int char* int mode_t
mkdirat 3 int char* mode_t
fchownat 5 int char* uid_t gid_t int
newfstatat 4 int char* struct stat* int
unlinkat 3 int char* int
linkat 5 int char* int char* int
symlinkat 3 char* int char*
readlinkat 4 int char* char* size_t
fchmodat 4 int char* mode_t int
faccessat 4 int char* int int
pselect6 6 int fd_set* fd_set* fd_set* struct timespec* void*
ppoll 5 struct pollfd* nfds_t struct timespec* sigset_t* size_t
utimensat 4 int char* struct timespec* int
epoll_pwait 6 int struct epoll_event* int int sigset_t* size_t
eventfd 1 int
accept4 4 int struct sockaddr* socklen_t* int
eventfd2 2 int int
epoll_create1 1 int
dup3 3 int int int
pipe2 2 int* int
prlimit64 4 int int struct rlimit* struct rlimit*
renameat2 5 int char* int char* int
getrandom 3 void* size_t int
statx 5 int char* int int struct statx*
faccessat2 4 int char* int int

Currently Unsupported Syscalls

  • acct
  • add_key
  • adjtimex
  • arch_prctl
  • bpf
  • cachestat
  • capget
  • capset
  • clock_adjtime
  • clock_settime
  • clone
  • clone3
  • close_range
  • copy_file_range
  • creat
  • delete_module
  • epoll_create
  • epoll_ctl_old
  • epoll_pwait2
  • epoll_wait
  • epoll_wait_old
  • execveat
  • fadvise64
  • fallocate
  • fanotify_init
  • fanotify_mark
  • fchmodat2
  • fgetxattr
  • finit_module
  • flistxattr
  • fremovexattr
  • fsconfig
  • fsetxattr
  • fsmount
  • fsopen
  • fspick
  • futex_requeue
  • futex_wait
  • futex_waitv
  • futex_wake
  • futimesat
  • get_mempolicy
  • get_robust_list
  • get_thread_area
  • getcpu
  • getitimer
  • getpgrp
  • getpriority
  • getresgid
  • getresuid
  • gettimeofday
  • getxattr
  • init_module
  • inotify_add_watch
  • inotify_init
  • inotify_init1
  • inotify_rm_watch
  • io_cancel
  • io_destroy
  • io_getevents
  • io_pgetevents
  • io_setup
  • io_submit
  • io_uring_enter
  • io_uring_register
  • io_uring_setup
  • ioperm
  • iopl
  • ioprio_get
  • ioprio_set
  • kcmp
  • kexec_file_load
  • kexec_load
  • keyctl
  • landlock_add_rule
  • landlock_create_ruleset
  • landlock_restrict_self
  • lchown
  • lgetxattr
  • listxattr
  • llistxattr
  • lookup_dcookie
  • lremovexattr
  • lsetxattr
  • map_shadow_stack
  • mbind
  • membarrier
  • memfd_create
  • memfd_secret
  • migrate_pages
  • mincore
  • mknod
  • mknodat
  • mlock
  • mlock2
  • mlockall
  • modify_ldt
  • mount
  • mount_setattr
  • move_mount
  • move_pages
  • mq_getsetattr
  • mq_notify
  • mq_open
  • mq_timedreceive
  • mq_timedsend
  • mq_unlink
  • msgctl
  • msgget
  • msgrcv
  • msgsnd
  • munlock
  • munlockall
  • name_to_handle_at
  • open_by_handle_at
  • open_tree
  • openat2
  • pause
  • perf_event_open
  • personality
  • pidfd_getfd
  • pidfd_open
  • pidfd_send_signal
  • pivot_root
  • pkey_alloc
  • pkey_free
  • pkey_mprotect
  • preadv
  • preadv2
  • process_madvise
  • process_mrelease
  • process_vm_readv
  • process_vm_writev
  • ptrace
  • pwritev
  • pwritev2
  • quotactl
  • quotactl_fd
  • readahead
  • reboot
  • recvmmsg
  • remap_file_pages
  • removexattr
  • renameat
  • request_key
  • restart_syscall
  • riscv_flush_icache
  • riscv_hwprobe
  • rseq
  • rt_sigqueueinfo
  • rt_sigtimedwait
  • rt_tgsigqueueinfo
  • sched_get_priority_max
  • sched_get_priority_min
  • sched_getattr
  • sched_getparam
  • sched_getscheduler
  • sched_rr_get_interval
  • sched_setaffinity
  • sched_setattr
  • sched_setparam
  • sched_setscheduler
  • seccomp
  • semctl
  • semget
  • semop
  • semtimedop
  • sendfile
  • sendmmsg
  • set_mempolicy
  • set_mempolicy_home_node
  • set_robust_list
  • set_thread_area
  • setdomainname
  • setfsgid
  • setfsuid
  • sethostname
  • setns
  • setpriority
  • settimeofday
  • setxattr
  • shmat
  • shmctl
  • shmdt
  • shmget
  • signalfd
  • signalfd4
  • splice
  • swapoff
  • swapon
  • sync
  • sync_file_range
  • syncfs
  • sysfs
  • syslog
  • tee
  • tgkill
  • time
  • timer_create
  • timer_delete
  • timer_getoverrun
  • timer_gettime
  • timer_settime
  • timerfd_create
  • timerfd_gettime
  • timerfd_settime
  • times
  • truncate
  • umount2
  • unshare
  • userfaultfd
  • ustat
  • utimes
  • vfork
  • vhangup
  • vmsplice
  • waitid