This table is a reference of linux syscalls for the arm64 architecture and their compatibility status in gVisor. gVisor does not support all syscalls and some syscalls may have a partial implementation. However, note that a syscall not being implemented in gVisor does not imply that applications using it will not work. Most language runtimes and libraries that call a syscall marked as unimplemented in this table have fallback code to use an alternative syscall that is supported in gVisor. See the compatibility page for more info.
This page is automatically generated from the source code.
Of 293 syscalls, 237 syscalls have a full or partial implementation. There are currently 56 unsupported syscalls.
# | Name | Support | Notes |
---|---|---|---|
0 | io_setup | Partial Support | Generally supported with exceptions. User ring optimizations are not implemented. See: https://gvisor.dev/issue/204 |
1 | io_destroy | Partial Support | Generally supported with exceptions. User ring optimizations are not implemented. See: https://gvisor.dev/issue/204 |
2 | io_submit | Partial Support | Generally supported with exceptions. User ring optimizations are not implemented. See: https://gvisor.dev/issue/204 |
3 | io_cancel | Partial Support | Generally supported with exceptions. User ring optimizations are not implemented. See: https://gvisor.dev/issue/204 |
4 | io_getevents | Partial Support | Generally supported with exceptions. User ring optimizations are not implemented. See: https://gvisor.dev/issue/204 |
5 | setxattr | Full Support | Fully Supported. |
6 | lsetxattr | Full Support | Fully Supported. |
7 | fsetxattr | Full Support | Fully Supported. |
8 | getxattr | Full Support | Fully Supported. |
9 | lgetxattr | Full Support | Fully Supported. |
10 | fgetxattr | Full Support | Fully Supported. |
11 | listxattr | Full Support | Fully Supported. |
12 | llistxattr | Full Support | Fully Supported. |
13 | flistxattr | Full Support | Fully Supported. |
14 | removexattr | Full Support | Fully Supported. |
15 | lremovexattr | Full Support | Fully Supported. |
16 | fremovexattr | Full Support | Fully Supported. |
17 | getcwd | Full Support | Fully Supported. |
18 | lookup_dcookie | Unimplemented | Returns "operation not permitted" if the process does not have CAP_SYS_ADMIN; "invalid system call number" otherwise. |
19 | eventfd2 | Full Support | Fully Supported. |
20 | epoll_create1 | Full Support | Fully Supported. |
21 | epoll_ctl | Full Support | Fully Supported. |
22 | epoll_pwait | Full Support | Fully Supported. |
23 | dup | Full Support | Fully Supported. |
24 | dup3 | Full Support | Fully Supported. |
25 | fcntl | Full Support | Fully Supported. |
26 | inotify_init1 | Partial Support | inotify events are only available inside the sandbox. |
27 | inotify_add_watch | Partial Support | inotify events are only available inside the sandbox. |
28 | inotify_rm_watch | Partial Support | inotify events are only available inside the sandbox. |
29 | ioctl | Full Support | Fully Supported. |
30 | ioprio_set | Unimplemented | Returns "operation not permitted" if the process does not have CAP_SYS_ADMIN; "invalid system call number" otherwise. |
31 | ioprio_get | Unimplemented | Returns "operation not permitted" if the process does not have CAP_SYS_ADMIN; "invalid system call number" otherwise. |
32 | flock | Full Support | Fully Supported. |
33 | mknodat | Full Support | Fully Supported. |
34 | mkdirat | Full Support | Fully Supported. |
35 | unlinkat | Full Support | Fully Supported. |
36 | symlinkat | Full Support | Fully Supported. |
37 | linkat | Full Support | Fully Supported. |
38 | renameat | Full Support | Fully Supported. |
39 | umount2 | Full Support | Fully Supported. |
40 | mount | Full Support | Fully Supported. |
41 | pivot_root | Full Support | Fully Supported. |
42 | nfsservctl | Unimplemented | Removed after Linux 3.1.; Returns "invalid system call number". |
43 | statfs | Full Support | Fully Supported. |
44 | fstatfs | Full Support | Fully Supported. |
45 | truncate | Full Support | Fully Supported. |
46 | ftruncate | Full Support | Fully Supported. |
47 | fallocate | Partial Support | Not all options are supported. |
48 | faccessat | Full Support | Fully Supported. |
49 | chdir | Full Support | Fully Supported. |
50 | fchdir | Full Support | Fully Supported. |
51 | chroot | Full Support | Fully Supported. |
52 | fchmod | Full Support | Fully Supported. |
53 | fchmodat | Full Support | Fully Supported. |
54 | fchownat | Full Support | Fully Supported. |
55 | fchown | Full Support | Fully Supported. |
56 | openat | Full Support | Fully Supported. |
57 | close | Full Support | Fully Supported. |
58 | vhangup | Unimplemented | Returns "operation not permitted" if the process does not have CAP_SYS_TTY_CONFIG; "invalid system call number" otherwise. |
59 | pipe2 | Full Support | Fully Supported. |
60 | quotactl | Unimplemented | Returns "operation not permitted" if the process does not have CAP_SYS_ADMIN; "invalid system call number" otherwise. |
61 | getdents64 | Full Support | Fully Supported. |
62 | lseek | Full Support | Fully Supported. |
63 | read | Full Support | Fully Supported. |
64 | write | Full Support | Fully Supported. |
65 | readv | Full Support | Fully Supported. |
66 | writev | Full Support | Fully Supported. |
67 | pread64 | Full Support | Fully Supported. |
68 | pwrite64 | Full Support | Fully Supported. |
69 | preadv | Full Support | Fully Supported. |
70 | pwritev | Full Support | Fully Supported. |
71 | sendfile | Full Support | Fully Supported. |
72 | pselect6 | Full Support | Fully Supported. |
73 | ppoll | Full Support | Fully Supported. |
74 | signalfd4 | Full Support | Fully Supported. |
75 | vmsplice | Unimplemented | Returns "invalid system call number". See: https://gvisor.dev/issue/138 |
76 | splice | Full Support | Fully Supported. |
77 | tee | Full Support | Fully Supported. |
78 | readlinkat | Full Support | Fully Supported. |
79 | newfstatat | Full Support | Fully Supported. |
80 | fstat | Full Support | Fully Supported. |
81 | sync | Full Support | Fully Supported. |
82 | fsync | Full Support | Fully Supported. |
83 | fdatasync | Full Support | Fully Supported. |
84 | sync_file_range | Full Support | Fully Supported. |
85 | timerfd_create | Full Support | Fully Supported. |
86 | timerfd_settime | Full Support | Fully Supported. |
87 | timerfd_gettime | Full Support | Fully Supported. |
88 | utimensat | Full Support | Fully Supported. |
89 | acct | Unimplemented | Returns "operation not permitted" if the process does not have CAP_SYS_PACCT; "invalid system call number" otherwise. |
90 | capget | Full Support | Fully Supported. |
91 | capset | Full Support | Fully Supported. |
92 | personality | Unimplemented | Unable to change personality.; Returns "invalid argument". |
93 | exit | Full Support | Fully Supported. |
94 | exit_group | Full Support | Fully Supported. |
95 | waitid | Full Support | Fully Supported. |
96 | set_tid_address | Full Support | Fully Supported. |
97 | unshare | Partial Support | Time, cgroup namespaces not supported. |
98 | futex | Partial Support | Robust futexes not supported. |
99 | set_robust_list | Full Support | Fully Supported. |
100 | get_robust_list | Full Support | Fully Supported. |
101 | nanosleep | Full Support | Fully Supported. |
102 | getitimer | Full Support | Fully Supported. |
103 | setitimer | Full Support | Fully Supported. |
104 | kexec_load | Unimplemented | Returns "operation not permitted" if the process does not have CAP_SYS_BOOT; "invalid system call number" otherwise. |
105 | init_module | Unimplemented | Returns "operation not permitted" if the process does not have CAP_SYS_MODULE; "invalid system call number" otherwise. |
106 | delete_module | Unimplemented | Returns "operation not permitted" if the process does not have CAP_SYS_MODULE; "invalid system call number" otherwise. |
107 | timer_create | Full Support | Fully Supported. |
108 | timer_gettime | Full Support | Fully Supported. |
109 | timer_getoverrun | Full Support | Fully Supported. |
110 | timer_settime | Full Support | Fully Supported. |
111 | timer_delete | Full Support | Fully Supported. |
112 | clock_settime | Full Support | Fully Supported. |
113 | clock_gettime | Full Support | Fully Supported. |
114 | clock_getres | Full Support | Fully Supported. |
115 | clock_nanosleep | Full Support | Fully Supported. |
116 | syslog | Partial Support | Outputs a dummy message for security reasons. |
117 | ptrace | Partial Support | Options PTRACE_PEEKSIGINFO, PTRACE_SECCOMP_GET_FILTER not supported. |
118 | sched_setparam | Unimplemented | Returns "operation not permitted" if the process does not have CAP_SYS_NICE; "invalid system call number" otherwise. |
119 | sched_setscheduler | Partial Support | Stub implementation. |
120 | sched_getscheduler | Partial Support | Stub implementation. |
121 | sched_getparam | Partial Support | Stub implementation. |
122 | sched_setaffinity | Partial Support | Stub implementation. |
123 | sched_getaffinity | Partial Support | Stub implementation. |
124 | sched_yield | Full Support | Fully Supported. |
125 | sched_get_priority_max | Partial Support | Stub implementation. |
126 | sched_get_priority_min | Partial Support | Stub implementation. |
127 | sched_rr_get_interval | Unimplemented | Returns "operation not permitted". |
128 | restart_syscall | Full Support | Fully Supported. |
129 | kill | Full Support | Fully Supported. |
130 | tkill | Full Support | Fully Supported. |
131 | tgkill | Full Support | Fully Supported. |
132 | sigaltstack | Full Support | Fully Supported. |
133 | rt_sigsuspend | Full Support | Fully Supported. |
134 | rt_sigaction | Full Support | Fully Supported. |
135 | rt_sigprocmask | Full Support | Fully Supported. |
136 | rt_sigpending | Full Support | Fully Supported. |
137 | rt_sigtimedwait | Full Support | Fully Supported. |
138 | rt_sigqueueinfo | Full Support | Fully Supported. |
139 | rt_sigreturn | Full Support | Fully Supported. |
140 | setpriority | Partial Support | Stub implementation. |
141 | getpriority | Partial Support | Stub implementation. |
142 | reboot | Unimplemented | Returns "operation not permitted" if the process does not have CAP_SYS_BOOT; "invalid system call number" otherwise. |
143 | setregid | Full Support | Fully Supported. |
144 | setgid | Full Support | Fully Supported. |
145 | setreuid | Full Support | Fully Supported. |
146 | setuid | Full Support | Fully Supported. |
147 | setresuid | Full Support | Fully Supported. |
148 | getresuid | Full Support | Fully Supported. |
149 | setresgid | Full Support | Fully Supported. |
150 | getresgid | Full Support | Fully Supported. |
151 | setfsuid | Unimplemented | Returns "invalid system call number". See: https://gvisor.dev/issue/260 |
152 | setfsgid | Unimplemented | Returns "invalid system call number". See: https://gvisor.dev/issue/260 |
153 | times | Full Support | Fully Supported. |
154 | setpgid | Full Support | Fully Supported. |
155 | getpgid | Full Support | Fully Supported. |
156 | getsid | Full Support | Fully Supported. |
157 | setsid | Full Support | Fully Supported. |
158 | getgroups | Full Support | Fully Supported. |
159 | setgroups | Full Support | Fully Supported. |
160 | uname | Full Support | Fully Supported. |
161 | sethostname | Full Support | Fully Supported. |
162 | setdomainname | Full Support | Fully Supported. |
163 | getrlimit | Full Support | Fully Supported. |
164 | setrlimit | Partial Support | Not all rlimits are enforced. |
165 | getrusage | Partial Support | Fields ru_maxrss, ru_minflt, ru_majflt, ru_inblock, ru_oublock are not supported. Fields ru_utime and ru_stime have low precision. |
166 | umask | Full Support | Fully Supported. |
167 | prctl | Partial Support | Not all options are supported. |
168 | getcpu | Full Support | Fully Supported. |
169 | gettimeofday | Full Support | Fully Supported. |
170 | settimeofday | Unimplemented | Returns "operation not permitted" if the process does not have CAP_SYS_TIME; "invalid system call number" otherwise. |
171 | adjtimex | Unimplemented | Returns "operation not permitted" if the process does not have CAP_SYS_TIME; "invalid system call number" otherwise. |
172 | getpid | Full Support | Fully Supported. |
173 | getppid | Full Support | Fully Supported. |
174 | getuid | Full Support | Fully Supported. |
175 | geteuid | Full Support | Fully Supported. |
176 | getgid | Full Support | Fully Supported. |
177 | getegid | Full Support | Fully Supported. |
178 | gettid | Full Support | Fully Supported. |
179 | sysinfo | Partial Support | Fields loads, sharedram, bufferram, totalswap, freeswap, totalhigh, freehigh not supported. |
180 | mq_open | Full Support | Fully Supported. |
181 | mq_unlink | Full Support | Fully Supported. |
182 | mq_timedsend | Unimplemented | Returns "invalid system call number". See: https://gvisor.dev/issue/136 |
183 | mq_timedreceive | Unimplemented | Returns "invalid system call number". See: https://gvisor.dev/issue/136 |
184 | mq_notify | Unimplemented | Returns "invalid system call number". See: https://gvisor.dev/issue/136 |
185 | mq_getsetattr | Unimplemented | Returns "invalid system call number". See: https://gvisor.dev/issue/136 |
186 | msgget | Full Support | Fully Supported. |
187 | msgctl | Full Support | Fully Supported. |
188 | msgrcv | Full Support | Fully Supported. |
189 | msgsnd | Full Support | Fully Supported. |
190 | semget | Full Support | Fully Supported. |
191 | semctl | Full Support | Fully Supported. |
192 | semtimedop | Full Support | Fully Supported. |
193 | semop | Partial Support | Option SEM_UNDO not supported. |
194 | shmget | Partial Support | Option SHM_HUGETLB is not supported. |
195 | shmctl | Partial Support | Options SHM_LOCK, SHM_UNLOCK are not supported. |
196 | shmat | Partial Support | Option SHM_RND is not supported. |
197 | shmdt | Full Support | Fully Supported. |
198 | socket | Full Support | Fully Supported. |
199 | socketpair | Full Support | Fully Supported. |
200 | bind | Full Support | Fully Supported. |
201 | listen | Full Support | Fully Supported. |
202 | accept | Full Support | Fully Supported. |
203 | connect | Full Support | Fully Supported. |
204 | getsockname | Full Support | Fully Supported. |
205 | getpeername | Full Support | Fully Supported. |
206 | sendto | Full Support | Fully Supported. |
207 | recvfrom | Full Support | Fully Supported. |
208 | setsockopt | Full Support | Fully Supported. |
209 | getsockopt | Full Support | Fully Supported. |
210 | shutdown | Full Support | Fully Supported. |
211 | sendmsg | Full Support | Fully Supported. |
212 | recvmsg | Full Support | Fully Supported. |
213 | readahead | Full Support | Fully Supported. |
214 | brk | Full Support | Fully Supported. |
215 | munmap | Full Support | Fully Supported. |
216 | mremap | Full Support | Fully Supported. |
217 | add_key | Unimplemented | Not available to user.; Returns "permission denied". |
218 | request_key | Unimplemented | Not available to user.; Returns "permission denied". |
219 | keyctl | Partial Support | Only supports session keyrings with zero keys in them. |
220 | clone | Partial Support | Options CLONE_PIDFD, CLONE_NEWCGROUP, CLONE_PARENT, CLONE_NEWTIME, CLONE_CLEAR_SIGHAND, and CLONE_SYSVSEM not supported. |
221 | execve | Full Support | Fully Supported. |
222 | mmap | Full Support | Fully Supported. |
223 | fadvise64 | Partial Support | Not all options are supported. |
224 | swapon | Unimplemented | Returns "operation not permitted" if the process does not have CAP_SYS_ADMIN; "invalid system call number" otherwise. |
225 | swapoff | Unimplemented | Returns "operation not permitted" if the process does not have CAP_SYS_ADMIN; "invalid system call number" otherwise. |
226 | mprotect | Full Support | Fully Supported. |
227 | msync | Partial Support | Full data flush is not guaranteed at this time. |
228 | mlock | Partial Support | Stub implementation. The sandbox lacks appropriate permissions. |
229 | munlock | Partial Support | Stub implementation. The sandbox lacks appropriate permissions. |
230 | mlockall | Partial Support | Stub implementation. The sandbox lacks appropriate permissions. |
231 | munlockall | Partial Support | Stub implementation. The sandbox lacks appropriate permissions. |
232 | mincore | Partial Support | Stub implementation. The sandbox does not have access to this information. Reports all mapped pages are resident. |
233 | madvise | Partial Support | Options MADV_DONTNEED, MADV_DONTFORK are supported. Other advice is ignored. |
234 | remap_file_pages | Unimplemented | Deprecated since Linux 3.16.; Returns "invalid system call number". |
235 | mbind | Partial Support | Stub implementation. Only a single NUMA node is advertised, and mempolicy is ignored accordingly, but mbind() will succeed and has effects reflected by get_mempolicy. See: https://gvisor.dev/issue/262 |
236 | get_mempolicy | Partial Support | Stub implementation. |
237 | set_mempolicy | Partial Support | Stub implementation. |
238 | migrate_pages | Unimplemented | Returns "operation not permitted" if the process does not have CAP_SYS_NICE; "invalid system call number" otherwise. |
239 | move_pages | Unimplemented | Returns "operation not permitted" if the process does not have CAP_SYS_NICE; "invalid system call number" otherwise. |
240 | rt_tgsigqueueinfo | Full Support | Fully Supported. |
241 | perf_event_open | Unimplemented | No support for perf counters; Returns "no such device". |
242 | accept4 | Full Support | Fully Supported. |
243 | recvmmsg | Full Support | Fully Supported. |
260 | wait4 | Full Support | Fully Supported. |
261 | prlimit64 | Full Support | Fully Supported. |
262 | fanotify_init | Unimplemented | Needs CONFIG_FANOTIFY; Returns "invalid system call number". |
263 | fanotify_mark | Unimplemented | Needs CONFIG_FANOTIFY; Returns "invalid system call number". |
264 | name_to_handle_at | Unimplemented | Not supported by gVisor filesystems; Returns "operation not supported on transport endpoint". |
265 | open_by_handle_at | Unimplemented | Not supported by gVisor filesystems; Returns "operation not supported on transport endpoint". |
266 | clock_adjtime | Unimplemented | Returns "operation not permitted" if the process does not have CAP_SYS_TIME; "invalid system call number" otherwise. |
267 | syncfs | Full Support | Fully Supported. |
268 | setns | Full Support | Fully Supported. |
269 | sendmmsg | Full Support | Fully Supported. |
270 | process_vm_readv | Full Support | Fully Supported. |
271 | process_vm_writev | Full Support | Fully Supported. |
272 | kcmp | Unimplemented | Returns "operation not permitted" if the process does not have CAP_SYS_PTRACE; "invalid system call number" otherwise. |
273 | finit_module | Unimplemented | Returns "operation not permitted" if the process does not have CAP_SYS_MODULE; "invalid system call number" otherwise. |
274 | sched_setattr | Unimplemented | gVisor does not implement a scheduler.; Returns "invalid system call number". See: https://gvisor.dev/issue/264 |
275 | sched_getattr | Unimplemented | gVisor does not implement a scheduler.; Returns "invalid system call number". See: https://gvisor.dev/issue/264 |
276 | renameat2 | Full Support | Fully Supported. |
277 | seccomp | Full Support | Fully Supported. |
278 | getrandom | Full Support | Fully Supported. |
279 | memfd_create | Full Support | Fully Supported. |
280 | bpf | Unimplemented | Returns "operation not permitted" if the process does not have CAP_SYS_ADMIN; "invalid system call number" otherwise. |
281 | execveat | Full Support | Fully Supported. |
282 | userfaultfd | Unimplemented | Returns "invalid system call number". See: https://gvisor.dev/issue/266 |
283 | membarrier | Partial Support | Not supported on all platforms. |
284 | mlock2 | Partial Support | Stub implementation. The sandbox lacks appropriate permissions. |
285 | copy_file_range | Unimplemented | Returns "invalid system call number". |
286 | preadv2 | Full Support | Fully Supported. |
287 | pwritev2 | Full Support | Fully Supported. |
288 | pkey_mprotect | Unimplemented | Returns "invalid system call number". |
289 | pkey_alloc | Unimplemented | Returns "invalid system call number". |
290 | pkey_free | Unimplemented | Returns "invalid system call number". |
291 | statx | Full Support | Fully Supported. |
292 | io_pgetevents | Unimplemented | Returns "invalid system call number". |
293 | rseq | Partial Support | Not supported on all platforms. |
424 | pidfd_send_signal | Unimplemented | Returns "invalid system call number". |
425 | io_uring_setup | Partial Support | Not all flags and functionality supported. |
426 | io_uring_enter | Partial Support | Not all flags and functionality supported. |
427 | io_uring_register | Unimplemented | Returns "invalid system call number". |
428 | open_tree | Unimplemented | Returns "invalid system call number". |
429 | move_mount | Unimplemented | Returns "invalid system call number". |
430 | fsopen | Unimplemented | Returns "invalid system call number". |
431 | fsconfig | Unimplemented | Returns "invalid system call number". |
432 | fsmount | Unimplemented | Returns "invalid system call number". |
433 | fspick | Unimplemented | Returns "invalid system call number". |
434 | pidfd_open | Unimplemented | Returns "invalid system call number". |
435 | clone3 | Partial Support | Options CLONE_PIDFD, CLONE_NEWCGROUP, CLONE_INTO_CGROUP, CLONE_NEWTIME, CLONE_CLEAR_SIGHAND, CLONE_PARENT, CLONE_SYSVSEM and clone_args.set_tid are not supported. |
436 | close_range | Full Support | Fully Supported. |
439 | faccessat2 | Full Support | Fully Supported. |
441 | epoll_pwait2 | Full Support | Fully Supported. |