gvisor/pkg/sentry/syscalls/linux/linux64.go

395 lines
23 KiB
Go
Raw Normal View History

// Copyright 2018 The gVisor Authors.
//
// 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.
// Package linux provides syscall tables for amd64 Linux.
package linux
import (
"syscall"
"gvisor.dev/gvisor/pkg/abi"
"gvisor.dev/gvisor/pkg/abi/linux"
"gvisor.dev/gvisor/pkg/sentry/arch"
"gvisor.dev/gvisor/pkg/sentry/kernel"
"gvisor.dev/gvisor/pkg/sentry/syscalls"
"gvisor.dev/gvisor/pkg/sentry/usermem"
"gvisor.dev/gvisor/pkg/syserror"
)
// AUDIT_ARCH_X86_64 identifies the Linux syscall API on AMD64, and is taken
// from <linux/audit.h>.
const _AUDIT_ARCH_X86_64 = 0xc000003e
// AMD64 is a table of Linux amd64 syscall API with the corresponding syscall
// numbers from Linux 4.4. The entries commented out are those syscalls we
// don't currently support.
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: "Linux",
Release: "4.4",
Version: "#1 SMP Sun Jan 10 15:06:54 PST 2016",
},
AuditNumber: _AUDIT_ARCH_X86_64,
Table: map[uintptr]kernel.Syscall{
0: syscalls.Supported("read", Read),
1: syscalls.Supported("write", Write),
2: syscalls.Supported("open", Open),
3: syscalls.Supported("close", Close),
4: syscalls.Undocumented("stat", Stat),
5: syscalls.Undocumented("fstat", Fstat),
6: syscalls.Undocumented("lstat", Lstat),
7: syscalls.Undocumented("poll", Poll),
8: syscalls.Undocumented("lseek", Lseek),
9: syscalls.Undocumented("mmap", Mmap),
10: syscalls.Undocumented("mprotect", Mprotect),
11: syscalls.Undocumented("munmap", Munmap),
12: syscalls.Undocumented("brk", Brk),
13: syscalls.Undocumented("rt_sigaction", RtSigaction),
14: syscalls.Undocumented("rt_sigprocmask", RtSigprocmask),
15: syscalls.Undocumented("rt_sigreturn", RtSigreturn),
16: syscalls.Undocumented("ioctl", Ioctl),
17: syscalls.Undocumented("pread64", Pread64),
18: syscalls.Undocumented("pwrite64", Pwrite64),
19: syscalls.Undocumented("readv", Readv),
20: syscalls.Undocumented("writev", Writev),
21: syscalls.Undocumented("access", Access),
22: syscalls.Undocumented("pipe", Pipe),
23: syscalls.Undocumented("select", Select),
24: syscalls.Undocumented("sched_yield", SchedYield),
25: syscalls.Undocumented("mremap", Mremap),
26: syscalls.Undocumented("msync", Msync),
27: syscalls.Undocumented("mincore", Mincore),
28: syscalls.Undocumented("madvise", Madvise),
29: syscalls.Undocumented("shmget", Shmget),
30: syscalls.Undocumented("shmat", Shmat),
31: syscalls.Undocumented("shmctl", Shmctl),
32: syscalls.Undocumented("dup", Dup),
33: syscalls.Undocumented("dup2", Dup2),
34: syscalls.Undocumented("pause", Pause),
35: syscalls.Undocumented("nanosleep", Nanosleep),
36: syscalls.Undocumented("getitimer", Getitimer),
37: syscalls.Undocumented("alarm", Alarm),
38: syscalls.Undocumented("setitimer", Setitimer),
39: syscalls.Undocumented("getpid", Getpid),
40: syscalls.Undocumented("sendfile", Sendfile),
41: syscalls.Undocumented("socket", Socket),
42: syscalls.Undocumented("connect", Connect),
43: syscalls.Undocumented("accept", Accept),
44: syscalls.Undocumented("sendto", SendTo),
45: syscalls.Undocumented("recvfrom", RecvFrom),
46: syscalls.Undocumented("sendmsg", SendMsg),
47: syscalls.Undocumented("recvmsg", RecvMsg),
48: syscalls.Undocumented("shutdown", Shutdown),
49: syscalls.Undocumented("bind", Bind),
50: syscalls.Undocumented("listen", Listen),
51: syscalls.Undocumented("getsockname", GetSockName),
52: syscalls.Undocumented("getpeername", GetPeerName),
53: syscalls.Undocumented("socketpair", SocketPair),
54: syscalls.Undocumented("setsockopt", SetSockOpt),
55: syscalls.Undocumented("getsockopt", GetSockOpt),
56: syscalls.Undocumented("clone", Clone),
57: syscalls.Undocumented("fork", Fork),
58: syscalls.Undocumented("vfork", Vfork),
59: syscalls.Undocumented("execve", Execve),
60: syscalls.Undocumented("exit", Exit),
61: syscalls.Undocumented("wait4", Wait4),
62: syscalls.Undocumented("kill", Kill),
63: syscalls.Undocumented("uname", Uname),
64: syscalls.Undocumented("semget", Semget),
65: syscalls.Undocumented("semop", Semop),
66: syscalls.Undocumented("semctl", Semctl),
67: syscalls.Undocumented("shmdt", Shmdt),
68: syscalls.ErrorWithEvent("msgget", syscall.ENOSYS, "", []string{"gvisor.dev/issue/135"}), // TODO(b/29354921)
69: syscalls.ErrorWithEvent("msgsnd", syscall.ENOSYS, "", []string{"gvisor.dev/issue/135"}), // TODO(b/29354921)
70: syscalls.ErrorWithEvent("msgrcv", syscall.ENOSYS, "", []string{"gvisor.dev/issue/135"}), // TODO(b/29354921)
71: syscalls.ErrorWithEvent("msgctl", syscall.ENOSYS, "", []string{"gvisor.dev/issue/135"}), // TODO(b/29354921)
72: syscalls.Undocumented("fcntl", Fcntl),
73: syscalls.Undocumented("flock", Flock),
74: syscalls.Undocumented("fsync", Fsync),
75: syscalls.Undocumented("fdatasync", Fdatasync),
76: syscalls.Undocumented("truncate", Truncate),
77: syscalls.Undocumented("ftruncate", Ftruncate),
78: syscalls.Undocumented("getdents", Getdents),
79: syscalls.Undocumented("getcwd", Getcwd),
80: syscalls.Undocumented("chdir", Chdir),
81: syscalls.Undocumented("fchdir", Fchdir),
82: syscalls.Undocumented("rename", Rename),
83: syscalls.Undocumented("mkdir", Mkdir),
84: syscalls.Undocumented("rmdir", Rmdir),
85: syscalls.Undocumented("creat", Creat),
86: syscalls.Undocumented("link", Link),
87: syscalls.Undocumented("link", Unlink),
88: syscalls.Undocumented("symlink", Symlink),
89: syscalls.Undocumented("readlink", Readlink),
90: syscalls.Undocumented("chmod", Chmod),
91: syscalls.Undocumented("fchmod", Fchmod),
92: syscalls.Undocumented("chown", Chown),
93: syscalls.Undocumented("fchown", Fchown),
94: syscalls.Undocumented("lchown", Lchown),
95: syscalls.Undocumented("umask", Umask),
96: syscalls.Undocumented("gettimeofday", Gettimeofday),
97: syscalls.Undocumented("getrlimit", Getrlimit),
98: syscalls.Undocumented("getrusage", Getrusage),
99: syscalls.Undocumented("sysinfo", Sysinfo),
100: syscalls.Undocumented("times", Times),
101: syscalls.Undocumented("ptrace", Ptrace),
102: syscalls.Undocumented("getuid", Getuid),
103: syscalls.Undocumented("syslog", Syslog),
104: syscalls.Undocumented("getgid", Getgid),
105: syscalls.Undocumented("setuid", Setuid),
106: syscalls.Undocumented("setgid", Setgid),
107: syscalls.Undocumented("geteuid", Geteuid),
108: syscalls.Undocumented("getegid", Getegid),
109: syscalls.Undocumented("setpgid", Setpgid),
110: syscalls.Undocumented("getppid", Getppid),
111: syscalls.Undocumented("getpgrp", Getpgrp),
112: syscalls.Undocumented("setsid", Setsid),
113: syscalls.Undocumented("setreuid", Setreuid),
114: syscalls.Undocumented("setregid", Setregid),
115: syscalls.Undocumented("getgroups", Getgroups),
116: syscalls.Undocumented("setgroups", Setgroups),
117: syscalls.Undocumented("setresuid", Setresuid),
118: syscalls.Undocumented("getresuid", Getresuid),
119: syscalls.Undocumented("setresgid", Setresgid),
120: syscalls.Undocumented("setresgid", Getresgid),
121: syscalls.Undocumented("getpgid", Getpgid),
122: syscalls.ErrorWithEvent("setfsuid", syscall.ENOSYS, "", []string{"gvisor.dev/issue/260"}), // TODO(b/112851702)
123: syscalls.ErrorWithEvent("setfsgid", syscall.ENOSYS, "", []string{"gvisor.dev/issue/260"}), // TODO(b/112851702)
124: syscalls.Undocumented("getsid", Getsid),
125: syscalls.Undocumented("capget", Capget),
126: syscalls.Undocumented("capset", Capset),
127: syscalls.Undocumented("rt_sigpending", RtSigpending),
128: syscalls.Undocumented("rt_sigtimedwait", RtSigtimedwait),
129: syscalls.Undocumented("rt_sigqueueinfo", RtSigqueueinfo),
130: syscalls.Undocumented("rt_sigsuspend", RtSigsuspend),
131: syscalls.Undocumented("sigaltstack", Sigaltstack),
132: syscalls.Undocumented("utime", Utime),
133: syscalls.Undocumented("mknod", Mknod),
134: syscalls.Error("uselib", syscall.ENOSYS, "Obsolete", nil),
135: syscalls.ErrorWithEvent("personality", syscall.EINVAL, "Unable to change personality.", nil),
136: syscalls.ErrorWithEvent("ustat", syscall.ENOSYS, "Needs filesystem support.", nil),
137: syscalls.Undocumented("statfs", Statfs),
138: syscalls.Undocumented("fstatfs", Fstatfs),
139: syscalls.ErrorWithEvent("sysfs", syscall.ENOSYS, "", []string{"gvisor.dev/issue/165"}),
140: syscalls.Undocumented("getpriority", Getpriority),
141: syscalls.Undocumented("setpriority", Setpriority),
142: syscalls.CapError("sched_setparam", linux.CAP_SYS_NICE, "", nil),
143: syscalls.Undocumented("sched_getparam", SchedGetparam),
144: syscalls.Undocumented("sched_setscheduler", SchedSetscheduler),
145: syscalls.Undocumented("sched_getscheduler", SchedGetscheduler),
146: syscalls.Undocumented("sched_get_priority_max", SchedGetPriorityMax),
147: syscalls.Undocumented("sched_get_priority_min", SchedGetPriorityMin),
148: syscalls.ErrorWithEvent("sched_rr_get_interval", syscall.EPERM, "", nil),
149: syscalls.Undocumented("mlock", Mlock),
150: syscalls.Undocumented("munlock", Munlock),
151: syscalls.Undocumented("mlockall", Mlockall),
152: syscalls.Undocumented("munlockall", Munlockall),
153: syscalls.CapError("vhangup", linux.CAP_SYS_TTY_CONFIG, "", nil),
154: syscalls.Error("modify_ldt", syscall.EPERM, "", nil),
155: syscalls.Error("pivot_root", syscall.EPERM, "", nil),
156: syscalls.Error("sysctl", syscall.EPERM, `syscall is "worthless"`, nil),
157: syscalls.Undocumented("prctl", Prctl),
158: syscalls.Undocumented("arch_prctl", ArchPrctl),
159: syscalls.CapError("adjtimex", linux.CAP_SYS_TIME, "", nil),
160: syscalls.Undocumented("setrlimit", Setrlimit),
161: syscalls.Undocumented("chroot", Chroot),
162: syscalls.Undocumented("sync", Sync),
163: syscalls.CapError("acct", linux.CAP_SYS_PACCT, "", nil),
164: syscalls.CapError("settimeofday", linux.CAP_SYS_TIME, "", nil),
165: syscalls.Undocumented("mount", Mount),
166: syscalls.Undocumented("umount2", Umount2),
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.Undocumented("sethostname", Sethostname),
171: syscalls.Undocumented("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),
177: syscalls.Error("get_kernel_syms", syscall.ENOSYS, "Not supported in > 2.6", nil),
178: syscalls.Error("query_module", syscall.ENOSYS, "Not supported in > 2.6", nil),
179: syscalls.CapError("quotactl", linux.CAP_SYS_ADMIN, "", nil), // requires cap_sys_admin for most operations
180: syscalls.Error("nfsservctl", syscall.ENOSYS, "Does not exist > 3.1", nil),
181: syscalls.Error("getpmsg", syscall.ENOSYS, "Not implemented in Linux", nil),
182: syscalls.Error("putpmsg", syscall.ENOSYS, "Not implemented in Linux", nil),
183: syscalls.Error("afs_syscall", syscall.ENOSYS, "Not implemented in Linux", nil),
184: syscalls.Error("tuxcall", syscall.ENOSYS, "Not implemented in Linux", nil),
185: syscalls.Error("security", syscall.ENOSYS, "Not implemented in Linux", nil),
186: syscalls.Undocumented("gettid", Gettid),
187: syscalls.ErrorWithEvent("readahead", syscall.ENOSYS, "", []string{"gvisor.dev/issue/261"}), // TODO(b/29351341)
188: syscalls.ErrorWithEvent("setxattr", syscall.ENOTSUP, "Requires filesystem support", nil),
189: syscalls.ErrorWithEvent("lsetxattr", syscall.ENOTSUP, "Requires filesystem support", nil),
190: syscalls.ErrorWithEvent("fsetxattr", syscall.ENOTSUP, "Requires filesystem support", nil),
191: syscalls.ErrorWithEvent("getxattr", syscall.ENOTSUP, "Requires filesystem support", nil),
192: syscalls.ErrorWithEvent("lgetxattr", syscall.ENOTSUP, "Requires filesystem support", nil),
193: syscalls.ErrorWithEvent("fgetxattr", syscall.ENOTSUP, "Requires filesystem support", nil),
194: syscalls.ErrorWithEvent("listxattr", syscall.ENOTSUP, "Requires filesystem support", nil),
195: syscalls.ErrorWithEvent("llistxattr", syscall.ENOTSUP, "Requires filesystem support", nil),
196: syscalls.ErrorWithEvent("flistxattr", syscall.ENOTSUP, "Requires filesystem support", nil),
197: syscalls.ErrorWithEvent("removexattr", syscall.ENOTSUP, "Requires filesystem support", nil),
198: syscalls.ErrorWithEvent("lremovexattr", syscall.ENOTSUP, "Requires filesystem support", nil),
199: syscalls.ErrorWithEvent("fremovexattr", syscall.ENOTSUP, "Requires filesystem support", nil),
200: syscalls.Undocumented("tkill", Tkill),
201: syscalls.Undocumented("time", Time),
202: syscalls.Undocumented("futex", Futex),
203: syscalls.Undocumented("sched_setaffinity", SchedSetaffinity),
204: syscalls.Undocumented("sched_getaffinity", SchedGetaffinity),
205: syscalls.Error("set_thread_area", syscall.ENOSYS, "Expected to return ENOSYS on 64-bit", nil),
206: syscalls.Undocumented("io_setup", IoSetup),
207: syscalls.Undocumented("io_destroy", IoDestroy),
208: syscalls.Undocumented("io_getevents", IoGetevents),
209: syscalls.Undocumented("io_submit", IoSubmit),
210: syscalls.Undocumented("io_cancel", IoCancel),
211: syscalls.Error("get_thread_area", syscall.ENOSYS, "Expected to return ENOSYS on 64-bit", nil),
212: syscalls.CapError("lookup_dcookie", linux.CAP_SYS_ADMIN, "", nil),
213: syscalls.Undocumented("epoll_create", EpollCreate),
214: syscalls.ErrorWithEvent("epoll_ctl_old", syscall.ENOSYS, "Deprecated", nil),
215: syscalls.ErrorWithEvent("epoll_wait_old", syscall.ENOSYS, "Deprecated", nil),
216: syscalls.ErrorWithEvent("remap_file_pages", syscall.ENOSYS, "Deprecated since 3.16", nil),
217: syscalls.Undocumented("getdents64", Getdents64),
218: syscalls.Undocumented("set_tid_address", SetTidAddress),
219: syscalls.Undocumented("restart_syscall", RestartSyscall),
220: syscalls.ErrorWithEvent("semtimedop", syscall.ENOSYS, "", []string{"gvisor.dev/issue/137"}), // TODO(b/29354920)
221: syscalls.Undocumented("fadvise64", Fadvise64),
222: syscalls.Undocumented("timer_create", TimerCreate),
223: syscalls.Undocumented("timer_settime", TimerSettime),
224: syscalls.Undocumented("timer_gettime", TimerGettime),
225: syscalls.Undocumented("timer_getoverrun", TimerGetoverrun),
226: syscalls.Undocumented("timer_delete", TimerDelete),
227: syscalls.Undocumented("clock_settime", ClockSettime),
228: syscalls.Undocumented("clock_gettime", ClockGettime),
229: syscalls.Undocumented("clock_getres", ClockGetres),
230: syscalls.Undocumented("clock_nanosleep", ClockNanosleep),
231: syscalls.Undocumented("exit_group", ExitGroup),
232: syscalls.Undocumented("epoll_wait", EpollWait),
233: syscalls.Undocumented("epoll_ctl", EpollCtl),
234: syscalls.Undocumented("tgkill", Tgkill),
235: syscalls.Undocumented("utimes", Utimes),
236: syscalls.Error("vserver", syscall.ENOSYS, "Not implemented by Linux", nil),
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.Undocumented("set_mempolicy", SetMempolicy),
239: syscalls.Undocumented("get_mempolicy", GetMempolicy),
240: syscalls.ErrorWithEvent("mq_open", syscall.ENOSYS, "", []string{"gvisor.dev/issue/136"}), // TODO(b/29354921)
241: syscalls.ErrorWithEvent("mq_unlink", syscall.ENOSYS, "", []string{"gvisor.dev/issue/136"}), // TODO(b/29354921)
242: syscalls.ErrorWithEvent("mq_timedsend", syscall.ENOSYS, "", []string{"gvisor.dev/issue/136"}), // TODO(b/29354921)
243: syscalls.ErrorWithEvent("mq_timedreceive", syscall.ENOSYS, "", []string{"gvisor.dev/issue/136"}), // TODO(b/29354921)
244: syscalls.ErrorWithEvent("mq_notify", syscall.ENOSYS, "", []string{"gvisor.dev/issue/136"}), // TODO(b/29354921)
245: syscalls.ErrorWithEvent("mq_getsetattr", syscall.ENOSYS, "", []string{"gvisor.dev/issue/136"}), // TODO(b/29354921)
246: syscalls.CapError("kexec_load", linux.CAP_SYS_BOOT, "", nil),
247: syscalls.Undocumented("waitid", Waitid),
248: syscalls.Error("add_key", syscall.EACCES, "Not available to user", nil),
249: syscalls.Error("request_key", syscall.EACCES, "Not available to user", nil),
250: syscalls.Error("keyctl", syscall.EACCES, "Not available to user", nil),
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)
253: syscalls.Undocumented("inotify_init", InotifyInit),
254: syscalls.Undocumented("inotify_add_watch", InotifyAddWatch),
255: syscalls.Undocumented("inotify_rm_watch", InotifyRmWatch),
256: syscalls.CapError("migrate_pages", linux.CAP_SYS_NICE, "", nil),
257: syscalls.Undocumented("openat", Openat),
258: syscalls.Undocumented("mkdirat", Mkdirat),
259: syscalls.Undocumented("mknodat", Mknodat),
260: syscalls.Undocumented("fchownat", Fchownat),
261: syscalls.Undocumented("futimesat", Futimesat),
262: syscalls.Undocumented("fstatat", Fstatat),
263: syscalls.Undocumented("unlinkat", Unlinkat),
264: syscalls.Undocumented("renameat", Renameat),
265: syscalls.Undocumented("linkat", Linkat),
266: syscalls.Undocumented("symlinkat", Symlinkat),
267: syscalls.Undocumented("readlinkat", Readlinkat),
268: syscalls.Undocumented("fchmodat", Fchmodat),
269: syscalls.Undocumented("faccessat", Faccessat),
270: syscalls.Undocumented("pselect", Pselect),
271: syscalls.Undocumented("ppoll", Ppoll),
272: syscalls.Undocumented("unshare", Unshare),
273: syscalls.Error("set_robust_list", syscall.ENOSYS, "Obsolete", nil),
274: syscalls.Error("get_robust_list", syscall.ENOSYS, "Obsolete", nil),
275: syscalls.PartiallySupported("splice", Splice, "Stub implementation", []string{"gvisor.dev/issue/138"}), // TODO(b/29354098)
276: syscalls.ErrorWithEvent("tee", syscall.ENOSYS, "", []string{"gvisor.dev/issue/138"}), // TODO(b/29354098)
277: syscalls.Undocumented("sync_file_range", SyncFileRange),
278: syscalls.ErrorWithEvent("vmsplice", syscall.ENOSYS, "", []string{"gvisor.dev/issue/138"}), // TODO(b/29354098)
279: syscalls.CapError("move_pages", linux.CAP_SYS_NICE, "", nil), // requires cap_sys_nice (mostly)
280: syscalls.Undocumented("utimensat", Utimensat),
281: syscalls.Undocumented("epoll_pwait", EpollPwait),
282: syscalls.ErrorWithEvent("signalfd", syscall.ENOSYS, "", []string{"gvisor.dev/issue/139"}), // TODO(b/19846426)
283: syscalls.Undocumented("timerfd_create", TimerfdCreate),
284: syscalls.Undocumented("eventfd", Eventfd),
285: syscalls.Undocumented("fallocate", Fallocate),
286: syscalls.Undocumented("timerfd_settime", TimerfdSettime),
287: syscalls.Undocumented("timerfd_gettime", TimerfdGettime),
288: syscalls.Undocumented("accept4", Accept4),
289: syscalls.ErrorWithEvent("signalfd4", syscall.ENOSYS, "", []string{"gvisor.dev/issue/139"}), // TODO(b/19846426)
290: syscalls.Undocumented("eventfd2", Eventfd2),
291: syscalls.Undocumented("epoll_create1", EpollCreate1),
292: syscalls.Undocumented("dup3", Dup3),
293: syscalls.Undocumented("pipe2", Pipe2),
294: syscalls.Undocumented("inotify_init1", InotifyInit1),
295: syscalls.Undocumented("preadv", Preadv),
296: syscalls.Undocumented("pwritev", Pwritev),
297: syscalls.Undocumented("rt_tgsigqueueinfo", RtTgsigqueueinfo),
298: syscalls.ErrorWithEvent("perf_event_open", syscall.ENODEV, "No support for perf counters", nil),
299: syscalls.Undocumented("recvmmsg", RecvMMsg),
300: syscalls.ErrorWithEvent("fanotify_init", syscall.ENOSYS, "Needs CONFIG_FANOTIFY", nil),
301: syscalls.ErrorWithEvent("fanotify_mark", syscall.ENOSYS, "Needs CONFIG_FANOTIFY", nil),
302: syscalls.Undocumented("prlimit64", Prlimit64),
303: syscalls.ErrorWithEvent("name_to_handle_at", syscall.EOPNOTSUPP, "Needs filesystem support", nil),
304: syscalls.ErrorWithEvent("open_by_handle_at", syscall.EOPNOTSUPP, "Needs filesystem support", nil),
305: syscalls.CapError("clock_adjtime", linux.CAP_SYS_TIME, "", nil),
306: syscalls.Undocumented("syncfs", Syncfs),
307: syscalls.Undocumented("sendmmsg", SendMMsg),
308: syscalls.ErrorWithEvent("setns", syscall.EOPNOTSUPP, "Needs filesystem support", []string{"gvisor.dev/issue/140"}), // TODO(b/29354995)
309: syscalls.Undocumented("getcpu", Getcpu),
310: syscalls.ErrorWithEvent("process_vm_readv", syscall.ENOSYS, "", []string{"gvisor.dev/issue/158"}),
311: syscalls.ErrorWithEvent("process_vm_writev", syscall.ENOSYS, "", []string{"gvisor.dev/issue/158"}),
312: syscalls.CapError("kcmp", linux.CAP_SYS_PTRACE, "", nil),
313: syscalls.CapError("finit_module", linux.CAP_SYS_MODULE, "", nil),
314: syscalls.ErrorWithEvent("sched_setattr", syscall.ENOSYS, "gVisor does not implement a scheduler.", []string{"gvisor.dev/issue/264"}), // TODO(b/118902272)
315: syscalls.ErrorWithEvent("sched_getattr", syscall.ENOSYS, "gVisor does not implement a scheduler.", []string{"gvisor.dev/issue/264"}), // TODO(b/118902272)
316: syscalls.ErrorWithEvent("renameat2", syscall.ENOSYS, "", []string{"gvisor.dev/issue/263"}), // TODO(b/118902772)
317: syscalls.Undocumented("seccomp", Seccomp),
318: syscalls.Undocumented("getrandom", GetRandom),
319: syscalls.Undocumented("memfd_create", MemfdCreate),
320: syscalls.CapError("kexec_file_load", linux.CAP_SYS_BOOT, "", nil),
321: syscalls.CapError("bpf", linux.CAP_SYS_ADMIN, "", nil),
322: syscalls.ErrorWithEvent("execveat", syscall.ENOSYS, "", []string{"gvisor.dev/issue/265"}), // TODO(b/118901836)
323: syscalls.ErrorWithEvent("userfaultfd", syscall.ENOSYS, "", []string{"gvisor.dev/issue/266"}), // TODO(b/118906345)
324: syscalls.ErrorWithEvent("membarrier", syscall.ENOSYS, "", []string{"gvisor.dev/issue/267"}), // TODO(b/118904897)
325: syscalls.Undocumented("mlock2", Mlock2),
// Syscalls after 325 are "backports" from versions of Linux after 4.4.
326: syscalls.ErrorWithEvent("copy_file_range", syscall.ENOSYS, "", nil),
327: syscalls.Undocumented("preadv2", Preadv2),
328: syscalls.Undocumented("pwritev2", Pwritev2),
332: syscalls.Supported("statx", Statx),
},
Emulate: map[usermem.Addr]uintptr{
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) {
t.Kernel().EmitUnimplementedEvent(t)
return 0, syserror.ENOSYS
},
}