2019-10-07 13:52:19 -07:00
// Copyright 2019 The gVisor Authors.
2018-04-27 10:37:02 -07:00
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
2022-11-14 13:08:40 -08:00
// Package linux provides syscall tables for amd64 and arm64 Linux.
2018-04-27 10:37:02 -07:00
package linux
2020-05-06 14:12:08 -07:00
import (
"gvisor.dev/gvisor/pkg/abi"
"gvisor.dev/gvisor/pkg/abi/linux"
2021-06-29 15:05:27 -07:00
"gvisor.dev/gvisor/pkg/errors/linuxerr"
2021-03-29 13:28:32 -07:00
"gvisor.dev/gvisor/pkg/hostarch"
2020-05-06 14:12:08 -07:00
"gvisor.dev/gvisor/pkg/sentry/arch"
"gvisor.dev/gvisor/pkg/sentry/kernel"
"gvisor.dev/gvisor/pkg/sentry/syscalls"
)
2019-08-23 15:10:37 +08:00
const (
2019-10-22 16:14:42 -07:00
// LinuxSysname is the OS name advertised by gVisor.
LinuxSysname = "Linux"
// LinuxRelease is the Linux release version number advertised by gVisor.
LinuxRelease = "4.4.0"
// LinuxVersion is the version info advertised by gVisor.
LinuxVersion = "#1 SMP Sun Jan 10 15:06:54 PST 2016"
2018-04-27 10:37:02 -07:00
)
2020-05-06 14:12:08 -07:00
// AMD64 is a table of Linux amd64 syscall API with the corresponding syscall
// numbers from Linux 4.4.
var AMD64 = & kernel . SyscallTable {
OS : abi . Linux ,
Arch : arch . AMD64 ,
Version : kernel . Version {
// Version 4.4 is chosen as a stable, longterm version of Linux, which
// guides the interface provided by this syscall table. The build
// version is that for a clean build with default kernel config, at 5
// minutes after v4.4 was tagged.
Sysname : LinuxSysname ,
Release : LinuxRelease ,
Version : LinuxVersion ,
} ,
AuditNumber : linux . AUDIT_ARCH_X86_64 ,
Table : map [ uintptr ] kernel . Syscall {
2022-05-02 13:00:17 -07:00
0 : syscalls . SupportedPoint ( "read" , Read , PointRead ) ,
2022-11-15 11:51:50 -08:00
1 : syscalls . SupportedPoint ( "write" , Write , PointWrite ) ,
2022-11-14 13:08:40 -08:00
2 : syscalls . SupportedPoint ( "open" , Open , PointOpen ) ,
3 : syscalls . SupportedPoint ( "close" , Close , PointClose ) ,
2020-05-06 14:12:08 -07:00
4 : syscalls . Supported ( "stat" , Stat ) ,
5 : syscalls . Supported ( "fstat" , Fstat ) ,
6 : syscalls . Supported ( "lstat" , Lstat ) ,
7 : syscalls . Supported ( "poll" , Poll ) ,
8 : syscalls . Supported ( "lseek" , Lseek ) ,
2022-11-14 13:08:40 -08:00
9 : syscalls . Supported ( "mmap" , Mmap ) ,
2020-05-06 14:12:08 -07:00
10 : syscalls . Supported ( "mprotect" , Mprotect ) ,
11 : syscalls . Supported ( "munmap" , Munmap ) ,
12 : syscalls . Supported ( "brk" , Brk ) ,
13 : syscalls . Supported ( "rt_sigaction" , RtSigaction ) ,
14 : syscalls . Supported ( "rt_sigprocmask" , RtSigprocmask ) ,
15 : syscalls . Supported ( "rt_sigreturn" , RtSigreturn ) ,
2022-11-14 13:08:40 -08:00
16 : syscalls . Supported ( "ioctl" , Ioctl ) ,
2022-11-15 11:51:50 -08:00
17 : syscalls . SupportedPoint ( "pread64" , Pread64 , PointPread64 ) ,
18 : syscalls . SupportedPoint ( "pwrite64" , Pwrite64 , PointPwrite64 ) ,
19 : syscalls . SupportedPoint ( "readv" , Readv , PointReadv ) ,
20 : syscalls . SupportedPoint ( "writev" , Writev , PointWritev ) ,
2020-05-06 14:12:08 -07:00
21 : syscalls . Supported ( "access" , Access ) ,
2022-06-24 19:35:05 -07:00
22 : syscalls . SupportedPoint ( "pipe" , Pipe , PointPipe ) ,
2020-05-06 14:12:08 -07:00
23 : syscalls . Supported ( "select" , Select ) ,
24 : syscalls . Supported ( "sched_yield" , SchedYield ) ,
25 : syscalls . Supported ( "mremap" , Mremap ) ,
26 : syscalls . PartiallySupported ( "msync" , Msync , "Full data flush is not guaranteed at this time." , nil ) ,
27 : syscalls . PartiallySupported ( "mincore" , Mincore , "Stub implementation. The sandbox does not have access to this information. Reports all mapped pages are resident." , nil ) ,
28 : syscalls . PartiallySupported ( "madvise" , Madvise , "Options MADV_DONTNEED, MADV_DONTFORK are supported. Other advice is ignored." , nil ) ,
29 : syscalls . PartiallySupported ( "shmget" , Shmget , "Option SHM_HUGETLB is not supported." , nil ) ,
30 : syscalls . PartiallySupported ( "shmat" , Shmat , "Option SHM_RND is not supported." , nil ) ,
31 : syscalls . PartiallySupported ( "shmctl" , Shmctl , "Options SHM_LOCK, SHM_UNLOCK are not supported." , nil ) ,
2022-06-24 19:35:05 -07:00
32 : syscalls . SupportedPoint ( "dup" , Dup , PointDup ) ,
33 : syscalls . SupportedPoint ( "dup2" , Dup2 , PointDup2 ) ,
2020-05-06 14:12:08 -07:00
34 : syscalls . Supported ( "pause" , Pause ) ,
35 : syscalls . Supported ( "nanosleep" , Nanosleep ) ,
36 : syscalls . Supported ( "getitimer" , Getitimer ) ,
37 : syscalls . Supported ( "alarm" , Alarm ) ,
38 : syscalls . Supported ( "setitimer" , Setitimer ) ,
39 : syscalls . Supported ( "getpid" , Getpid ) ,
40 : syscalls . Supported ( "sendfile" , Sendfile ) ,
2022-11-14 13:08:40 -08:00
41 : syscalls . SupportedPoint ( "socket" , Socket , PointSocket ) ,
2022-05-02 13:00:17 -07:00
42 : syscalls . SupportedPoint ( "connect" , Connect , PointConnect ) ,
2022-06-24 19:35:05 -07:00
43 : syscalls . SupportedPoint ( "accept" , Accept , PointAccept ) ,
2020-05-06 14:12:08 -07:00
44 : syscalls . Supported ( "sendto" , SendTo ) ,
45 : syscalls . Supported ( "recvfrom" , RecvFrom ) ,
46 : syscalls . Supported ( "sendmsg" , SendMsg ) ,
2022-11-14 13:08:40 -08:00
47 : syscalls . Supported ( "recvmsg" , RecvMsg ) ,
48 : syscalls . Supported ( "shutdown" , Shutdown ) ,
49 : syscalls . SupportedPoint ( "bind" , Bind , PointBind ) ,
2020-05-06 14:12:08 -07:00
50 : syscalls . Supported ( "listen" , Listen ) ,
51 : syscalls . Supported ( "getsockname" , GetSockName ) ,
52 : syscalls . Supported ( "getpeername" , GetPeerName ) ,
2022-07-07 14:07:20 -07:00
53 : syscalls . SupportedPoint ( "socketpair" , SocketPair , PointSocketpair ) ,
2022-11-14 13:08:40 -08:00
54 : syscalls . Supported ( "setsockopt" , SetSockOpt ) ,
55 : syscalls . Supported ( "getsockopt" , GetSockOpt ) ,
2023-08-25 11:55:45 -07:00
56 : syscalls . PartiallySupportedPoint ( "clone" , Clone , PointClone , "Options CLONE_PIDFD, CLONE_NEWCGROUP, CLONE_PARENT, CLONE_NEWTIME, CLONE_CLEAR_SIGHAND, and CLONE_SYSVSEM not supported." , nil ) ,
2022-07-07 14:07:20 -07:00
57 : syscalls . SupportedPoint ( "fork" , Fork , PointFork ) ,
58 : syscalls . SupportedPoint ( "vfork" , Vfork , PointVfork ) ,
2022-05-02 13:00:17 -07:00
59 : syscalls . SupportedPoint ( "execve" , Execve , PointExecve ) ,
2020-05-06 14:12:08 -07:00
60 : syscalls . Supported ( "exit" , Exit ) ,
61 : syscalls . Supported ( "wait4" , Wait4 ) ,
62 : syscalls . Supported ( "kill" , Kill ) ,
63 : syscalls . Supported ( "uname" , Uname ) ,
64 : syscalls . Supported ( "semget" , Semget ) ,
65 : syscalls . PartiallySupported ( "semop" , Semop , "Option SEM_UNDO not supported." , nil ) ,
2021-02-25 12:54:36 -08:00
66 : syscalls . Supported ( "semctl" , Semctl ) ,
2020-05-06 14:12:08 -07:00
67 : syscalls . Supported ( "shmdt" , Shmdt ) ,
2021-06-02 15:54:36 +02:00
68 : syscalls . Supported ( "msgget" , Msgget ) ,
2021-06-21 13:48:25 +02:00
69 : syscalls . Supported ( "msgsnd" , Msgsnd ) ,
2021-06-21 13:53:48 +02:00
70 : syscalls . Supported ( "msgrcv" , Msgrcv ) ,
2021-06-29 23:53:25 +02:00
71 : syscalls . Supported ( "msgctl" , Msgctl ) ,
2022-11-14 13:08:40 -08:00
72 : syscalls . SupportedPoint ( "fcntl" , Fcntl , PointFcntl ) ,
73 : syscalls . Supported ( "flock" , Flock ) ,
74 : syscalls . Supported ( "fsync" , Fsync ) ,
75 : syscalls . Supported ( "fdatasync" , Fdatasync ) ,
2020-05-06 14:12:08 -07:00
76 : syscalls . Supported ( "truncate" , Truncate ) ,
77 : syscalls . Supported ( "ftruncate" , Ftruncate ) ,
78 : syscalls . Supported ( "getdents" , Getdents ) ,
79 : syscalls . Supported ( "getcwd" , Getcwd ) ,
2022-05-25 13:31:29 -07:00
80 : syscalls . SupportedPoint ( "chdir" , Chdir , PointChdir ) ,
81 : syscalls . SupportedPoint ( "fchdir" , Fchdir , PointFchdir ) ,
2020-05-06 14:12:08 -07:00
82 : syscalls . Supported ( "rename" , Rename ) ,
83 : syscalls . Supported ( "mkdir" , Mkdir ) ,
84 : syscalls . Supported ( "rmdir" , Rmdir ) ,
2022-11-14 13:08:40 -08:00
85 : syscalls . SupportedPoint ( "creat" , Creat , PointCreat ) ,
86 : syscalls . Supported ( "link" , Link ) ,
2020-05-06 14:12:08 -07:00
87 : syscalls . Supported ( "unlink" , Unlink ) ,
88 : syscalls . Supported ( "symlink" , Symlink ) ,
89 : syscalls . Supported ( "readlink" , Readlink ) ,
90 : syscalls . Supported ( "chmod" , Chmod ) ,
2022-11-14 13:08:40 -08:00
91 : syscalls . Supported ( "fchmod" , Fchmod ) ,
2020-05-06 14:12:08 -07:00
92 : syscalls . Supported ( "chown" , Chown ) ,
93 : syscalls . Supported ( "fchown" , Fchown ) ,
94 : syscalls . Supported ( "lchown" , Lchown ) ,
95 : syscalls . Supported ( "umask" , Umask ) ,
96 : syscalls . Supported ( "gettimeofday" , Gettimeofday ) ,
97 : syscalls . Supported ( "getrlimit" , Getrlimit ) ,
98 : syscalls . PartiallySupported ( "getrusage" , Getrusage , "Fields ru_maxrss, ru_minflt, ru_majflt, ru_inblock, ru_oublock are not supported. Fields ru_utime and ru_stime have low precision." , nil ) ,
99 : syscalls . PartiallySupported ( "sysinfo" , Sysinfo , "Fields loads, sharedram, bufferram, totalswap, freeswap, totalhigh, freehigh not supported." , nil ) ,
100 : syscalls . Supported ( "times" , Times ) ,
101 : syscalls . PartiallySupported ( "ptrace" , Ptrace , "Options PTRACE_PEEKSIGINFO, PTRACE_SECCOMP_GET_FILTER not supported." , nil ) ,
102 : syscalls . Supported ( "getuid" , Getuid ) ,
103 : syscalls . PartiallySupported ( "syslog" , Syslog , "Outputs a dummy message for security reasons." , nil ) ,
104 : syscalls . Supported ( "getgid" , Getgid ) ,
2022-05-25 13:31:29 -07:00
105 : syscalls . SupportedPoint ( "setuid" , Setuid , PointSetuid ) ,
106 : syscalls . SupportedPoint ( "setgid" , Setgid , PointSetgid ) ,
2020-05-06 14:12:08 -07:00
107 : syscalls . Supported ( "geteuid" , Geteuid ) ,
108 : syscalls . Supported ( "getegid" , Getegid ) ,
109 : syscalls . Supported ( "setpgid" , Setpgid ) ,
110 : syscalls . Supported ( "getppid" , Getppid ) ,
111 : syscalls . Supported ( "getpgrp" , Getpgrp ) ,
2022-05-25 13:31:29 -07:00
112 : syscalls . SupportedPoint ( "setsid" , Setsid , PointSetsid ) ,
2020-05-06 14:12:08 -07:00
113 : syscalls . Supported ( "setreuid" , Setreuid ) ,
114 : syscalls . Supported ( "setregid" , Setregid ) ,
115 : syscalls . Supported ( "getgroups" , Getgroups ) ,
116 : syscalls . Supported ( "setgroups" , Setgroups ) ,
2022-05-25 13:31:29 -07:00
117 : syscalls . SupportedPoint ( "setresuid" , Setresuid , PointSetresuid ) ,
2020-05-06 14:12:08 -07:00
118 : syscalls . Supported ( "getresuid" , Getresuid ) ,
2022-05-25 13:31:29 -07:00
119 : syscalls . SupportedPoint ( "setresgid" , Setresgid , PointSetresgid ) ,
2020-05-06 14:12:08 -07:00
120 : syscalls . Supported ( "getresgid" , Getresgid ) ,
121 : syscalls . Supported ( "getpgid" , Getpgid ) ,
2021-08-12 15:16:45 -07:00
122 : syscalls . ErrorWithEvent ( "setfsuid" , linuxerr . ENOSYS , "" , [ ] string { "gvisor.dev/issue/260" } ) , // TODO(b/112851702)
123 : syscalls . ErrorWithEvent ( "setfsgid" , linuxerr . ENOSYS , "" , [ ] string { "gvisor.dev/issue/260" } ) , // TODO(b/112851702)
2020-05-06 14:12:08 -07:00
124 : syscalls . Supported ( "getsid" , Getsid ) ,
125 : syscalls . Supported ( "capget" , Capget ) ,
126 : syscalls . Supported ( "capset" , Capset ) ,
127 : syscalls . Supported ( "rt_sigpending" , RtSigpending ) ,
128 : syscalls . Supported ( "rt_sigtimedwait" , RtSigtimedwait ) ,
129 : syscalls . Supported ( "rt_sigqueueinfo" , RtSigqueueinfo ) ,
130 : syscalls . Supported ( "rt_sigsuspend" , RtSigsuspend ) ,
131 : syscalls . Supported ( "sigaltstack" , Sigaltstack ) ,
132 : syscalls . Supported ( "utime" , Utime ) ,
2022-11-14 13:08:40 -08:00
133 : syscalls . Supported ( "mknod" , Mknod ) ,
2021-08-12 15:16:45 -07:00
134 : syscalls . Error ( "uselib" , linuxerr . ENOSYS , "Obsolete" , nil ) ,
2021-06-29 15:05:27 -07:00
135 : syscalls . ErrorWithEvent ( "personality" , linuxerr . EINVAL , "Unable to change personality." , nil ) ,
2021-08-12 15:16:45 -07:00
136 : syscalls . ErrorWithEvent ( "ustat" , linuxerr . ENOSYS , "Needs filesystem support." , nil ) ,
2022-11-14 13:08:40 -08:00
137 : syscalls . Supported ( "statfs" , Statfs ) ,
138 : syscalls . Supported ( "fstatfs" , Fstatfs ) ,
2021-08-12 15:16:45 -07:00
139 : syscalls . ErrorWithEvent ( "sysfs" , linuxerr . ENOSYS , "" , [ ] string { "gvisor.dev/issue/165" } ) ,
2020-05-06 14:12:08 -07:00
140 : syscalls . PartiallySupported ( "getpriority" , Getpriority , "Stub implementation." , nil ) ,
141 : syscalls . PartiallySupported ( "setpriority" , Setpriority , "Stub implementation." , nil ) ,
142 : syscalls . CapError ( "sched_setparam" , linux . CAP_SYS_NICE , "" , nil ) ,
143 : syscalls . PartiallySupported ( "sched_getparam" , SchedGetparam , "Stub implementation." , nil ) ,
144 : syscalls . PartiallySupported ( "sched_setscheduler" , SchedSetscheduler , "Stub implementation." , nil ) ,
145 : syscalls . PartiallySupported ( "sched_getscheduler" , SchedGetscheduler , "Stub implementation." , nil ) ,
146 : syscalls . PartiallySupported ( "sched_get_priority_max" , SchedGetPriorityMax , "Stub implementation." , nil ) ,
147 : syscalls . PartiallySupported ( "sched_get_priority_min" , SchedGetPriorityMin , "Stub implementation." , nil ) ,
2021-06-30 08:15:44 -07:00
148 : syscalls . ErrorWithEvent ( "sched_rr_get_interval" , linuxerr . EPERM , "" , nil ) ,
2020-05-06 14:12:08 -07:00
149 : syscalls . PartiallySupported ( "mlock" , Mlock , "Stub implementation. The sandbox lacks appropriate permissions." , nil ) ,
150 : syscalls . PartiallySupported ( "munlock" , Munlock , "Stub implementation. The sandbox lacks appropriate permissions." , nil ) ,
151 : syscalls . PartiallySupported ( "mlockall" , Mlockall , "Stub implementation. The sandbox lacks appropriate permissions." , nil ) ,
152 : syscalls . PartiallySupported ( "munlockall" , Munlockall , "Stub implementation. The sandbox lacks appropriate permissions." , nil ) ,
153 : syscalls . CapError ( "vhangup" , linux . CAP_SYS_TTY_CONFIG , "" , nil ) ,
2021-06-30 08:15:44 -07:00
154 : syscalls . Error ( "modify_ldt" , linuxerr . EPERM , "" , nil ) ,
2022-11-14 13:08:40 -08:00
155 : syscalls . Supported ( "pivot_root" , PivotRoot ) ,
2021-06-30 08:15:44 -07:00
156 : syscalls . Error ( "sysctl" , linuxerr . EPERM , "Deprecated. Use /proc/sys instead." , nil ) ,
2020-05-06 14:12:08 -07:00
157 : syscalls . PartiallySupported ( "prctl" , Prctl , "Not all options are supported." , nil ) ,
158 : syscalls . PartiallySupported ( "arch_prctl" , ArchPrctl , "Options ARCH_GET_GS, ARCH_SET_GS not supported." , nil ) ,
159 : syscalls . CapError ( "adjtimex" , linux . CAP_SYS_TIME , "" , nil ) ,
160 : syscalls . PartiallySupported ( "setrlimit" , Setrlimit , "Not all rlimits are enforced." , nil ) ,
2022-06-24 19:35:05 -07:00
161 : syscalls . SupportedPoint ( "chroot" , Chroot , PointChroot ) ,
2022-11-14 13:08:40 -08:00
162 : syscalls . Supported ( "sync" , Sync ) ,
2020-05-06 14:12:08 -07:00
163 : syscalls . CapError ( "acct" , linux . CAP_SYS_PACCT , "" , nil ) ,
164 : syscalls . CapError ( "settimeofday" , linux . CAP_SYS_TIME , "" , nil ) ,
2022-11-14 13:08:40 -08:00
165 : syscalls . Supported ( "mount" , Mount ) ,
166 : syscalls . Supported ( "umount2" , Umount2 ) ,
2020-05-06 14:12:08 -07:00
167 : syscalls . CapError ( "swapon" , linux . CAP_SYS_ADMIN , "" , nil ) ,
168 : syscalls . CapError ( "swapoff" , linux . CAP_SYS_ADMIN , "" , nil ) ,
169 : syscalls . CapError ( "reboot" , linux . CAP_SYS_BOOT , "" , nil ) ,
170 : syscalls . Supported ( "sethostname" , Sethostname ) ,
171 : syscalls . Supported ( "setdomainname" , Setdomainname ) ,
172 : syscalls . CapError ( "iopl" , linux . CAP_SYS_RAWIO , "" , nil ) ,
173 : syscalls . CapError ( "ioperm" , linux . CAP_SYS_RAWIO , "" , nil ) ,
174 : syscalls . CapError ( "create_module" , linux . CAP_SYS_MODULE , "" , nil ) ,
175 : syscalls . CapError ( "init_module" , linux . CAP_SYS_MODULE , "" , nil ) ,
176 : syscalls . CapError ( "delete_module" , linux . CAP_SYS_MODULE , "" , nil ) ,
2021-08-12 15:16:45 -07:00
177 : syscalls . Error ( "get_kernel_syms" , linuxerr . ENOSYS , "Not supported in Linux > 2.6." , nil ) ,
178 : syscalls . Error ( "query_module" , linuxerr . ENOSYS , "Not supported in Linux > 2.6." , nil ) ,
2020-05-06 14:12:08 -07:00
179 : syscalls . CapError ( "quotactl" , linux . CAP_SYS_ADMIN , "" , nil ) , // requires cap_sys_admin for most operations
2021-08-12 15:16:45 -07:00
180 : syscalls . Error ( "nfsservctl" , linuxerr . ENOSYS , "Removed after Linux 3.1." , nil ) ,
181 : syscalls . Error ( "getpmsg" , linuxerr . ENOSYS , "Not implemented in Linux." , nil ) ,
182 : syscalls . Error ( "putpmsg" , linuxerr . ENOSYS , "Not implemented in Linux." , nil ) ,
2023-02-27 14:25:58 -08:00
183 : syscalls . PartiallySupported ( "afs_syscall" , AFSSyscall , "Test implementation." , nil ) ,
2021-08-12 15:16:45 -07:00
184 : syscalls . Error ( "tuxcall" , linuxerr . ENOSYS , "Not implemented in Linux." , nil ) ,
185 : syscalls . Error ( "security" , linuxerr . ENOSYS , "Not implemented in Linux." , nil ) ,
2020-05-06 14:12:08 -07:00
186 : syscalls . Supported ( "gettid" , Gettid ) ,
187 : syscalls . Supported ( "readahead" , Readahead ) ,
2022-11-14 13:08:40 -08:00
188 : syscalls . Supported ( "setxattr" , SetXattr ) ,
189 : syscalls . Supported ( "lsetxattr" , Lsetxattr ) ,
190 : syscalls . Supported ( "fsetxattr" , Fsetxattr ) ,
191 : syscalls . Supported ( "getxattr" , GetXattr ) ,
192 : syscalls . Supported ( "lgetxattr" , Lgetxattr ) ,
193 : syscalls . Supported ( "fgetxattr" , Fgetxattr ) ,
194 : syscalls . Supported ( "listxattr" , ListXattr ) ,
195 : syscalls . Supported ( "llistxattr" , Llistxattr ) ,
196 : syscalls . Supported ( "flistxattr" , Flistxattr ) ,
197 : syscalls . Supported ( "removexattr" , RemoveXattr ) ,
198 : syscalls . Supported ( "lremovexattr" , Lremovexattr ) ,
199 : syscalls . Supported ( "fremovexattr" , Fremovexattr ) ,
2020-05-06 14:12:08 -07:00
200 : syscalls . Supported ( "tkill" , Tkill ) ,
201 : syscalls . Supported ( "time" , Time ) ,
202 : syscalls . PartiallySupported ( "futex" , Futex , "Robust futexes not supported." , nil ) ,
203 : syscalls . PartiallySupported ( "sched_setaffinity" , SchedSetaffinity , "Stub implementation." , nil ) ,
204 : syscalls . PartiallySupported ( "sched_getaffinity" , SchedGetaffinity , "Stub implementation." , nil ) ,
2021-08-12 15:16:45 -07:00
205 : syscalls . Error ( "set_thread_area" , linuxerr . ENOSYS , "Expected to return ENOSYS on 64-bit" , nil ) ,
2020-05-06 14:12:08 -07:00
206 : syscalls . PartiallySupported ( "io_setup" , IoSetup , "Generally supported with exceptions. User ring optimizations are not implemented." , [ ] string { "gvisor.dev/issue/204" } ) ,
207 : syscalls . PartiallySupported ( "io_destroy" , IoDestroy , "Generally supported with exceptions. User ring optimizations are not implemented." , [ ] string { "gvisor.dev/issue/204" } ) ,
208 : syscalls . PartiallySupported ( "io_getevents" , IoGetevents , "Generally supported with exceptions. User ring optimizations are not implemented." , [ ] string { "gvisor.dev/issue/204" } ) ,
209 : syscalls . PartiallySupported ( "io_submit" , IoSubmit , "Generally supported with exceptions. User ring optimizations are not implemented." , [ ] string { "gvisor.dev/issue/204" } ) ,
210 : syscalls . PartiallySupported ( "io_cancel" , IoCancel , "Generally supported with exceptions. User ring optimizations are not implemented." , [ ] string { "gvisor.dev/issue/204" } ) ,
2021-08-12 15:16:45 -07:00
211 : syscalls . Error ( "get_thread_area" , linuxerr . ENOSYS , "Expected to return ENOSYS on 64-bit" , nil ) ,
2020-05-06 14:12:08 -07:00
212 : syscalls . CapError ( "lookup_dcookie" , linux . CAP_SYS_ADMIN , "" , nil ) ,
213 : syscalls . Supported ( "epoll_create" , EpollCreate ) ,
2021-08-12 15:16:45 -07:00
214 : syscalls . ErrorWithEvent ( "epoll_ctl_old" , linuxerr . ENOSYS , "Deprecated." , nil ) ,
215 : syscalls . ErrorWithEvent ( "epoll_wait_old" , linuxerr . ENOSYS , "Deprecated." , nil ) ,
216 : syscalls . ErrorWithEvent ( "remap_file_pages" , linuxerr . ENOSYS , "Deprecated since Linux 3.16." , nil ) ,
2020-05-06 14:12:08 -07:00
217 : syscalls . Supported ( "getdents64" , Getdents64 ) ,
218 : syscalls . Supported ( "set_tid_address" , SetTidAddress ) ,
219 : syscalls . Supported ( "restart_syscall" , RestartSyscall ) ,
2021-02-11 12:19:48 -08:00
220 : syscalls . Supported ( "semtimedop" , Semtimedop ) ,
2022-11-14 13:08:40 -08:00
221 : syscalls . PartiallySupported ( "fadvise64" , Fadvise64 , "The syscall is 'supported', but ignores all provided advice." , nil ) ,
2020-05-06 14:12:08 -07:00
222 : syscalls . Supported ( "timer_create" , TimerCreate ) ,
223 : syscalls . Supported ( "timer_settime" , TimerSettime ) ,
224 : syscalls . Supported ( "timer_gettime" , TimerGettime ) ,
225 : syscalls . Supported ( "timer_getoverrun" , TimerGetoverrun ) ,
226 : syscalls . Supported ( "timer_delete" , TimerDelete ) ,
227 : syscalls . Supported ( "clock_settime" , ClockSettime ) ,
228 : syscalls . Supported ( "clock_gettime" , ClockGettime ) ,
229 : syscalls . Supported ( "clock_getres" , ClockGetres ) ,
230 : syscalls . Supported ( "clock_nanosleep" , ClockNanosleep ) ,
231 : syscalls . Supported ( "exit_group" , ExitGroup ) ,
232 : syscalls . Supported ( "epoll_wait" , EpollWait ) ,
233 : syscalls . Supported ( "epoll_ctl" , EpollCtl ) ,
234 : syscalls . Supported ( "tgkill" , Tgkill ) ,
235 : syscalls . Supported ( "utimes" , Utimes ) ,
2021-08-12 15:16:45 -07:00
236 : syscalls . Error ( "vserver" , linuxerr . ENOSYS , "Not implemented by Linux" , nil ) ,
2020-05-06 14:12:08 -07:00
237 : syscalls . PartiallySupported ( "mbind" , Mbind , "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." , [ ] string { "gvisor.dev/issue/262" } ) ,
238 : syscalls . PartiallySupported ( "set_mempolicy" , SetMempolicy , "Stub implementation." , nil ) ,
239 : syscalls . PartiallySupported ( "get_mempolicy" , GetMempolicy , "Stub implementation." , nil ) ,
2022-11-14 13:08:40 -08:00
240 : syscalls . Supported ( "mq_open" , MqOpen ) ,
241 : syscalls . Supported ( "mq_unlink" , MqUnlink ) ,
2021-08-12 15:16:45 -07:00
242 : syscalls . ErrorWithEvent ( "mq_timedsend" , linuxerr . ENOSYS , "" , [ ] string { "gvisor.dev/issue/136" } ) , // TODO(b/29354921)
243 : syscalls . ErrorWithEvent ( "mq_timedreceive" , linuxerr . ENOSYS , "" , [ ] string { "gvisor.dev/issue/136" } ) , // TODO(b/29354921)
244 : syscalls . ErrorWithEvent ( "mq_notify" , linuxerr . ENOSYS , "" , [ ] string { "gvisor.dev/issue/136" } ) , // TODO(b/29354921)
245 : syscalls . ErrorWithEvent ( "mq_getsetattr" , linuxerr . ENOSYS , "" , [ ] string { "gvisor.dev/issue/136" } ) , // TODO(b/29354921)
2020-05-06 14:12:08 -07:00
246 : syscalls . CapError ( "kexec_load" , linux . CAP_SYS_BOOT , "" , nil ) ,
247 : syscalls . Supported ( "waitid" , Waitid ) ,
2021-06-30 08:15:44 -07:00
248 : syscalls . Error ( "add_key" , linuxerr . EACCES , "Not available to user." , nil ) ,
249 : syscalls . Error ( "request_key" , linuxerr . EACCES , "Not available to user." , nil ) ,
2023-09-20 12:34:34 -07:00
250 : syscalls . PartiallySupported ( "keyctl" , Keyctl , "Only supports session keyrings with zero keys in them." , nil ) ,
2020-05-06 14:12:08 -07:00
251 : syscalls . CapError ( "ioprio_set" , linux . CAP_SYS_ADMIN , "" , nil ) , // requires cap_sys_nice or cap_sys_admin (depending)
252 : syscalls . CapError ( "ioprio_get" , linux . CAP_SYS_ADMIN , "" , nil ) , // requires cap_sys_nice or cap_sys_admin (depending)
2022-11-14 13:08:40 -08:00
253 : syscalls . PartiallySupportedPoint ( "inotify_init" , InotifyInit , PointInotifyInit , "inotify events are only available inside the sandbox." , nil ) ,
254 : syscalls . PartiallySupportedPoint ( "inotify_add_watch" , InotifyAddWatch , PointInotifyAddWatch , "inotify events are only available inside the sandbox." , nil ) ,
255 : syscalls . PartiallySupportedPoint ( "inotify_rm_watch" , InotifyRmWatch , PointInotifyRmWatch , "inotify events are only available inside the sandbox." , nil ) ,
2020-05-06 14:12:08 -07:00
256 : syscalls . CapError ( "migrate_pages" , linux . CAP_SYS_NICE , "" , nil ) ,
2022-05-02 13:00:17 -07:00
257 : syscalls . SupportedPoint ( "openat" , Openat , PointOpenat ) ,
2020-05-06 14:12:08 -07:00
258 : syscalls . Supported ( "mkdirat" , Mkdirat ) ,
259 : syscalls . Supported ( "mknodat" , Mknodat ) ,
260 : syscalls . Supported ( "fchownat" , Fchownat ) ,
261 : syscalls . Supported ( "futimesat" , Futimesat ) ,
2022-11-14 13:08:40 -08:00
262 : syscalls . Supported ( "newfstatat" , Newfstatat ) ,
2020-05-06 14:12:08 -07:00
263 : syscalls . Supported ( "unlinkat" , Unlinkat ) ,
264 : syscalls . Supported ( "renameat" , Renameat ) ,
2022-11-14 13:08:40 -08:00
265 : syscalls . Supported ( "linkat" , Linkat ) ,
2020-05-06 14:12:08 -07:00
266 : syscalls . Supported ( "symlinkat" , Symlinkat ) ,
267 : syscalls . Supported ( "readlinkat" , Readlinkat ) ,
268 : syscalls . Supported ( "fchmodat" , Fchmodat ) ,
269 : syscalls . Supported ( "faccessat" , Faccessat ) ,
2023-01-19 16:35:59 -08:00
270 : syscalls . Supported ( "pselect6" , Pselect6 ) ,
2020-05-06 14:12:08 -07:00
271 : syscalls . Supported ( "ppoll" , Ppoll ) ,
2024-08-15 14:01:19 -07:00
272 : syscalls . PartiallySupported ( "unshare" , Unshare , "Time, cgroup namespaces not supported." , nil ) ,
2020-07-23 17:40:46 -07:00
273 : syscalls . Supported ( "set_robust_list" , SetRobustList ) ,
274 : syscalls . Supported ( "get_robust_list" , GetRobustList ) ,
2020-05-06 14:12:08 -07:00
275 : syscalls . Supported ( "splice" , Splice ) ,
276 : syscalls . Supported ( "tee" , Tee ) ,
2022-11-14 13:08:40 -08:00
277 : syscalls . Supported ( "sync_file_range" , SyncFileRange ) ,
2021-08-12 15:16:45 -07:00
278 : syscalls . ErrorWithEvent ( "vmsplice" , linuxerr . ENOSYS , "" , [ ] string { "gvisor.dev/issue/138" } ) , // TODO(b/29354098)
2020-05-06 14:12:08 -07:00
279 : syscalls . CapError ( "move_pages" , linux . CAP_SYS_NICE , "" , nil ) , // requires cap_sys_nice (mostly)
280 : syscalls . Supported ( "utimensat" , Utimensat ) ,
281 : syscalls . Supported ( "epoll_pwait" , EpollPwait ) ,
2022-11-14 13:08:40 -08:00
282 : syscalls . SupportedPoint ( "signalfd" , Signalfd , PointSignalfd ) ,
2022-07-07 14:07:20 -07:00
283 : syscalls . SupportedPoint ( "timerfd_create" , TimerfdCreate , PointTimerfdCreate ) ,
2022-06-24 19:35:05 -07:00
284 : syscalls . SupportedPoint ( "eventfd" , Eventfd , PointEventfd ) ,
2020-05-06 14:12:08 -07:00
285 : syscalls . PartiallySupported ( "fallocate" , Fallocate , "Not all options are supported." , nil ) ,
2022-07-07 14:07:20 -07:00
286 : syscalls . SupportedPoint ( "timerfd_settime" , TimerfdSettime , PointTimerfdSettime ) ,
287 : syscalls . SupportedPoint ( "timerfd_gettime" , TimerfdGettime , PointTimerfdGettime ) ,
2022-06-24 19:35:05 -07:00
288 : syscalls . SupportedPoint ( "accept4" , Accept4 , PointAccept4 ) ,
2022-11-14 13:08:40 -08:00
289 : syscalls . SupportedPoint ( "signalfd4" , Signalfd4 , PointSignalfd4 ) ,
2022-06-24 19:35:05 -07:00
290 : syscalls . SupportedPoint ( "eventfd2" , Eventfd2 , PointEventfd2 ) ,
2020-05-06 14:12:08 -07:00
291 : syscalls . Supported ( "epoll_create1" , EpollCreate1 ) ,
2022-06-24 19:35:05 -07:00
292 : syscalls . SupportedPoint ( "dup3" , Dup3 , PointDup3 ) ,
293 : syscalls . SupportedPoint ( "pipe2" , Pipe2 , PointPipe2 ) ,
2022-11-14 13:08:40 -08:00
294 : syscalls . PartiallySupportedPoint ( "inotify_init1" , InotifyInit1 , PointInotifyInit1 , "inotify events are only available inside the sandbox." , nil ) ,
2022-11-15 11:51:50 -08:00
295 : syscalls . SupportedPoint ( "preadv" , Preadv , PointPreadv ) ,
296 : syscalls . SupportedPoint ( "pwritev" , Pwritev , PointPwritev ) ,
2020-05-06 14:12:08 -07:00
297 : syscalls . Supported ( "rt_tgsigqueueinfo" , RtTgsigqueueinfo ) ,
2021-07-01 12:02:59 -07:00
298 : syscalls . ErrorWithEvent ( "perf_event_open" , linuxerr . ENODEV , "No support for perf counters" , nil ) ,
2022-11-14 13:08:40 -08:00
299 : syscalls . Supported ( "recvmmsg" , RecvMMsg ) ,
2021-08-12 15:16:45 -07:00
300 : syscalls . ErrorWithEvent ( "fanotify_init" , linuxerr . ENOSYS , "Needs CONFIG_FANOTIFY" , nil ) ,
301 : syscalls . ErrorWithEvent ( "fanotify_mark" , linuxerr . ENOSYS , "Needs CONFIG_FANOTIFY" , nil ) ,
2022-06-24 19:35:05 -07:00
302 : syscalls . SupportedPoint ( "prlimit64" , Prlimit64 , PointPrlimit64 ) ,
2021-07-12 15:24:04 -07:00
303 : syscalls . Error ( "name_to_handle_at" , linuxerr . EOPNOTSUPP , "Not supported by gVisor filesystems" , nil ) ,
304 : syscalls . Error ( "open_by_handle_at" , linuxerr . EOPNOTSUPP , "Not supported by gVisor filesystems" , nil ) ,
2020-05-06 14:12:08 -07:00
305 : syscalls . CapError ( "clock_adjtime" , linux . CAP_SYS_TIME , "" , nil ) ,
2022-11-14 13:08:40 -08:00
306 : syscalls . Supported ( "syncfs" , Syncfs ) ,
307 : syscalls . Supported ( "sendmmsg" , SendMMsg ) ,
2023-07-24 15:42:22 -07:00
308 : syscalls . Supported ( "setns" , Setns ) ,
2020-05-06 14:12:08 -07:00
309 : syscalls . Supported ( "getcpu" , Getcpu ) ,
2023-10-03 14:59:20 -07:00
310 : syscalls . Supported ( "process_vm_readv" , ProcessVMReadv ) ,
311 : syscalls . Supported ( "process_vm_writev" , ProcessVMWritev ) ,
2020-05-06 14:12:08 -07:00
312 : syscalls . CapError ( "kcmp" , linux . CAP_SYS_PTRACE , "" , nil ) ,
313 : syscalls . CapError ( "finit_module" , linux . CAP_SYS_MODULE , "" , nil ) ,
2021-08-12 15:16:45 -07:00
314 : syscalls . ErrorWithEvent ( "sched_setattr" , linuxerr . ENOSYS , "gVisor does not implement a scheduler." , [ ] string { "gvisor.dev/issue/264" } ) , // TODO(b/118902272)
315 : syscalls . ErrorWithEvent ( "sched_getattr" , linuxerr . ENOSYS , "gVisor does not implement a scheduler." , [ ] string { "gvisor.dev/issue/264" } ) , // TODO(b/118902272)
2022-11-14 13:08:40 -08:00
316 : syscalls . Supported ( "renameat2" , Renameat2 ) ,
2020-05-06 14:12:08 -07:00
317 : syscalls . Supported ( "seccomp" , Seccomp ) ,
318 : syscalls . Supported ( "getrandom" , GetRandom ) ,
319 : syscalls . Supported ( "memfd_create" , MemfdCreate ) ,
320 : syscalls . CapError ( "kexec_file_load" , linux . CAP_SYS_BOOT , "" , nil ) ,
321 : syscalls . CapError ( "bpf" , linux . CAP_SYS_ADMIN , "" , nil ) ,
2022-05-02 13:00:17 -07:00
322 : syscalls . SupportedPoint ( "execveat" , Execveat , PointExecveat ) ,
2021-08-12 15:16:45 -07:00
323 : syscalls . ErrorWithEvent ( "userfaultfd" , linuxerr . ENOSYS , "" , [ ] string { "gvisor.dev/issue/266" } ) , // TODO(b/118906345)
2020-10-06 13:53:26 -07:00
324 : syscalls . PartiallySupported ( "membarrier" , Membarrier , "Not supported on all platforms." , nil ) ,
2020-05-06 14:12:08 -07:00
325 : syscalls . PartiallySupported ( "mlock2" , Mlock2 , "Stub implementation. The sandbox lacks appropriate permissions." , nil ) ,
// Syscalls implemented after 325 are "backports" from versions
// of Linux after 4.4.
2021-08-12 15:16:45 -07:00
326 : syscalls . ErrorWithEvent ( "copy_file_range" , linuxerr . ENOSYS , "" , nil ) ,
2022-11-15 11:51:50 -08:00
327 : syscalls . SupportedPoint ( "preadv2" , Preadv2 , PointPreadv2 ) ,
328 : syscalls . SupportedPoint ( "pwritev2" , Pwritev2 , PointPwritev2 ) ,
2021-08-12 15:16:45 -07:00
329 : syscalls . ErrorWithEvent ( "pkey_mprotect" , linuxerr . ENOSYS , "" , nil ) ,
330 : syscalls . ErrorWithEvent ( "pkey_alloc" , linuxerr . ENOSYS , "" , nil ) ,
331 : syscalls . ErrorWithEvent ( "pkey_free" , linuxerr . ENOSYS , "" , nil ) ,
2020-05-06 14:12:08 -07:00
332 : syscalls . Supported ( "statx" , Statx ) ,
2021-08-12 15:16:45 -07:00
333 : syscalls . ErrorWithEvent ( "io_pgetevents" , linuxerr . ENOSYS , "" , nil ) ,
2020-05-06 14:12:08 -07:00
334 : syscalls . PartiallySupported ( "rseq" , RSeq , "Not supported on all platforms." , nil ) ,
// Linux skips ahead to syscall 424 to sync numbers between arches.
2021-08-12 15:16:45 -07:00
424 : syscalls . ErrorWithEvent ( "pidfd_send_signal" , linuxerr . ENOSYS , "" , nil ) ,
2022-11-14 13:08:40 -08:00
425 : syscalls . PartiallySupported ( "io_uring_setup" , IOUringSetup , "Not all flags and functionality supported." , nil ) ,
426 : syscalls . PartiallySupported ( "io_uring_enter" , IOUringEnter , "Not all flags and functionality supported." , nil ) ,
2021-08-12 15:16:45 -07:00
427 : syscalls . ErrorWithEvent ( "io_uring_register" , linuxerr . ENOSYS , "" , nil ) ,
428 : syscalls . ErrorWithEvent ( "open_tree" , linuxerr . ENOSYS , "" , nil ) ,
429 : syscalls . ErrorWithEvent ( "move_mount" , linuxerr . ENOSYS , "" , nil ) ,
430 : syscalls . ErrorWithEvent ( "fsopen" , linuxerr . ENOSYS , "" , nil ) ,
431 : syscalls . ErrorWithEvent ( "fsconfig" , linuxerr . ENOSYS , "" , nil ) ,
432 : syscalls . ErrorWithEvent ( "fsmount" , linuxerr . ENOSYS , "" , nil ) ,
433 : syscalls . ErrorWithEvent ( "fspick" , linuxerr . ENOSYS , "" , nil ) ,
434 : syscalls . ErrorWithEvent ( "pidfd_open" , linuxerr . ENOSYS , "" , nil ) ,
2023-08-25 11:55:45 -07:00
435 : syscalls . PartiallySupported ( "clone3" , Clone3 , "Options CLONE_PIDFD, CLONE_NEWCGROUP, CLONE_INTO_CGROUP, CLONE_NEWTIME, CLONE_CLEAR_SIGHAND, CLONE_PARENT, CLONE_SYSVSEM and, SetTid are not supported." , nil ) ,
2022-02-28 09:33:46 -08:00
436 : syscalls . Supported ( "close_range" , CloseRange ) ,
2022-11-14 13:08:40 -08:00
439 : syscalls . Supported ( "faccessat2" , Faccessat2 ) ,
2021-04-29 15:19:22 -07:00
441 : syscalls . Supported ( "epoll_pwait2" , EpollPwait2 ) ,
2020-05-06 14:12:08 -07:00
} ,
2021-03-29 13:28:32 -07:00
Emulate : map [ hostarch . Addr ] uintptr {
2020-05-06 14:12:08 -07:00
0xffffffffff600000 : 96 , // vsyscall gettimeofday(2)
0xffffffffff600400 : 201 , // vsyscall time(2)
0xffffffffff600800 : 309 , // vsyscall getcpu(2)
} ,
Missing : func ( t * kernel . Task , sysno uintptr , args arch . SyscallArguments ) ( uintptr , error ) {
2023-03-22 12:03:47 -07:00
t . Kernel ( ) . EmitUnimplementedEvent ( t , sysno )
2021-08-12 15:16:45 -07:00
return 0 , linuxerr . ENOSYS
2020-05-06 14:12:08 -07:00
} ,
}
// ARM64 is a table of Linux arm64 syscall API with the corresponding syscall
// numbers from Linux 4.4.
var ARM64 = & kernel . SyscallTable {
OS : abi . Linux ,
Arch : arch . ARM64 ,
Version : kernel . Version {
Sysname : LinuxSysname ,
Release : LinuxRelease ,
Version : LinuxVersion ,
} ,
AuditNumber : linux . AUDIT_ARCH_AARCH64 ,
Table : map [ uintptr ] kernel . Syscall {
0 : syscalls . PartiallySupported ( "io_setup" , IoSetup , "Generally supported with exceptions. User ring optimizations are not implemented." , [ ] string { "gvisor.dev/issue/204" } ) ,
1 : syscalls . PartiallySupported ( "io_destroy" , IoDestroy , "Generally supported with exceptions. User ring optimizations are not implemented." , [ ] string { "gvisor.dev/issue/204" } ) ,
2 : syscalls . PartiallySupported ( "io_submit" , IoSubmit , "Generally supported with exceptions. User ring optimizations are not implemented." , [ ] string { "gvisor.dev/issue/204" } ) ,
3 : syscalls . PartiallySupported ( "io_cancel" , IoCancel , "Generally supported with exceptions. User ring optimizations are not implemented." , [ ] string { "gvisor.dev/issue/204" } ) ,
4 : syscalls . PartiallySupported ( "io_getevents" , IoGetevents , "Generally supported with exceptions. User ring optimizations are not implemented." , [ ] string { "gvisor.dev/issue/204" } ) ,
2022-11-14 13:08:40 -08:00
5 : syscalls . Supported ( "setxattr" , SetXattr ) ,
6 : syscalls . Supported ( "lsetxattr" , Lsetxattr ) ,
7 : syscalls . Supported ( "fsetxattr" , Fsetxattr ) ,
8 : syscalls . Supported ( "getxattr" , GetXattr ) ,
9 : syscalls . Supported ( "lgetxattr" , Lgetxattr ) ,
10 : syscalls . Supported ( "fgetxattr" , Fgetxattr ) ,
11 : syscalls . Supported ( "listxattr" , ListXattr ) ,
12 : syscalls . Supported ( "llistxattr" , Llistxattr ) ,
13 : syscalls . Supported ( "flistxattr" , Flistxattr ) ,
14 : syscalls . Supported ( "removexattr" , RemoveXattr ) ,
15 : syscalls . Supported ( "lremovexattr" , Lremovexattr ) ,
16 : syscalls . Supported ( "fremovexattr" , Fremovexattr ) ,
2020-05-06 14:12:08 -07:00
17 : syscalls . Supported ( "getcwd" , Getcwd ) ,
18 : syscalls . CapError ( "lookup_dcookie" , linux . CAP_SYS_ADMIN , "" , nil ) ,
2022-06-24 19:35:05 -07:00
19 : syscalls . SupportedPoint ( "eventfd2" , Eventfd2 , PointEventfd2 ) ,
2020-05-06 14:12:08 -07:00
20 : syscalls . Supported ( "epoll_create1" , EpollCreate1 ) ,
21 : syscalls . Supported ( "epoll_ctl" , EpollCtl ) ,
22 : syscalls . Supported ( "epoll_pwait" , EpollPwait ) ,
2022-06-24 19:35:05 -07:00
23 : syscalls . SupportedPoint ( "dup" , Dup , PointDup ) ,
24 : syscalls . SupportedPoint ( "dup3" , Dup3 , PointDup3 ) ,
2022-11-14 13:08:40 -08:00
25 : syscalls . SupportedPoint ( "fcntl" , Fcntl , PointFcntl ) ,
26 : syscalls . PartiallySupportedPoint ( "inotify_init1" , InotifyInit1 , PointInotifyInit1 , "inotify events are only available inside the sandbox." , nil ) ,
27 : syscalls . PartiallySupportedPoint ( "inotify_add_watch" , InotifyAddWatch , PointInotifyAddWatch , "inotify events are only available inside the sandbox." , nil ) ,
28 : syscalls . PartiallySupportedPoint ( "inotify_rm_watch" , InotifyRmWatch , PointInotifyRmWatch , "inotify events are only available inside the sandbox." , nil ) ,
29 : syscalls . Supported ( "ioctl" , Ioctl ) ,
2020-05-06 14:12:08 -07:00
30 : syscalls . CapError ( "ioprio_set" , linux . CAP_SYS_ADMIN , "" , nil ) , // requires cap_sys_nice or cap_sys_admin (depending)
31 : syscalls . CapError ( "ioprio_get" , linux . CAP_SYS_ADMIN , "" , nil ) , // requires cap_sys_nice or cap_sys_admin (depending)
2022-11-14 13:08:40 -08:00
32 : syscalls . Supported ( "flock" , Flock ) ,
2020-05-06 14:12:08 -07:00
33 : syscalls . Supported ( "mknodat" , Mknodat ) ,
34 : syscalls . Supported ( "mkdirat" , Mkdirat ) ,
35 : syscalls . Supported ( "unlinkat" , Unlinkat ) ,
36 : syscalls . Supported ( "symlinkat" , Symlinkat ) ,
37 : syscalls . Supported ( "linkat" , Linkat ) ,
38 : syscalls . Supported ( "renameat" , Renameat ) ,
2022-11-14 13:08:40 -08:00
39 : syscalls . Supported ( "umount2" , Umount2 ) ,
40 : syscalls . Supported ( "mount" , Mount ) ,
41 : syscalls . Supported ( "pivot_root" , PivotRoot ) ,
2021-08-12 15:16:45 -07:00
42 : syscalls . Error ( "nfsservctl" , linuxerr . ENOSYS , "Removed after Linux 3.1." , nil ) ,
2022-11-14 13:08:40 -08:00
43 : syscalls . Supported ( "statfs" , Statfs ) ,
44 : syscalls . Supported ( "fstatfs" , Fstatfs ) ,
2020-05-06 14:12:08 -07:00
45 : syscalls . Supported ( "truncate" , Truncate ) ,
46 : syscalls . Supported ( "ftruncate" , Ftruncate ) ,
47 : syscalls . PartiallySupported ( "fallocate" , Fallocate , "Not all options are supported." , nil ) ,
48 : syscalls . Supported ( "faccessat" , Faccessat ) ,
2022-05-25 13:31:29 -07:00
49 : syscalls . SupportedPoint ( "chdir" , Chdir , PointChdir ) ,
50 : syscalls . SupportedPoint ( "fchdir" , Fchdir , PointFchdir ) ,
2022-06-24 19:35:05 -07:00
51 : syscalls . SupportedPoint ( "chroot" , Chroot , PointChroot ) ,
2022-11-14 13:08:40 -08:00
52 : syscalls . Supported ( "fchmod" , Fchmod ) ,
2020-05-06 14:12:08 -07:00
53 : syscalls . Supported ( "fchmodat" , Fchmodat ) ,
54 : syscalls . Supported ( "fchownat" , Fchownat ) ,
55 : syscalls . Supported ( "fchown" , Fchown ) ,
2022-05-02 13:00:17 -07:00
56 : syscalls . SupportedPoint ( "openat" , Openat , PointOpenat ) ,
2022-11-14 13:08:40 -08:00
57 : syscalls . SupportedPoint ( "close" , Close , PointClose ) ,
2020-05-06 14:12:08 -07:00
58 : syscalls . CapError ( "vhangup" , linux . CAP_SYS_TTY_CONFIG , "" , nil ) ,
2022-06-24 19:35:05 -07:00
59 : syscalls . SupportedPoint ( "pipe2" , Pipe2 , PointPipe2 ) ,
2020-05-06 14:12:08 -07:00
60 : syscalls . CapError ( "quotactl" , linux . CAP_SYS_ADMIN , "" , nil ) , // requires cap_sys_admin for most operations
61 : syscalls . Supported ( "getdents64" , Getdents64 ) ,
62 : syscalls . Supported ( "lseek" , Lseek ) ,
2022-05-02 13:00:17 -07:00
63 : syscalls . SupportedPoint ( "read" , Read , PointRead ) ,
2022-11-15 11:51:50 -08:00
64 : syscalls . SupportedPoint ( "write" , Write , PointWrite ) ,
65 : syscalls . SupportedPoint ( "readv" , Readv , PointReadv ) ,
66 : syscalls . SupportedPoint ( "writev" , Writev , PointWritev ) ,
67 : syscalls . SupportedPoint ( "pread64" , Pread64 , PointPread64 ) ,
68 : syscalls . SupportedPoint ( "pwrite64" , Pwrite64 , PointPwrite64 ) ,
69 : syscalls . SupportedPoint ( "preadv" , Preadv , PointPreadv ) ,
70 : syscalls . SupportedPoint ( "pwritev" , Pwritev , PointPwritev ) ,
2020-05-06 14:12:08 -07:00
71 : syscalls . Supported ( "sendfile" , Sendfile ) ,
2023-01-19 16:35:59 -08:00
72 : syscalls . Supported ( "pselect6" , Pselect6 ) ,
2020-05-06 14:12:08 -07:00
73 : syscalls . Supported ( "ppoll" , Ppoll ) ,
2022-11-14 13:08:40 -08:00
74 : syscalls . SupportedPoint ( "signalfd4" , Signalfd4 , PointSignalfd4 ) ,
2021-08-12 15:16:45 -07:00
75 : syscalls . ErrorWithEvent ( "vmsplice" , linuxerr . ENOSYS , "" , [ ] string { "gvisor.dev/issue/138" } ) , // TODO(b/29354098)
2021-01-20 23:37:41 -08:00
76 : syscalls . Supported ( "splice" , Splice ) ,
2020-05-06 14:12:08 -07:00
77 : syscalls . Supported ( "tee" , Tee ) ,
78 : syscalls . Supported ( "readlinkat" , Readlinkat ) ,
2022-11-14 13:08:40 -08:00
79 : syscalls . Supported ( "newfstatat" , Newfstatat ) ,
2020-05-06 14:12:08 -07:00
80 : syscalls . Supported ( "fstat" , Fstat ) ,
2022-11-14 13:08:40 -08:00
81 : syscalls . Supported ( "sync" , Sync ) ,
82 : syscalls . Supported ( "fsync" , Fsync ) ,
83 : syscalls . Supported ( "fdatasync" , Fdatasync ) ,
84 : syscalls . Supported ( "sync_file_range" , SyncFileRange ) ,
2022-07-07 14:07:20 -07:00
85 : syscalls . SupportedPoint ( "timerfd_create" , TimerfdCreate , PointTimerfdCreate ) ,
86 : syscalls . SupportedPoint ( "timerfd_settime" , TimerfdSettime , PointTimerfdSettime ) ,
87 : syscalls . SupportedPoint ( "timerfd_gettime" , TimerfdGettime , PointTimerfdGettime ) ,
2020-05-06 14:12:08 -07:00
88 : syscalls . Supported ( "utimensat" , Utimensat ) ,
89 : syscalls . CapError ( "acct" , linux . CAP_SYS_PACCT , "" , nil ) ,
90 : syscalls . Supported ( "capget" , Capget ) ,
91 : syscalls . Supported ( "capset" , Capset ) ,
2021-06-29 15:05:27 -07:00
92 : syscalls . ErrorWithEvent ( "personality" , linuxerr . EINVAL , "Unable to change personality." , nil ) ,
2020-05-06 14:12:08 -07:00
93 : syscalls . Supported ( "exit" , Exit ) ,
94 : syscalls . Supported ( "exit_group" , ExitGroup ) ,
95 : syscalls . Supported ( "waitid" , Waitid ) ,
96 : syscalls . Supported ( "set_tid_address" , SetTidAddress ) ,
2024-08-15 14:01:19 -07:00
97 : syscalls . PartiallySupported ( "unshare" , Unshare , "Time, cgroup namespaces not supported." , nil ) ,
2020-05-06 14:12:08 -07:00
98 : syscalls . PartiallySupported ( "futex" , Futex , "Robust futexes not supported." , nil ) ,
2020-09-21 23:11:22 -04:00
99 : syscalls . Supported ( "set_robust_list" , SetRobustList ) ,
100 : syscalls . Supported ( "get_robust_list" , GetRobustList ) ,
2020-05-06 14:12:08 -07:00
101 : syscalls . Supported ( "nanosleep" , Nanosleep ) ,
102 : syscalls . Supported ( "getitimer" , Getitimer ) ,
103 : syscalls . Supported ( "setitimer" , Setitimer ) ,
104 : syscalls . CapError ( "kexec_load" , linux . CAP_SYS_BOOT , "" , nil ) ,
105 : syscalls . CapError ( "init_module" , linux . CAP_SYS_MODULE , "" , nil ) ,
106 : syscalls . CapError ( "delete_module" , linux . CAP_SYS_MODULE , "" , nil ) ,
107 : syscalls . Supported ( "timer_create" , TimerCreate ) ,
108 : syscalls . Supported ( "timer_gettime" , TimerGettime ) ,
109 : syscalls . Supported ( "timer_getoverrun" , TimerGetoverrun ) ,
110 : syscalls . Supported ( "timer_settime" , TimerSettime ) ,
111 : syscalls . Supported ( "timer_delete" , TimerDelete ) ,
112 : syscalls . Supported ( "clock_settime" , ClockSettime ) ,
113 : syscalls . Supported ( "clock_gettime" , ClockGettime ) ,
114 : syscalls . Supported ( "clock_getres" , ClockGetres ) ,
115 : syscalls . Supported ( "clock_nanosleep" , ClockNanosleep ) ,
116 : syscalls . PartiallySupported ( "syslog" , Syslog , "Outputs a dummy message for security reasons." , nil ) ,
117 : syscalls . PartiallySupported ( "ptrace" , Ptrace , "Options PTRACE_PEEKSIGINFO, PTRACE_SECCOMP_GET_FILTER not supported." , nil ) ,
118 : syscalls . CapError ( "sched_setparam" , linux . CAP_SYS_NICE , "" , nil ) ,
119 : syscalls . PartiallySupported ( "sched_setscheduler" , SchedSetscheduler , "Stub implementation." , nil ) ,
120 : syscalls . PartiallySupported ( "sched_getscheduler" , SchedGetscheduler , "Stub implementation." , nil ) ,
121 : syscalls . PartiallySupported ( "sched_getparam" , SchedGetparam , "Stub implementation." , nil ) ,
122 : syscalls . PartiallySupported ( "sched_setaffinity" , SchedSetaffinity , "Stub implementation." , nil ) ,
123 : syscalls . PartiallySupported ( "sched_getaffinity" , SchedGetaffinity , "Stub implementation." , nil ) ,
124 : syscalls . Supported ( "sched_yield" , SchedYield ) ,
125 : syscalls . PartiallySupported ( "sched_get_priority_max" , SchedGetPriorityMax , "Stub implementation." , nil ) ,
126 : syscalls . PartiallySupported ( "sched_get_priority_min" , SchedGetPriorityMin , "Stub implementation." , nil ) ,
2021-06-30 08:15:44 -07:00
127 : syscalls . ErrorWithEvent ( "sched_rr_get_interval" , linuxerr . EPERM , "" , nil ) ,
2020-05-06 14:12:08 -07:00
128 : syscalls . Supported ( "restart_syscall" , RestartSyscall ) ,
129 : syscalls . Supported ( "kill" , Kill ) ,
130 : syscalls . Supported ( "tkill" , Tkill ) ,
131 : syscalls . Supported ( "tgkill" , Tgkill ) ,
132 : syscalls . Supported ( "sigaltstack" , Sigaltstack ) ,
133 : syscalls . Supported ( "rt_sigsuspend" , RtSigsuspend ) ,
134 : syscalls . Supported ( "rt_sigaction" , RtSigaction ) ,
135 : syscalls . Supported ( "rt_sigprocmask" , RtSigprocmask ) ,
136 : syscalls . Supported ( "rt_sigpending" , RtSigpending ) ,
137 : syscalls . Supported ( "rt_sigtimedwait" , RtSigtimedwait ) ,
138 : syscalls . Supported ( "rt_sigqueueinfo" , RtSigqueueinfo ) ,
139 : syscalls . Supported ( "rt_sigreturn" , RtSigreturn ) ,
140 : syscalls . PartiallySupported ( "setpriority" , Setpriority , "Stub implementation." , nil ) ,
141 : syscalls . PartiallySupported ( "getpriority" , Getpriority , "Stub implementation." , nil ) ,
142 : syscalls . CapError ( "reboot" , linux . CAP_SYS_BOOT , "" , nil ) ,
143 : syscalls . Supported ( "setregid" , Setregid ) ,
2022-05-25 13:31:29 -07:00
144 : syscalls . SupportedPoint ( "setgid" , Setgid , PointSetgid ) ,
2020-05-06 14:12:08 -07:00
145 : syscalls . Supported ( "setreuid" , Setreuid ) ,
2022-05-25 13:31:29 -07:00
146 : syscalls . SupportedPoint ( "setuid" , Setuid , PointSetuid ) ,
147 : syscalls . SupportedPoint ( "setresuid" , Setresuid , PointSetresuid ) ,
2020-05-06 14:12:08 -07:00
148 : syscalls . Supported ( "getresuid" , Getresuid ) ,
2022-05-25 13:31:29 -07:00
149 : syscalls . SupportedPoint ( "setresgid" , Setresgid , PointSetresgid ) ,
2020-05-06 14:12:08 -07:00
150 : syscalls . Supported ( "getresgid" , Getresgid ) ,
2021-08-12 15:16:45 -07:00
151 : syscalls . ErrorWithEvent ( "setfsuid" , linuxerr . ENOSYS , "" , [ ] string { "gvisor.dev/issue/260" } ) , // TODO(b/112851702)
152 : syscalls . ErrorWithEvent ( "setfsgid" , linuxerr . ENOSYS , "" , [ ] string { "gvisor.dev/issue/260" } ) , // TODO(b/112851702)
2020-05-06 14:12:08 -07:00
153 : syscalls . Supported ( "times" , Times ) ,
154 : syscalls . Supported ( "setpgid" , Setpgid ) ,
155 : syscalls . Supported ( "getpgid" , Getpgid ) ,
156 : syscalls . Supported ( "getsid" , Getsid ) ,
2022-05-25 13:31:29 -07:00
157 : syscalls . SupportedPoint ( "setsid" , Setsid , PointSetsid ) ,
2020-05-06 14:12:08 -07:00
158 : syscalls . Supported ( "getgroups" , Getgroups ) ,
159 : syscalls . Supported ( "setgroups" , Setgroups ) ,
160 : syscalls . Supported ( "uname" , Uname ) ,
161 : syscalls . Supported ( "sethostname" , Sethostname ) ,
162 : syscalls . Supported ( "setdomainname" , Setdomainname ) ,
163 : syscalls . Supported ( "getrlimit" , Getrlimit ) ,
164 : syscalls . PartiallySupported ( "setrlimit" , Setrlimit , "Not all rlimits are enforced." , nil ) ,
165 : syscalls . PartiallySupported ( "getrusage" , Getrusage , "Fields ru_maxrss, ru_minflt, ru_majflt, ru_inblock, ru_oublock are not supported. Fields ru_utime and ru_stime have low precision." , nil ) ,
166 : syscalls . Supported ( "umask" , Umask ) ,
167 : syscalls . PartiallySupported ( "prctl" , Prctl , "Not all options are supported." , nil ) ,
168 : syscalls . Supported ( "getcpu" , Getcpu ) ,
169 : syscalls . Supported ( "gettimeofday" , Gettimeofday ) ,
170 : syscalls . CapError ( "settimeofday" , linux . CAP_SYS_TIME , "" , nil ) ,
171 : syscalls . CapError ( "adjtimex" , linux . CAP_SYS_TIME , "" , nil ) ,
172 : syscalls . Supported ( "getpid" , Getpid ) ,
173 : syscalls . Supported ( "getppid" , Getppid ) ,
174 : syscalls . Supported ( "getuid" , Getuid ) ,
175 : syscalls . Supported ( "geteuid" , Geteuid ) ,
176 : syscalls . Supported ( "getgid" , Getgid ) ,
177 : syscalls . Supported ( "getegid" , Getegid ) ,
178 : syscalls . Supported ( "gettid" , Gettid ) ,
179 : syscalls . PartiallySupported ( "sysinfo" , Sysinfo , "Fields loads, sharedram, bufferram, totalswap, freeswap, totalhigh, freehigh not supported." , nil ) ,
2022-11-14 13:08:40 -08:00
180 : syscalls . Supported ( "mq_open" , MqOpen ) ,
181 : syscalls . Supported ( "mq_unlink" , MqUnlink ) ,
2021-08-12 15:16:45 -07:00
182 : syscalls . ErrorWithEvent ( "mq_timedsend" , linuxerr . ENOSYS , "" , [ ] string { "gvisor.dev/issue/136" } ) , // TODO(b/29354921)
183 : syscalls . ErrorWithEvent ( "mq_timedreceive" , linuxerr . ENOSYS , "" , [ ] string { "gvisor.dev/issue/136" } ) , // TODO(b/29354921)
184 : syscalls . ErrorWithEvent ( "mq_notify" , linuxerr . ENOSYS , "" , [ ] string { "gvisor.dev/issue/136" } ) , // TODO(b/29354921)
185 : syscalls . ErrorWithEvent ( "mq_getsetattr" , linuxerr . ENOSYS , "" , [ ] string { "gvisor.dev/issue/136" } ) , // TODO(b/29354921)
2021-06-02 15:54:36 +02:00
186 : syscalls . Supported ( "msgget" , Msgget ) ,
2021-06-29 23:53:25 +02:00
187 : syscalls . Supported ( "msgctl" , Msgctl ) ,
2021-06-21 13:53:48 +02:00
188 : syscalls . Supported ( "msgrcv" , Msgrcv ) ,
2021-06-21 13:48:25 +02:00
189 : syscalls . Supported ( "msgsnd" , Msgsnd ) ,
2020-05-06 14:12:08 -07:00
190 : syscalls . Supported ( "semget" , Semget ) ,
2021-02-25 12:54:36 -08:00
191 : syscalls . Supported ( "semctl" , Semctl ) ,
2021-02-11 12:19:48 -08:00
192 : syscalls . Supported ( "semtimedop" , Semtimedop ) ,
2020-05-06 14:12:08 -07:00
193 : syscalls . PartiallySupported ( "semop" , Semop , "Option SEM_UNDO not supported." , nil ) ,
194 : syscalls . PartiallySupported ( "shmget" , Shmget , "Option SHM_HUGETLB is not supported." , nil ) ,
195 : syscalls . PartiallySupported ( "shmctl" , Shmctl , "Options SHM_LOCK, SHM_UNLOCK are not supported." , nil ) ,
196 : syscalls . PartiallySupported ( "shmat" , Shmat , "Option SHM_RND is not supported." , nil ) ,
197 : syscalls . Supported ( "shmdt" , Shmdt ) ,
2022-11-14 13:08:40 -08:00
198 : syscalls . SupportedPoint ( "socket" , Socket , PointSocket ) ,
2022-07-07 14:07:20 -07:00
199 : syscalls . SupportedPoint ( "socketpair" , SocketPair , PointSocketpair ) ,
2022-11-14 13:08:40 -08:00
200 : syscalls . SupportedPoint ( "bind" , Bind , PointBind ) ,
2020-05-06 14:12:08 -07:00
201 : syscalls . Supported ( "listen" , Listen ) ,
2022-06-24 19:35:05 -07:00
202 : syscalls . SupportedPoint ( "accept" , Accept , PointAccept ) ,
2022-05-02 13:00:17 -07:00
203 : syscalls . SupportedPoint ( "connect" , Connect , PointConnect ) ,
2020-05-06 14:12:08 -07:00
204 : syscalls . Supported ( "getsockname" , GetSockName ) ,
205 : syscalls . Supported ( "getpeername" , GetPeerName ) ,
206 : syscalls . Supported ( "sendto" , SendTo ) ,
207 : syscalls . Supported ( "recvfrom" , RecvFrom ) ,
2022-11-14 13:08:40 -08:00
208 : syscalls . Supported ( "setsockopt" , SetSockOpt ) ,
209 : syscalls . Supported ( "getsockopt" , GetSockOpt ) ,
210 : syscalls . Supported ( "shutdown" , Shutdown ) ,
2020-05-06 14:12:08 -07:00
211 : syscalls . Supported ( "sendmsg" , SendMsg ) ,
2022-11-14 13:08:40 -08:00
212 : syscalls . Supported ( "recvmsg" , RecvMsg ) ,
2020-05-06 14:12:08 -07:00
213 : syscalls . Supported ( "readahead" , Readahead ) ,
214 : syscalls . Supported ( "brk" , Brk ) ,
215 : syscalls . Supported ( "munmap" , Munmap ) ,
216 : syscalls . Supported ( "mremap" , Mremap ) ,
2021-06-30 08:15:44 -07:00
217 : syscalls . Error ( "add_key" , linuxerr . EACCES , "Not available to user." , nil ) ,
218 : syscalls . Error ( "request_key" , linuxerr . EACCES , "Not available to user." , nil ) ,
2023-09-20 12:34:34 -07:00
219 : syscalls . PartiallySupported ( "keyctl" , Keyctl , "Only supports session keyrings with zero keys in them." , nil ) ,
2023-08-25 11:55:45 -07:00
220 : syscalls . PartiallySupportedPoint ( "clone" , Clone , PointClone , "Options CLONE_PIDFD, CLONE_NEWCGROUP, CLONE_PARENT, CLONE_NEWTIME, CLONE_CLEAR_SIGHAND, and CLONE_SYSVSEM not supported." , nil ) ,
2022-05-02 13:00:17 -07:00
221 : syscalls . SupportedPoint ( "execve" , Execve , PointExecve ) ,
2022-11-14 13:08:40 -08:00
222 : syscalls . Supported ( "mmap" , Mmap ) ,
2020-05-06 14:12:08 -07:00
223 : syscalls . PartiallySupported ( "fadvise64" , Fadvise64 , "Not all options are supported." , nil ) ,
224 : syscalls . CapError ( "swapon" , linux . CAP_SYS_ADMIN , "" , nil ) ,
225 : syscalls . CapError ( "swapoff" , linux . CAP_SYS_ADMIN , "" , nil ) ,
226 : syscalls . Supported ( "mprotect" , Mprotect ) ,
227 : syscalls . PartiallySupported ( "msync" , Msync , "Full data flush is not guaranteed at this time." , nil ) ,
228 : syscalls . PartiallySupported ( "mlock" , Mlock , "Stub implementation. The sandbox lacks appropriate permissions." , nil ) ,
229 : syscalls . PartiallySupported ( "munlock" , Munlock , "Stub implementation. The sandbox lacks appropriate permissions." , nil ) ,
230 : syscalls . PartiallySupported ( "mlockall" , Mlockall , "Stub implementation. The sandbox lacks appropriate permissions." , nil ) ,
231 : syscalls . PartiallySupported ( "munlockall" , Munlockall , "Stub implementation. The sandbox lacks appropriate permissions." , nil ) ,
232 : syscalls . PartiallySupported ( "mincore" , Mincore , "Stub implementation. The sandbox does not have access to this information. Reports all mapped pages are resident." , nil ) ,
233 : syscalls . PartiallySupported ( "madvise" , Madvise , "Options MADV_DONTNEED, MADV_DONTFORK are supported. Other advice is ignored." , nil ) ,
2021-08-12 15:16:45 -07:00
234 : syscalls . ErrorWithEvent ( "remap_file_pages" , linuxerr . ENOSYS , "Deprecated since Linux 3.16." , nil ) ,
2020-05-06 14:12:08 -07:00
235 : syscalls . PartiallySupported ( "mbind" , Mbind , "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." , [ ] string { "gvisor.dev/issue/262" } ) ,
236 : syscalls . PartiallySupported ( "get_mempolicy" , GetMempolicy , "Stub implementation." , nil ) ,
237 : syscalls . PartiallySupported ( "set_mempolicy" , SetMempolicy , "Stub implementation." , nil ) ,
238 : syscalls . CapError ( "migrate_pages" , linux . CAP_SYS_NICE , "" , nil ) ,
239 : syscalls . CapError ( "move_pages" , linux . CAP_SYS_NICE , "" , nil ) , // requires cap_sys_nice (mostly)
240 : syscalls . Supported ( "rt_tgsigqueueinfo" , RtTgsigqueueinfo ) ,
2021-07-01 12:02:59 -07:00
241 : syscalls . ErrorWithEvent ( "perf_event_open" , linuxerr . ENODEV , "No support for perf counters" , nil ) ,
2022-06-24 19:35:05 -07:00
242 : syscalls . SupportedPoint ( "accept4" , Accept4 , PointAccept4 ) ,
2022-11-14 13:08:40 -08:00
243 : syscalls . Supported ( "recvmmsg" , RecvMMsg ) ,
2020-05-06 14:12:08 -07:00
260 : syscalls . Supported ( "wait4" , Wait4 ) ,
2022-06-24 19:35:05 -07:00
261 : syscalls . SupportedPoint ( "prlimit64" , Prlimit64 , PointPrlimit64 ) ,
2021-08-12 15:16:45 -07:00
262 : syscalls . ErrorWithEvent ( "fanotify_init" , linuxerr . ENOSYS , "Needs CONFIG_FANOTIFY" , nil ) ,
263 : syscalls . ErrorWithEvent ( "fanotify_mark" , linuxerr . ENOSYS , "Needs CONFIG_FANOTIFY" , nil ) ,
2021-07-12 15:24:04 -07:00
264 : syscalls . Error ( "name_to_handle_at" , linuxerr . EOPNOTSUPP , "Not supported by gVisor filesystems" , nil ) ,
265 : syscalls . Error ( "open_by_handle_at" , linuxerr . EOPNOTSUPP , "Not supported by gVisor filesystems" , nil ) ,
2020-05-06 14:12:08 -07:00
266 : syscalls . CapError ( "clock_adjtime" , linux . CAP_SYS_TIME , "" , nil ) ,
2022-11-14 13:08:40 -08:00
267 : syscalls . Supported ( "syncfs" , Syncfs ) ,
2023-07-24 15:42:22 -07:00
268 : syscalls . Supported ( "setns" , Setns ) ,
2022-11-14 13:08:40 -08:00
269 : syscalls . Supported ( "sendmmsg" , SendMMsg ) ,
2023-10-03 14:59:20 -07:00
270 : syscalls . Supported ( "process_vm_readv" , ProcessVMReadv ) ,
271 : syscalls . Supported ( "process_vm_writev" , ProcessVMWritev ) ,
2020-05-06 14:12:08 -07:00
272 : syscalls . CapError ( "kcmp" , linux . CAP_SYS_PTRACE , "" , nil ) ,
273 : syscalls . CapError ( "finit_module" , linux . CAP_SYS_MODULE , "" , nil ) ,
2021-08-12 15:16:45 -07:00
274 : syscalls . ErrorWithEvent ( "sched_setattr" , linuxerr . ENOSYS , "gVisor does not implement a scheduler." , [ ] string { "gvisor.dev/issue/264" } ) , // TODO(b/118902272)
275 : syscalls . ErrorWithEvent ( "sched_getattr" , linuxerr . ENOSYS , "gVisor does not implement a scheduler." , [ ] string { "gvisor.dev/issue/264" } ) , // TODO(b/118902272)
2022-11-14 13:08:40 -08:00
276 : syscalls . Supported ( "renameat2" , Renameat2 ) ,
2020-05-06 14:12:08 -07:00
277 : syscalls . Supported ( "seccomp" , Seccomp ) ,
278 : syscalls . Supported ( "getrandom" , GetRandom ) ,
279 : syscalls . Supported ( "memfd_create" , MemfdCreate ) ,
280 : syscalls . CapError ( "bpf" , linux . CAP_SYS_ADMIN , "" , nil ) ,
2022-05-02 13:00:17 -07:00
281 : syscalls . SupportedPoint ( "execveat" , Execveat , PointExecveat ) ,
2021-08-12 15:16:45 -07:00
282 : syscalls . ErrorWithEvent ( "userfaultfd" , linuxerr . ENOSYS , "" , [ ] string { "gvisor.dev/issue/266" } ) , // TODO(b/118906345)
2020-10-06 13:53:26 -07:00
283 : syscalls . PartiallySupported ( "membarrier" , Membarrier , "Not supported on all platforms." , nil ) ,
2020-05-06 14:12:08 -07:00
284 : syscalls . PartiallySupported ( "mlock2" , Mlock2 , "Stub implementation. The sandbox lacks appropriate permissions." , nil ) ,
// Syscalls after 284 are "backports" from versions of Linux after 4.4.
2021-08-12 15:16:45 -07:00
285 : syscalls . ErrorWithEvent ( "copy_file_range" , linuxerr . ENOSYS , "" , nil ) ,
2022-11-15 11:51:50 -08:00
286 : syscalls . SupportedPoint ( "preadv2" , Preadv2 , PointPreadv2 ) ,
287 : syscalls . SupportedPoint ( "pwritev2" , Pwritev2 , PointPwritev2 ) ,
2021-08-12 15:16:45 -07:00
288 : syscalls . ErrorWithEvent ( "pkey_mprotect" , linuxerr . ENOSYS , "" , nil ) ,
289 : syscalls . ErrorWithEvent ( "pkey_alloc" , linuxerr . ENOSYS , "" , nil ) ,
290 : syscalls . ErrorWithEvent ( "pkey_free" , linuxerr . ENOSYS , "" , nil ) ,
2020-05-06 14:12:08 -07:00
291 : syscalls . Supported ( "statx" , Statx ) ,
2021-08-12 15:16:45 -07:00
292 : syscalls . ErrorWithEvent ( "io_pgetevents" , linuxerr . ENOSYS , "" , nil ) ,
2020-05-06 14:12:08 -07:00
293 : syscalls . PartiallySupported ( "rseq" , RSeq , "Not supported on all platforms." , nil ) ,
// Linux skips ahead to syscall 424 to sync numbers between arches.
2021-08-12 15:16:45 -07:00
424 : syscalls . ErrorWithEvent ( "pidfd_send_signal" , linuxerr . ENOSYS , "" , nil ) ,
2022-11-14 13:08:40 -08:00
425 : syscalls . PartiallySupported ( "io_uring_setup" , IOUringSetup , "Not all flags and functionality supported." , nil ) ,
426 : syscalls . PartiallySupported ( "io_uring_enter" , IOUringEnter , "Not all flags and functionality supported." , nil ) ,
2021-08-12 15:16:45 -07:00
427 : syscalls . ErrorWithEvent ( "io_uring_register" , linuxerr . ENOSYS , "" , nil ) ,
428 : syscalls . ErrorWithEvent ( "open_tree" , linuxerr . ENOSYS , "" , nil ) ,
429 : syscalls . ErrorWithEvent ( "move_mount" , linuxerr . ENOSYS , "" , nil ) ,
430 : syscalls . ErrorWithEvent ( "fsopen" , linuxerr . ENOSYS , "" , nil ) ,
431 : syscalls . ErrorWithEvent ( "fsconfig" , linuxerr . ENOSYS , "" , nil ) ,
432 : syscalls . ErrorWithEvent ( "fsmount" , linuxerr . ENOSYS , "" , nil ) ,
433 : syscalls . ErrorWithEvent ( "fspick" , linuxerr . ENOSYS , "" , nil ) ,
434 : syscalls . ErrorWithEvent ( "pidfd_open" , linuxerr . ENOSYS , "" , nil ) ,
2023-08-25 11:55:45 -07:00
435 : syscalls . PartiallySupported ( "clone3" , Clone3 , "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." , nil ) ,
2022-02-28 09:33:46 -08:00
436 : syscalls . Supported ( "close_range" , CloseRange ) ,
2022-11-14 13:08:40 -08:00
439 : syscalls . Supported ( "faccessat2" , Faccessat2 ) ,
2021-04-29 15:19:22 -07:00
441 : syscalls . Supported ( "epoll_pwait2" , EpollPwait2 ) ,
2020-05-06 14:12:08 -07:00
} ,
2021-03-29 13:28:32 -07:00
Emulate : map [ hostarch . Addr ] uintptr { } ,
2020-05-06 14:12:08 -07:00
Missing : func ( t * kernel . Task , sysno uintptr , args arch . SyscallArguments ) ( uintptr , error ) {
2023-03-22 12:03:47 -07:00
t . Kernel ( ) . EmitUnimplementedEvent ( t , sysno )
2021-08-12 15:16:45 -07:00
return 0 , linuxerr . ENOSYS
2020-05-06 14:12:08 -07:00
} ,
}
func init ( ) {
kernel . RegisterSyscallTable ( AMD64 )
kernel . RegisterSyscallTable ( ARM64 )
}