// Copyright 2020 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 vfs2 import ( "gvisor.dev/gvisor/pkg/sentry/kernel" "gvisor.dev/gvisor/pkg/sentry/syscalls" ) // Override syscall table to add syscalls implementations from this package. func Override(table map[uintptr]kernel.Syscall) { table[0] = syscalls.Supported("read", Read) // Remove syscalls that haven't been converted yet. It's better to get ENOSYS // rather than a SIGSEGV deep in the stack. delete(table, 1) // write delete(table, 2) // open delete(table, 3) // close delete(table, 4) // stat delete(table, 5) // fstat delete(table, 6) // lstat delete(table, 7) // poll delete(table, 8) // lseek delete(table, 9) // mmap delete(table, 16) // ioctl delete(table, 17) // pread64 delete(table, 18) // pwrite64 delete(table, 19) // readv delete(table, 20) // writev delete(table, 21) // access delete(table, 22) // pipe delete(table, 32) // dup delete(table, 33) // dup2 delete(table, 40) // sendfile delete(table, 59) // execve delete(table, 72) // fcntl delete(table, 73) // flock delete(table, 74) // fsync delete(table, 75) // fdatasync delete(table, 76) // truncate delete(table, 77) // ftruncate delete(table, 78) // getdents delete(table, 79) // getcwd delete(table, 80) // chdir delete(table, 81) // fchdir delete(table, 82) // rename delete(table, 83) // mkdir delete(table, 84) // rmdir delete(table, 85) // creat delete(table, 86) // link delete(table, 87) // unlink delete(table, 88) // symlink delete(table, 89) // readlink delete(table, 90) // chmod delete(table, 91) // fchmod delete(table, 92) // chown delete(table, 93) // fchown delete(table, 94) // lchown delete(table, 133) // mknod delete(table, 137) // statfs delete(table, 138) // fstatfs delete(table, 161) // chroot delete(table, 162) // sync delete(table, 165) // mount delete(table, 166) // umount2 delete(table, 172) // iopl delete(table, 173) // ioperm delete(table, 187) // readahead delete(table, 188) // setxattr delete(table, 189) // lsetxattr delete(table, 190) // fsetxattr delete(table, 191) // getxattr delete(table, 192) // lgetxattr delete(table, 193) // fgetxattr delete(table, 206) // io_setup delete(table, 207) // io_destroy delete(table, 208) // io_getevents delete(table, 209) // io_submit delete(table, 210) // io_cancel delete(table, 213) // epoll_create delete(table, 214) // epoll_ctl_old delete(table, 215) // epoll_wait_old delete(table, 216) // remap_file_pages delete(table, 217) // getdents64 delete(table, 232) // epoll_wait delete(table, 233) // epoll_ctl delete(table, 253) // inotify_init delete(table, 254) // inotify_add_watch delete(table, 255) // inotify_rm_watch delete(table, 257) // openat delete(table, 258) // mkdirat delete(table, 259) // mknodat delete(table, 260) // fchownat delete(table, 261) // futimesat delete(table, 262) // fstatat delete(table, 263) // unlinkat delete(table, 264) // renameat delete(table, 265) // linkat delete(table, 266) // symlinkat delete(table, 267) // readlinkat delete(table, 268) // fchmodat delete(table, 269) // faccessat delete(table, 270) // pselect delete(table, 271) // ppoll delete(table, 285) // fallocate delete(table, 291) // epoll_create1 delete(table, 292) // dup3 delete(table, 293) // pipe2 delete(table, 294) // inotify_init1 delete(table, 295) // preadv delete(table, 296) // pwritev delete(table, 306) // syncfs delete(table, 316) // renameat2 delete(table, 319) // memfd_create delete(table, 322) // execveat delete(table, 327) // preadv2 delete(table, 328) // pwritev2 delete(table, 332) // statx }