this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge pull request #817 from CuriousTommy/asm_generic_syscall

Fixing up `src/kernel` to support architectures that use the generic syscall header

authored by

CuriousTommy and committed by
GitHub
1a7000b2 e14fbcc4

+1139 -74
+13 -8
src/kernel/emulation/linux/ext/epoll_create.c
··· 8 8 VISIBLE 9 9 int epoll_create (int __size) 10 10 { 11 - int rv; 11 + #if defined(__NR_epoll_create) 12 + int rv; 12 13 13 - rv = LINUX_SYSCALL(__NR_epoll_create, __size); 14 - if (rv < 0) 15 - { 16 - cerror(errno_linux_to_bsd(-rv)); 17 - return -1; 18 - } 14 + rv = LINUX_SYSCALL(__NR_epoll_create, __size); 15 + if (rv < 0) 16 + { 17 + cerror(errno_linux_to_bsd(-rv)); 18 + return -1; 19 + } 19 20 20 - return rv; 21 + return rv; 22 + #else 23 + // The size argument in __NR_epoll_create is ignored 24 + return epoll_create1(0); 25 + #endif 21 26 } 22 27
+7 -1
src/kernel/emulation/linux/ext/epoll_wait.c
··· 2 2 #include "../errno.h" 3 3 #include "../base.h" 4 4 #include <linux-syscalls/linux.h> 5 + #include <string.h> 5 6 6 7 extern long cerror(int __err); 7 8 ··· 11 12 { 12 13 int rv; 13 14 14 - rv = LINUX_SYSCALL(__NR_epoll_wait, __epfd, __events, __maxevents, 15 + #if defined(__NR_epoll_wait) 16 + rv = LINUX_SYSCALL(__NR_epoll_wait, __epfd, __events, __maxevents, 15 17 __timeout); 18 + #else 19 + rv = LINUX_SYSCALL(__NR_epoll_pwait, __epfd, __events, __maxevents, 20 + __timeout, NULL); 21 + #endif 16 22 if (rv < 0) 17 23 { 18 24 cerror(errno_linux_to_bsd(-rv));
+8 -2
src/kernel/emulation/linux/ext/eventfd.c
··· 10 10 { 11 11 int rv; 12 12 13 - rv = LINUX_SYSCALL(__flags ? __NR_eventfd2 : __NR_eventfd, __count, 14 - __flags); 13 + #if defined(__x86_64__) || defined(__i386__) 14 + rv = LINUX_SYSCALL(__flags ? __NR_eventfd2 : __NR_eventfd, __count, 15 + __flags); 16 + #else 17 + // It's not clear if 0 is offically a valid flag argument. 18 + // But we don't really have a choice. 19 + rv = LINUX_SYSCALL(__NR_eventfd2, __count, __flags); 20 + #endif 15 21 if (rv < 0) 16 22 { 17 23 cerror(errno_linux_to_bsd(-rv));
+5 -1
src/kernel/emulation/linux/ext/file_handle.c
··· 133 133 return -ENOENT; 134 134 135 135 // We have the path of the mount, lets get a file descriptor 136 - fd_m = LINUX_SYSCALL(__NR_open, mount_path, LINUX_O_RDONLY, 0); 136 + #if defined(__NR_open) 137 + fd_m = LINUX_SYSCALL(__NR_open, mount_path, LINUX_O_RDONLY, 0); 138 + #else 139 + fd_m = LINUX_SYSCALL(__NR_openat, LINUX_AT_FDCWD, mount_path, LINUX_O_RDONLY, 0); 140 + #endif 137 141 if (fd_m < 0) 138 142 return fd_m; 139 143
+12 -8
src/kernel/emulation/linux/ext/inotify_init.c
··· 8 8 VISIBLE 9 9 int inotify_init (void) 10 10 { 11 - int rv; 11 + #if defined(__NR_inotify_init) 12 + int rv; 12 13 13 - rv = LINUX_SYSCALL(__NR_inotify_init); 14 - if (rv < 0) 15 - { 16 - cerror(errno_linux_to_bsd(-rv)); 17 - return -1; 18 - } 14 + rv = LINUX_SYSCALL(__NR_inotify_init); 15 + if (rv < 0) 16 + { 17 + cerror(errno_linux_to_bsd(-rv)); 18 + return -1; 19 + } 19 20 20 - return rv; 21 + return rv; 22 + #else 23 + inotify_init1(0); 24 + #endif 21 25 } 22 26
+25
src/kernel/emulation/linux/linux-syscalls/linux-arm64.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2 + /* 3 + * Copyright (C) 2012 ARM Ltd. 4 + * 5 + * This program is free software; you can redistribute it and/or modify 6 + * it under the terms of the GNU General Public License version 2 as 7 + * published by the Free Software Foundation. 8 + * 9 + * This program is distributed in the hope that it will be useful, 10 + * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 + * GNU General Public License for more details. 13 + * 14 + * You should have received a copy of the GNU General Public License 15 + * along with this program. If not, see <http://www.gnu.org/licenses/>. 16 + */ 17 + 18 + #define __ARCH_WANT_RENAMEAT 19 + #define __ARCH_WANT_NEW_STAT 20 + #define __ARCH_WANT_SET_GET_RLIMIT 21 + #define __ARCH_WANT_TIME32_SYSCALLS 22 + #define __ARCH_WANT_SYS_CLONE3 23 + 24 + // #include <asm-generic/unistd.h> 25 + #include "linux-generic.h"
+903
src/kernel/emulation/linux/linux-syscalls/linux-generic.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2 + #define __BITS_PER_LONG 64 3 + 4 + /* 5 + * This file contains the system call numbers, based on the 6 + * layout of the x86-64 architecture, which embeds the 7 + * pointer to the syscall in the table. 8 + * 9 + * As a basic principle, no duplication of functionality 10 + * should be added, e.g. we don't use lseek when llseek 11 + * is present. New architectures should use this file 12 + * and implement the less feature-full calls in user space. 13 + */ 14 + 15 + #ifndef __SYSCALL 16 + #define __SYSCALL(x, y) 17 + #endif 18 + 19 + #if __BITS_PER_LONG == 32 || defined(__SYSCALL_COMPAT) 20 + #define __SC_3264(_nr, _32, _64) __SYSCALL(_nr, _32) 21 + #else 22 + #define __SC_3264(_nr, _32, _64) __SYSCALL(_nr, _64) 23 + #endif 24 + 25 + #ifdef __SYSCALL_COMPAT 26 + #define __SC_COMP(_nr, _sys, _comp) __SYSCALL(_nr, _comp) 27 + #define __SC_COMP_3264(_nr, _32, _64, _comp) __SYSCALL(_nr, _comp) 28 + #else 29 + #define __SC_COMP(_nr, _sys, _comp) __SYSCALL(_nr, _sys) 30 + #define __SC_COMP_3264(_nr, _32, _64, _comp) __SC_3264(_nr, _32, _64) 31 + #endif 32 + 33 + #define __NR_io_setup 0 34 + __SC_COMP(__NR_io_setup, sys_io_setup, compat_sys_io_setup) 35 + #define __NR_io_destroy 1 36 + __SYSCALL(__NR_io_destroy, sys_io_destroy) 37 + #define __NR_io_submit 2 38 + __SC_COMP(__NR_io_submit, sys_io_submit, compat_sys_io_submit) 39 + #define __NR_io_cancel 3 40 + __SYSCALL(__NR_io_cancel, sys_io_cancel) 41 + #if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32 42 + #define __NR_io_getevents 4 43 + __SC_3264(__NR_io_getevents, sys_io_getevents_time32, sys_io_getevents) 44 + #endif 45 + 46 + /* fs/xattr.c */ 47 + #define __NR_setxattr 5 48 + __SYSCALL(__NR_setxattr, sys_setxattr) 49 + #define __NR_lsetxattr 6 50 + __SYSCALL(__NR_lsetxattr, sys_lsetxattr) 51 + #define __NR_fsetxattr 7 52 + __SYSCALL(__NR_fsetxattr, sys_fsetxattr) 53 + #define __NR_getxattr 8 54 + __SYSCALL(__NR_getxattr, sys_getxattr) 55 + #define __NR_lgetxattr 9 56 + __SYSCALL(__NR_lgetxattr, sys_lgetxattr) 57 + #define __NR_fgetxattr 10 58 + __SYSCALL(__NR_fgetxattr, sys_fgetxattr) 59 + #define __NR_listxattr 11 60 + __SYSCALL(__NR_listxattr, sys_listxattr) 61 + #define __NR_llistxattr 12 62 + __SYSCALL(__NR_llistxattr, sys_llistxattr) 63 + #define __NR_flistxattr 13 64 + __SYSCALL(__NR_flistxattr, sys_flistxattr) 65 + #define __NR_removexattr 14 66 + __SYSCALL(__NR_removexattr, sys_removexattr) 67 + #define __NR_lremovexattr 15 68 + __SYSCALL(__NR_lremovexattr, sys_lremovexattr) 69 + #define __NR_fremovexattr 16 70 + __SYSCALL(__NR_fremovexattr, sys_fremovexattr) 71 + 72 + /* fs/dcache.c */ 73 + #define __NR_getcwd 17 74 + __SYSCALL(__NR_getcwd, sys_getcwd) 75 + 76 + /* fs/cookies.c */ 77 + #define __NR_lookup_dcookie 18 78 + __SC_COMP(__NR_lookup_dcookie, sys_lookup_dcookie, compat_sys_lookup_dcookie) 79 + 80 + /* fs/eventfd.c */ 81 + #define __NR_eventfd2 19 82 + __SYSCALL(__NR_eventfd2, sys_eventfd2) 83 + 84 + /* fs/eventpoll.c */ 85 + #define __NR_epoll_create1 20 86 + __SYSCALL(__NR_epoll_create1, sys_epoll_create1) 87 + #define __NR_epoll_ctl 21 88 + __SYSCALL(__NR_epoll_ctl, sys_epoll_ctl) 89 + #define __NR_epoll_pwait 22 90 + __SC_COMP(__NR_epoll_pwait, sys_epoll_pwait, compat_sys_epoll_pwait) 91 + 92 + /* fs/fcntl.c */ 93 + #define __NR_dup 23 94 + __SYSCALL(__NR_dup, sys_dup) 95 + #define __NR_dup3 24 96 + __SYSCALL(__NR_dup3, sys_dup3) 97 + #define __NR3264_fcntl 25 98 + __SC_COMP_3264(__NR3264_fcntl, sys_fcntl64, sys_fcntl, compat_sys_fcntl64) 99 + 100 + /* fs/inotify_user.c */ 101 + #define __NR_inotify_init1 26 102 + __SYSCALL(__NR_inotify_init1, sys_inotify_init1) 103 + #define __NR_inotify_add_watch 27 104 + __SYSCALL(__NR_inotify_add_watch, sys_inotify_add_watch) 105 + #define __NR_inotify_rm_watch 28 106 + __SYSCALL(__NR_inotify_rm_watch, sys_inotify_rm_watch) 107 + 108 + /* fs/ioctl.c */ 109 + #define __NR_ioctl 29 110 + __SC_COMP(__NR_ioctl, sys_ioctl, compat_sys_ioctl) 111 + 112 + /* fs/ioprio.c */ 113 + #define __NR_ioprio_set 30 114 + __SYSCALL(__NR_ioprio_set, sys_ioprio_set) 115 + #define __NR_ioprio_get 31 116 + __SYSCALL(__NR_ioprio_get, sys_ioprio_get) 117 + 118 + /* fs/locks.c */ 119 + #define __NR_flock 32 120 + __SYSCALL(__NR_flock, sys_flock) 121 + 122 + /* fs/namei.c */ 123 + #define __NR_mknodat 33 124 + __SYSCALL(__NR_mknodat, sys_mknodat) 125 + #define __NR_mkdirat 34 126 + __SYSCALL(__NR_mkdirat, sys_mkdirat) 127 + #define __NR_unlinkat 35 128 + __SYSCALL(__NR_unlinkat, sys_unlinkat) 129 + #define __NR_symlinkat 36 130 + __SYSCALL(__NR_symlinkat, sys_symlinkat) 131 + #define __NR_linkat 37 132 + __SYSCALL(__NR_linkat, sys_linkat) 133 + #ifdef __ARCH_WANT_RENAMEAT 134 + /* renameat is superseded with flags by renameat2 */ 135 + #define __NR_renameat 38 136 + __SYSCALL(__NR_renameat, sys_renameat) 137 + #endif /* __ARCH_WANT_RENAMEAT */ 138 + 139 + /* fs/namespace.c */ 140 + #define __NR_umount2 39 141 + __SYSCALL(__NR_umount2, sys_umount) 142 + #define __NR_mount 40 143 + __SC_COMP(__NR_mount, sys_mount, compat_sys_mount) 144 + #define __NR_pivot_root 41 145 + __SYSCALL(__NR_pivot_root, sys_pivot_root) 146 + 147 + /* fs/nfsctl.c */ 148 + #define __NR_nfsservctl 42 149 + __SYSCALL(__NR_nfsservctl, sys_ni_syscall) 150 + 151 + /* fs/open.c */ 152 + #define __NR3264_statfs 43 153 + __SC_COMP_3264(__NR3264_statfs, sys_statfs64, sys_statfs, \ 154 + compat_sys_statfs64) 155 + #define __NR3264_fstatfs 44 156 + __SC_COMP_3264(__NR3264_fstatfs, sys_fstatfs64, sys_fstatfs, \ 157 + compat_sys_fstatfs64) 158 + #define __NR3264_truncate 45 159 + __SC_COMP_3264(__NR3264_truncate, sys_truncate64, sys_truncate, \ 160 + compat_sys_truncate64) 161 + #define __NR3264_ftruncate 46 162 + __SC_COMP_3264(__NR3264_ftruncate, sys_ftruncate64, sys_ftruncate, \ 163 + compat_sys_ftruncate64) 164 + 165 + #define __NR_fallocate 47 166 + __SC_COMP(__NR_fallocate, sys_fallocate, compat_sys_fallocate) 167 + #define __NR_faccessat 48 168 + __SYSCALL(__NR_faccessat, sys_faccessat) 169 + #define __NR_chdir 49 170 + __SYSCALL(__NR_chdir, sys_chdir) 171 + #define __NR_fchdir 50 172 + __SYSCALL(__NR_fchdir, sys_fchdir) 173 + #define __NR_chroot 51 174 + __SYSCALL(__NR_chroot, sys_chroot) 175 + #define __NR_fchmod 52 176 + __SYSCALL(__NR_fchmod, sys_fchmod) 177 + #define __NR_fchmodat 53 178 + __SYSCALL(__NR_fchmodat, sys_fchmodat) 179 + #define __NR_fchownat 54 180 + __SYSCALL(__NR_fchownat, sys_fchownat) 181 + #define __NR_fchown 55 182 + __SYSCALL(__NR_fchown, sys_fchown) 183 + #define __NR_openat 56 184 + __SYSCALL(__NR_openat, sys_openat) 185 + #define __NR_close 57 186 + __SYSCALL(__NR_close, sys_close) 187 + #define __NR_vhangup 58 188 + __SYSCALL(__NR_vhangup, sys_vhangup) 189 + 190 + /* fs/pipe.c */ 191 + #define __NR_pipe2 59 192 + __SYSCALL(__NR_pipe2, sys_pipe2) 193 + 194 + /* fs/quota.c */ 195 + #define __NR_quotactl 60 196 + __SYSCALL(__NR_quotactl, sys_quotactl) 197 + 198 + /* fs/readdir.c */ 199 + #define __NR_getdents64 61 200 + __SYSCALL(__NR_getdents64, sys_getdents64) 201 + 202 + /* fs/read_write.c */ 203 + #define __NR3264_lseek 62 204 + __SC_3264(__NR3264_lseek, sys_llseek, sys_lseek) 205 + #define __NR_read 63 206 + __SYSCALL(__NR_read, sys_read) 207 + #define __NR_write 64 208 + __SYSCALL(__NR_write, sys_write) 209 + #define __NR_readv 65 210 + __SC_COMP(__NR_readv, sys_readv, compat_sys_readv) 211 + #define __NR_writev 66 212 + __SC_COMP(__NR_writev, sys_writev, compat_sys_writev) 213 + #define __NR_pread64 67 214 + __SC_COMP(__NR_pread64, sys_pread64, compat_sys_pread64) 215 + #define __NR_pwrite64 68 216 + __SC_COMP(__NR_pwrite64, sys_pwrite64, compat_sys_pwrite64) 217 + #define __NR_preadv 69 218 + __SC_COMP(__NR_preadv, sys_preadv, compat_sys_preadv) 219 + #define __NR_pwritev 70 220 + __SC_COMP(__NR_pwritev, sys_pwritev, compat_sys_pwritev) 221 + 222 + /* fs/sendfile.c */ 223 + #define __NR3264_sendfile 71 224 + __SYSCALL(__NR3264_sendfile, sys_sendfile64) 225 + 226 + /* fs/select.c */ 227 + #if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32 228 + #define __NR_pselect6 72 229 + __SC_COMP_3264(__NR_pselect6, sys_pselect6_time32, sys_pselect6, compat_sys_pselect6_time32) 230 + #define __NR_ppoll 73 231 + __SC_COMP_3264(__NR_ppoll, sys_ppoll_time32, sys_ppoll, compat_sys_ppoll_time32) 232 + #endif 233 + 234 + /* fs/signalfd.c */ 235 + #define __NR_signalfd4 74 236 + __SC_COMP(__NR_signalfd4, sys_signalfd4, compat_sys_signalfd4) 237 + 238 + /* fs/splice.c */ 239 + #define __NR_vmsplice 75 240 + __SC_COMP(__NR_vmsplice, sys_vmsplice, compat_sys_vmsplice) 241 + #define __NR_splice 76 242 + __SYSCALL(__NR_splice, sys_splice) 243 + #define __NR_tee 77 244 + __SYSCALL(__NR_tee, sys_tee) 245 + 246 + /* fs/stat.c */ 247 + #define __NR_readlinkat 78 248 + __SYSCALL(__NR_readlinkat, sys_readlinkat) 249 + #if defined(__ARCH_WANT_NEW_STAT) || defined(__ARCH_WANT_STAT64) 250 + #define __NR3264_fstatat 79 251 + __SC_3264(__NR3264_fstatat, sys_fstatat64, sys_newfstatat) 252 + #define __NR3264_fstat 80 253 + __SC_3264(__NR3264_fstat, sys_fstat64, sys_newfstat) 254 + #endif 255 + 256 + /* fs/sync.c */ 257 + #define __NR_sync 81 258 + __SYSCALL(__NR_sync, sys_sync) 259 + #define __NR_fsync 82 260 + __SYSCALL(__NR_fsync, sys_fsync) 261 + #define __NR_fdatasync 83 262 + __SYSCALL(__NR_fdatasync, sys_fdatasync) 263 + #ifdef __ARCH_WANT_SYNC_FILE_RANGE2 264 + #define __NR_sync_file_range2 84 265 + __SC_COMP(__NR_sync_file_range2, sys_sync_file_range2, \ 266 + compat_sys_sync_file_range2) 267 + #else 268 + #define __NR_sync_file_range 84 269 + __SC_COMP(__NR_sync_file_range, sys_sync_file_range, \ 270 + compat_sys_sync_file_range) 271 + #endif 272 + 273 + /* fs/timerfd.c */ 274 + #define __NR_timerfd_create 85 275 + __SYSCALL(__NR_timerfd_create, sys_timerfd_create) 276 + #if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32 277 + #define __NR_timerfd_settime 86 278 + __SC_3264(__NR_timerfd_settime, sys_timerfd_settime32, \ 279 + sys_timerfd_settime) 280 + #define __NR_timerfd_gettime 87 281 + __SC_3264(__NR_timerfd_gettime, sys_timerfd_gettime32, \ 282 + sys_timerfd_gettime) 283 + #endif 284 + 285 + /* fs/utimes.c */ 286 + #if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32 287 + #define __NR_utimensat 88 288 + __SC_3264(__NR_utimensat, sys_utimensat_time32, sys_utimensat) 289 + #endif 290 + 291 + /* kernel/acct.c */ 292 + #define __NR_acct 89 293 + __SYSCALL(__NR_acct, sys_acct) 294 + 295 + /* kernel/capability.c */ 296 + #define __NR_capget 90 297 + __SYSCALL(__NR_capget, sys_capget) 298 + #define __NR_capset 91 299 + __SYSCALL(__NR_capset, sys_capset) 300 + 301 + /* kernel/exec_domain.c */ 302 + #define __NR_personality 92 303 + __SYSCALL(__NR_personality, sys_personality) 304 + 305 + /* kernel/exit.c */ 306 + #define __NR_exit 93 307 + __SYSCALL(__NR_exit, sys_exit) 308 + #define __NR_exit_group 94 309 + __SYSCALL(__NR_exit_group, sys_exit_group) 310 + #define __NR_waitid 95 311 + __SC_COMP(__NR_waitid, sys_waitid, compat_sys_waitid) 312 + 313 + /* kernel/fork.c */ 314 + #define __NR_set_tid_address 96 315 + __SYSCALL(__NR_set_tid_address, sys_set_tid_address) 316 + #define __NR_unshare 97 317 + __SYSCALL(__NR_unshare, sys_unshare) 318 + 319 + /* kernel/futex.c */ 320 + #if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32 321 + #define __NR_futex 98 322 + __SC_3264(__NR_futex, sys_futex_time32, sys_futex) 323 + #endif 324 + #define __NR_set_robust_list 99 325 + __SC_COMP(__NR_set_robust_list, sys_set_robust_list, \ 326 + compat_sys_set_robust_list) 327 + #define __NR_get_robust_list 100 328 + __SC_COMP(__NR_get_robust_list, sys_get_robust_list, \ 329 + compat_sys_get_robust_list) 330 + 331 + /* kernel/hrtimer.c */ 332 + #if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32 333 + #define __NR_nanosleep 101 334 + __SC_3264(__NR_nanosleep, sys_nanosleep_time32, sys_nanosleep) 335 + #endif 336 + 337 + /* kernel/itimer.c */ 338 + #define __NR_getitimer 102 339 + __SC_COMP(__NR_getitimer, sys_getitimer, compat_sys_getitimer) 340 + #define __NR_setitimer 103 341 + __SC_COMP(__NR_setitimer, sys_setitimer, compat_sys_setitimer) 342 + 343 + /* kernel/kexec.c */ 344 + #define __NR_kexec_load 104 345 + __SC_COMP(__NR_kexec_load, sys_kexec_load, compat_sys_kexec_load) 346 + 347 + /* kernel/module.c */ 348 + #define __NR_init_module 105 349 + __SYSCALL(__NR_init_module, sys_init_module) 350 + #define __NR_delete_module 106 351 + __SYSCALL(__NR_delete_module, sys_delete_module) 352 + 353 + /* kernel/posix-timers.c */ 354 + #define __NR_timer_create 107 355 + __SC_COMP(__NR_timer_create, sys_timer_create, compat_sys_timer_create) 356 + #if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32 357 + #define __NR_timer_gettime 108 358 + __SC_3264(__NR_timer_gettime, sys_timer_gettime32, sys_timer_gettime) 359 + #endif 360 + #define __NR_timer_getoverrun 109 361 + __SYSCALL(__NR_timer_getoverrun, sys_timer_getoverrun) 362 + #if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32 363 + #define __NR_timer_settime 110 364 + __SC_3264(__NR_timer_settime, sys_timer_settime32, sys_timer_settime) 365 + #endif 366 + #define __NR_timer_delete 111 367 + __SYSCALL(__NR_timer_delete, sys_timer_delete) 368 + #if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32 369 + #define __NR_clock_settime 112 370 + __SC_3264(__NR_clock_settime, sys_clock_settime32, sys_clock_settime) 371 + #define __NR_clock_gettime 113 372 + __SC_3264(__NR_clock_gettime, sys_clock_gettime32, sys_clock_gettime) 373 + #define __NR_clock_getres 114 374 + __SC_3264(__NR_clock_getres, sys_clock_getres_time32, sys_clock_getres) 375 + #define __NR_clock_nanosleep 115 376 + __SC_3264(__NR_clock_nanosleep, sys_clock_nanosleep_time32, \ 377 + sys_clock_nanosleep) 378 + #endif 379 + 380 + /* kernel/printk.c */ 381 + #define __NR_syslog 116 382 + __SYSCALL(__NR_syslog, sys_syslog) 383 + 384 + /* kernel/ptrace.c */ 385 + #define __NR_ptrace 117 386 + __SYSCALL(__NR_ptrace, sys_ptrace) 387 + 388 + /* kernel/sched/core.c */ 389 + #define __NR_sched_setparam 118 390 + __SYSCALL(__NR_sched_setparam, sys_sched_setparam) 391 + #define __NR_sched_setscheduler 119 392 + __SYSCALL(__NR_sched_setscheduler, sys_sched_setscheduler) 393 + #define __NR_sched_getscheduler 120 394 + __SYSCALL(__NR_sched_getscheduler, sys_sched_getscheduler) 395 + #define __NR_sched_getparam 121 396 + __SYSCALL(__NR_sched_getparam, sys_sched_getparam) 397 + #define __NR_sched_setaffinity 122 398 + __SC_COMP(__NR_sched_setaffinity, sys_sched_setaffinity, \ 399 + compat_sys_sched_setaffinity) 400 + #define __NR_sched_getaffinity 123 401 + __SC_COMP(__NR_sched_getaffinity, sys_sched_getaffinity, \ 402 + compat_sys_sched_getaffinity) 403 + #define __NR_sched_yield 124 404 + __SYSCALL(__NR_sched_yield, sys_sched_yield) 405 + #define __NR_sched_get_priority_max 125 406 + __SYSCALL(__NR_sched_get_priority_max, sys_sched_get_priority_max) 407 + #define __NR_sched_get_priority_min 126 408 + __SYSCALL(__NR_sched_get_priority_min, sys_sched_get_priority_min) 409 + #if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32 410 + #define __NR_sched_rr_get_interval 127 411 + __SC_3264(__NR_sched_rr_get_interval, sys_sched_rr_get_interval_time32, \ 412 + sys_sched_rr_get_interval) 413 + #endif 414 + 415 + /* kernel/signal.c */ 416 + #define __NR_restart_syscall 128 417 + __SYSCALL(__NR_restart_syscall, sys_restart_syscall) 418 + #define __NR_kill 129 419 + __SYSCALL(__NR_kill, sys_kill) 420 + #define __NR_tkill 130 421 + __SYSCALL(__NR_tkill, sys_tkill) 422 + #define __NR_tgkill 131 423 + __SYSCALL(__NR_tgkill, sys_tgkill) 424 + #define __NR_sigaltstack 132 425 + __SC_COMP(__NR_sigaltstack, sys_sigaltstack, compat_sys_sigaltstack) 426 + #define __NR_rt_sigsuspend 133 427 + __SC_COMP(__NR_rt_sigsuspend, sys_rt_sigsuspend, compat_sys_rt_sigsuspend) 428 + #define __NR_rt_sigaction 134 429 + __SC_COMP(__NR_rt_sigaction, sys_rt_sigaction, compat_sys_rt_sigaction) 430 + #define __NR_rt_sigprocmask 135 431 + __SC_COMP(__NR_rt_sigprocmask, sys_rt_sigprocmask, compat_sys_rt_sigprocmask) 432 + #define __NR_rt_sigpending 136 433 + __SC_COMP(__NR_rt_sigpending, sys_rt_sigpending, compat_sys_rt_sigpending) 434 + #if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32 435 + #define __NR_rt_sigtimedwait 137 436 + __SC_COMP_3264(__NR_rt_sigtimedwait, sys_rt_sigtimedwait_time32, \ 437 + sys_rt_sigtimedwait, compat_sys_rt_sigtimedwait_time32) 438 + #endif 439 + #define __NR_rt_sigqueueinfo 138 440 + __SC_COMP(__NR_rt_sigqueueinfo, sys_rt_sigqueueinfo, \ 441 + compat_sys_rt_sigqueueinfo) 442 + #define __NR_rt_sigreturn 139 443 + __SC_COMP(__NR_rt_sigreturn, sys_rt_sigreturn, compat_sys_rt_sigreturn) 444 + 445 + /* kernel/sys.c */ 446 + #define __NR_setpriority 140 447 + __SYSCALL(__NR_setpriority, sys_setpriority) 448 + #define __NR_getpriority 141 449 + __SYSCALL(__NR_getpriority, sys_getpriority) 450 + #define __NR_reboot 142 451 + __SYSCALL(__NR_reboot, sys_reboot) 452 + #define __NR_setregid 143 453 + __SYSCALL(__NR_setregid, sys_setregid) 454 + #define __NR_setgid 144 455 + __SYSCALL(__NR_setgid, sys_setgid) 456 + #define __NR_setreuid 145 457 + __SYSCALL(__NR_setreuid, sys_setreuid) 458 + #define __NR_setuid 146 459 + __SYSCALL(__NR_setuid, sys_setuid) 460 + #define __NR_setresuid 147 461 + __SYSCALL(__NR_setresuid, sys_setresuid) 462 + #define __NR_getresuid 148 463 + __SYSCALL(__NR_getresuid, sys_getresuid) 464 + #define __NR_setresgid 149 465 + __SYSCALL(__NR_setresgid, sys_setresgid) 466 + #define __NR_getresgid 150 467 + __SYSCALL(__NR_getresgid, sys_getresgid) 468 + #define __NR_setfsuid 151 469 + __SYSCALL(__NR_setfsuid, sys_setfsuid) 470 + #define __NR_setfsgid 152 471 + __SYSCALL(__NR_setfsgid, sys_setfsgid) 472 + #define __NR_times 153 473 + __SC_COMP(__NR_times, sys_times, compat_sys_times) 474 + #define __NR_setpgid 154 475 + __SYSCALL(__NR_setpgid, sys_setpgid) 476 + #define __NR_getpgid 155 477 + __SYSCALL(__NR_getpgid, sys_getpgid) 478 + #define __NR_getsid 156 479 + __SYSCALL(__NR_getsid, sys_getsid) 480 + #define __NR_setsid 157 481 + __SYSCALL(__NR_setsid, sys_setsid) 482 + #define __NR_getgroups 158 483 + __SYSCALL(__NR_getgroups, sys_getgroups) 484 + #define __NR_setgroups 159 485 + __SYSCALL(__NR_setgroups, sys_setgroups) 486 + #define __NR_uname 160 487 + __SYSCALL(__NR_uname, sys_newuname) 488 + #define __NR_sethostname 161 489 + __SYSCALL(__NR_sethostname, sys_sethostname) 490 + #define __NR_setdomainname 162 491 + __SYSCALL(__NR_setdomainname, sys_setdomainname) 492 + 493 + #ifdef __ARCH_WANT_SET_GET_RLIMIT 494 + /* getrlimit and setrlimit are superseded with prlimit64 */ 495 + #define __NR_getrlimit 163 496 + __SC_COMP(__NR_getrlimit, sys_getrlimit, compat_sys_getrlimit) 497 + #define __NR_setrlimit 164 498 + __SC_COMP(__NR_setrlimit, sys_setrlimit, compat_sys_setrlimit) 499 + #endif 500 + 501 + #define __NR_getrusage 165 502 + __SC_COMP(__NR_getrusage, sys_getrusage, compat_sys_getrusage) 503 + #define __NR_umask 166 504 + __SYSCALL(__NR_umask, sys_umask) 505 + #define __NR_prctl 167 506 + __SYSCALL(__NR_prctl, sys_prctl) 507 + #define __NR_getcpu 168 508 + __SYSCALL(__NR_getcpu, sys_getcpu) 509 + 510 + /* kernel/time.c */ 511 + #if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32 512 + #define __NR_gettimeofday 169 513 + __SC_COMP(__NR_gettimeofday, sys_gettimeofday, compat_sys_gettimeofday) 514 + #define __NR_settimeofday 170 515 + __SC_COMP(__NR_settimeofday, sys_settimeofday, compat_sys_settimeofday) 516 + #define __NR_adjtimex 171 517 + __SC_3264(__NR_adjtimex, sys_adjtimex_time32, sys_adjtimex) 518 + #endif 519 + 520 + /* kernel/timer.c */ 521 + #define __NR_getpid 172 522 + __SYSCALL(__NR_getpid, sys_getpid) 523 + #define __NR_getppid 173 524 + __SYSCALL(__NR_getppid, sys_getppid) 525 + #define __NR_getuid 174 526 + __SYSCALL(__NR_getuid, sys_getuid) 527 + #define __NR_geteuid 175 528 + __SYSCALL(__NR_geteuid, sys_geteuid) 529 + #define __NR_getgid 176 530 + __SYSCALL(__NR_getgid, sys_getgid) 531 + #define __NR_getegid 177 532 + __SYSCALL(__NR_getegid, sys_getegid) 533 + #define __NR_gettid 178 534 + __SYSCALL(__NR_gettid, sys_gettid) 535 + #define __NR_sysinfo 179 536 + __SC_COMP(__NR_sysinfo, sys_sysinfo, compat_sys_sysinfo) 537 + 538 + /* ipc/mqueue.c */ 539 + #define __NR_mq_open 180 540 + __SC_COMP(__NR_mq_open, sys_mq_open, compat_sys_mq_open) 541 + #define __NR_mq_unlink 181 542 + __SYSCALL(__NR_mq_unlink, sys_mq_unlink) 543 + #if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32 544 + #define __NR_mq_timedsend 182 545 + __SC_3264(__NR_mq_timedsend, sys_mq_timedsend_time32, sys_mq_timedsend) 546 + #define __NR_mq_timedreceive 183 547 + __SC_3264(__NR_mq_timedreceive, sys_mq_timedreceive_time32, \ 548 + sys_mq_timedreceive) 549 + #endif 550 + #define __NR_mq_notify 184 551 + __SC_COMP(__NR_mq_notify, sys_mq_notify, compat_sys_mq_notify) 552 + #define __NR_mq_getsetattr 185 553 + __SC_COMP(__NR_mq_getsetattr, sys_mq_getsetattr, compat_sys_mq_getsetattr) 554 + 555 + /* ipc/msg.c */ 556 + #define __NR_msgget 186 557 + __SYSCALL(__NR_msgget, sys_msgget) 558 + #define __NR_msgctl 187 559 + __SC_COMP(__NR_msgctl, sys_msgctl, compat_sys_msgctl) 560 + #define __NR_msgrcv 188 561 + __SC_COMP(__NR_msgrcv, sys_msgrcv, compat_sys_msgrcv) 562 + #define __NR_msgsnd 189 563 + __SC_COMP(__NR_msgsnd, sys_msgsnd, compat_sys_msgsnd) 564 + 565 + /* ipc/sem.c */ 566 + #define __NR_semget 190 567 + __SYSCALL(__NR_semget, sys_semget) 568 + #define __NR_semctl 191 569 + __SC_COMP(__NR_semctl, sys_semctl, compat_sys_semctl) 570 + #if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32 571 + #define __NR_semtimedop 192 572 + __SC_3264(__NR_semtimedop, sys_semtimedop_time32, sys_semtimedop) 573 + #endif 574 + #define __NR_semop 193 575 + __SYSCALL(__NR_semop, sys_semop) 576 + 577 + /* ipc/shm.c */ 578 + #define __NR_shmget 194 579 + __SYSCALL(__NR_shmget, sys_shmget) 580 + #define __NR_shmctl 195 581 + __SC_COMP(__NR_shmctl, sys_shmctl, compat_sys_shmctl) 582 + #define __NR_shmat 196 583 + __SC_COMP(__NR_shmat, sys_shmat, compat_sys_shmat) 584 + #define __NR_shmdt 197 585 + __SYSCALL(__NR_shmdt, sys_shmdt) 586 + 587 + /* net/socket.c */ 588 + #define __NR_socket 198 589 + __SYSCALL(__NR_socket, sys_socket) 590 + #define __NR_socketpair 199 591 + __SYSCALL(__NR_socketpair, sys_socketpair) 592 + #define __NR_bind 200 593 + __SYSCALL(__NR_bind, sys_bind) 594 + #define __NR_listen 201 595 + __SYSCALL(__NR_listen, sys_listen) 596 + #define __NR_accept 202 597 + __SYSCALL(__NR_accept, sys_accept) 598 + #define __NR_connect 203 599 + __SYSCALL(__NR_connect, sys_connect) 600 + #define __NR_getsockname 204 601 + __SYSCALL(__NR_getsockname, sys_getsockname) 602 + #define __NR_getpeername 205 603 + __SYSCALL(__NR_getpeername, sys_getpeername) 604 + #define __NR_sendto 206 605 + __SYSCALL(__NR_sendto, sys_sendto) 606 + #define __NR_recvfrom 207 607 + __SC_COMP(__NR_recvfrom, sys_recvfrom, compat_sys_recvfrom) 608 + #define __NR_setsockopt 208 609 + __SC_COMP(__NR_setsockopt, sys_setsockopt, compat_sys_setsockopt) 610 + #define __NR_getsockopt 209 611 + __SC_COMP(__NR_getsockopt, sys_getsockopt, compat_sys_getsockopt) 612 + #define __NR_shutdown 210 613 + __SYSCALL(__NR_shutdown, sys_shutdown) 614 + #define __NR_sendmsg 211 615 + __SC_COMP(__NR_sendmsg, sys_sendmsg, compat_sys_sendmsg) 616 + #define __NR_recvmsg 212 617 + __SC_COMP(__NR_recvmsg, sys_recvmsg, compat_sys_recvmsg) 618 + 619 + /* mm/filemap.c */ 620 + #define __NR_readahead 213 621 + __SC_COMP(__NR_readahead, sys_readahead, compat_sys_readahead) 622 + 623 + /* mm/nommu.c, also with MMU */ 624 + #define __NR_brk 214 625 + __SYSCALL(__NR_brk, sys_brk) 626 + #define __NR_munmap 215 627 + __SYSCALL(__NR_munmap, sys_munmap) 628 + #define __NR_mremap 216 629 + __SYSCALL(__NR_mremap, sys_mremap) 630 + 631 + /* security/keys/keyctl.c */ 632 + #define __NR_add_key 217 633 + __SYSCALL(__NR_add_key, sys_add_key) 634 + #define __NR_request_key 218 635 + __SYSCALL(__NR_request_key, sys_request_key) 636 + #define __NR_keyctl 219 637 + __SC_COMP(__NR_keyctl, sys_keyctl, compat_sys_keyctl) 638 + 639 + /* arch/example/kernel/sys_example.c */ 640 + #define __NR_clone 220 641 + __SYSCALL(__NR_clone, sys_clone) 642 + #define __NR_execve 221 643 + __SC_COMP(__NR_execve, sys_execve, compat_sys_execve) 644 + 645 + #define __NR3264_mmap 222 646 + __SC_3264(__NR3264_mmap, sys_mmap2, sys_mmap) 647 + /* mm/fadvise.c */ 648 + #define __NR3264_fadvise64 223 649 + __SC_COMP(__NR3264_fadvise64, sys_fadvise64_64, compat_sys_fadvise64_64) 650 + 651 + /* mm/, CONFIG_MMU only */ 652 + #ifndef __ARCH_NOMMU 653 + #define __NR_swapon 224 654 + __SYSCALL(__NR_swapon, sys_swapon) 655 + #define __NR_swapoff 225 656 + __SYSCALL(__NR_swapoff, sys_swapoff) 657 + #define __NR_mprotect 226 658 + __SYSCALL(__NR_mprotect, sys_mprotect) 659 + #define __NR_msync 227 660 + __SYSCALL(__NR_msync, sys_msync) 661 + #define __NR_mlock 228 662 + __SYSCALL(__NR_mlock, sys_mlock) 663 + #define __NR_munlock 229 664 + __SYSCALL(__NR_munlock, sys_munlock) 665 + #define __NR_mlockall 230 666 + __SYSCALL(__NR_mlockall, sys_mlockall) 667 + #define __NR_munlockall 231 668 + __SYSCALL(__NR_munlockall, sys_munlockall) 669 + #define __NR_mincore 232 670 + __SYSCALL(__NR_mincore, sys_mincore) 671 + #define __NR_madvise 233 672 + __SYSCALL(__NR_madvise, sys_madvise) 673 + #define __NR_remap_file_pages 234 674 + __SYSCALL(__NR_remap_file_pages, sys_remap_file_pages) 675 + #define __NR_mbind 235 676 + __SC_COMP(__NR_mbind, sys_mbind, compat_sys_mbind) 677 + #define __NR_get_mempolicy 236 678 + __SC_COMP(__NR_get_mempolicy, sys_get_mempolicy, compat_sys_get_mempolicy) 679 + #define __NR_set_mempolicy 237 680 + __SC_COMP(__NR_set_mempolicy, sys_set_mempolicy, compat_sys_set_mempolicy) 681 + #define __NR_migrate_pages 238 682 + __SC_COMP(__NR_migrate_pages, sys_migrate_pages, compat_sys_migrate_pages) 683 + #define __NR_move_pages 239 684 + __SC_COMP(__NR_move_pages, sys_move_pages, compat_sys_move_pages) 685 + #endif 686 + 687 + #define __NR_rt_tgsigqueueinfo 240 688 + __SC_COMP(__NR_rt_tgsigqueueinfo, sys_rt_tgsigqueueinfo, \ 689 + compat_sys_rt_tgsigqueueinfo) 690 + #define __NR_perf_event_open 241 691 + __SYSCALL(__NR_perf_event_open, sys_perf_event_open) 692 + #define __NR_accept4 242 693 + __SYSCALL(__NR_accept4, sys_accept4) 694 + #if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32 695 + #define __NR_recvmmsg 243 696 + __SC_COMP_3264(__NR_recvmmsg, sys_recvmmsg_time32, sys_recvmmsg, compat_sys_recvmmsg_time32) 697 + #endif 698 + 699 + /* 700 + * Architectures may provide up to 16 syscalls of their own 701 + * starting with this value. 702 + */ 703 + #define __NR_arch_specific_syscall 244 704 + 705 + #if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32 706 + #define __NR_wait4 260 707 + __SC_COMP(__NR_wait4, sys_wait4, compat_sys_wait4) 708 + #endif 709 + #define __NR_prlimit64 261 710 + __SYSCALL(__NR_prlimit64, sys_prlimit64) 711 + #define __NR_fanotify_init 262 712 + __SYSCALL(__NR_fanotify_init, sys_fanotify_init) 713 + #define __NR_fanotify_mark 263 714 + __SYSCALL(__NR_fanotify_mark, sys_fanotify_mark) 715 + #define __NR_name_to_handle_at 264 716 + __SYSCALL(__NR_name_to_handle_at, sys_name_to_handle_at) 717 + #define __NR_open_by_handle_at 265 718 + __SYSCALL(__NR_open_by_handle_at, sys_open_by_handle_at) 719 + #if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32 720 + #define __NR_clock_adjtime 266 721 + __SC_3264(__NR_clock_adjtime, sys_clock_adjtime32, sys_clock_adjtime) 722 + #endif 723 + #define __NR_syncfs 267 724 + __SYSCALL(__NR_syncfs, sys_syncfs) 725 + #define __NR_setns 268 726 + __SYSCALL(__NR_setns, sys_setns) 727 + #define __NR_sendmmsg 269 728 + __SC_COMP(__NR_sendmmsg, sys_sendmmsg, compat_sys_sendmmsg) 729 + #define __NR_process_vm_readv 270 730 + __SC_COMP(__NR_process_vm_readv, sys_process_vm_readv, \ 731 + compat_sys_process_vm_readv) 732 + #define __NR_process_vm_writev 271 733 + __SC_COMP(__NR_process_vm_writev, sys_process_vm_writev, \ 734 + compat_sys_process_vm_writev) 735 + #define __NR_kcmp 272 736 + __SYSCALL(__NR_kcmp, sys_kcmp) 737 + #define __NR_finit_module 273 738 + __SYSCALL(__NR_finit_module, sys_finit_module) 739 + #define __NR_sched_setattr 274 740 + __SYSCALL(__NR_sched_setattr, sys_sched_setattr) 741 + #define __NR_sched_getattr 275 742 + __SYSCALL(__NR_sched_getattr, sys_sched_getattr) 743 + #define __NR_renameat2 276 744 + __SYSCALL(__NR_renameat2, sys_renameat2) 745 + #define __NR_seccomp 277 746 + __SYSCALL(__NR_seccomp, sys_seccomp) 747 + #define __NR_getrandom 278 748 + __SYSCALL(__NR_getrandom, sys_getrandom) 749 + #define __NR_memfd_create 279 750 + __SYSCALL(__NR_memfd_create, sys_memfd_create) 751 + #define __NR_bpf 280 752 + __SYSCALL(__NR_bpf, sys_bpf) 753 + #define __NR_execveat 281 754 + __SC_COMP(__NR_execveat, sys_execveat, compat_sys_execveat) 755 + #define __NR_userfaultfd 282 756 + __SYSCALL(__NR_userfaultfd, sys_userfaultfd) 757 + #define __NR_membarrier 283 758 + __SYSCALL(__NR_membarrier, sys_membarrier) 759 + #define __NR_mlock2 284 760 + __SYSCALL(__NR_mlock2, sys_mlock2) 761 + #define __NR_copy_file_range 285 762 + __SYSCALL(__NR_copy_file_range, sys_copy_file_range) 763 + #define __NR_preadv2 286 764 + __SC_COMP(__NR_preadv2, sys_preadv2, compat_sys_preadv2) 765 + #define __NR_pwritev2 287 766 + __SC_COMP(__NR_pwritev2, sys_pwritev2, compat_sys_pwritev2) 767 + #define __NR_pkey_mprotect 288 768 + __SYSCALL(__NR_pkey_mprotect, sys_pkey_mprotect) 769 + #define __NR_pkey_alloc 289 770 + __SYSCALL(__NR_pkey_alloc, sys_pkey_alloc) 771 + #define __NR_pkey_free 290 772 + __SYSCALL(__NR_pkey_free, sys_pkey_free) 773 + #define __NR_statx 291 774 + __SYSCALL(__NR_statx, sys_statx) 775 + #if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32 776 + #define __NR_io_pgetevents 292 777 + __SC_COMP_3264(__NR_io_pgetevents, sys_io_pgetevents_time32, sys_io_pgetevents, compat_sys_io_pgetevents) 778 + #endif 779 + #define __NR_rseq 293 780 + __SYSCALL(__NR_rseq, sys_rseq) 781 + #define __NR_kexec_file_load 294 782 + __SYSCALL(__NR_kexec_file_load, sys_kexec_file_load) 783 + /* 295 through 402 are unassigned to sync up with generic numbers, don't use */ 784 + #if __BITS_PER_LONG == 32 785 + #define __NR_clock_gettime64 403 786 + __SYSCALL(__NR_clock_gettime64, sys_clock_gettime) 787 + #define __NR_clock_settime64 404 788 + __SYSCALL(__NR_clock_settime64, sys_clock_settime) 789 + #define __NR_clock_adjtime64 405 790 + __SYSCALL(__NR_clock_adjtime64, sys_clock_adjtime) 791 + #define __NR_clock_getres_time64 406 792 + __SYSCALL(__NR_clock_getres_time64, sys_clock_getres) 793 + #define __NR_clock_nanosleep_time64 407 794 + __SYSCALL(__NR_clock_nanosleep_time64, sys_clock_nanosleep) 795 + #define __NR_timer_gettime64 408 796 + __SYSCALL(__NR_timer_gettime64, sys_timer_gettime) 797 + #define __NR_timer_settime64 409 798 + __SYSCALL(__NR_timer_settime64, sys_timer_settime) 799 + #define __NR_timerfd_gettime64 410 800 + __SYSCALL(__NR_timerfd_gettime64, sys_timerfd_gettime) 801 + #define __NR_timerfd_settime64 411 802 + __SYSCALL(__NR_timerfd_settime64, sys_timerfd_settime) 803 + #define __NR_utimensat_time64 412 804 + __SYSCALL(__NR_utimensat_time64, sys_utimensat) 805 + #define __NR_pselect6_time64 413 806 + __SC_COMP(__NR_pselect6_time64, sys_pselect6, compat_sys_pselect6_time64) 807 + #define __NR_ppoll_time64 414 808 + __SC_COMP(__NR_ppoll_time64, sys_ppoll, compat_sys_ppoll_time64) 809 + #define __NR_io_pgetevents_time64 416 810 + __SYSCALL(__NR_io_pgetevents_time64, sys_io_pgetevents) 811 + #define __NR_recvmmsg_time64 417 812 + __SC_COMP(__NR_recvmmsg_time64, sys_recvmmsg, compat_sys_recvmmsg_time64) 813 + #define __NR_mq_timedsend_time64 418 814 + __SYSCALL(__NR_mq_timedsend_time64, sys_mq_timedsend) 815 + #define __NR_mq_timedreceive_time64 419 816 + __SYSCALL(__NR_mq_timedreceive_time64, sys_mq_timedreceive) 817 + #define __NR_semtimedop_time64 420 818 + __SYSCALL(__NR_semtimedop_time64, sys_semtimedop) 819 + #define __NR_rt_sigtimedwait_time64 421 820 + __SC_COMP(__NR_rt_sigtimedwait_time64, sys_rt_sigtimedwait, compat_sys_rt_sigtimedwait_time64) 821 + #define __NR_futex_time64 422 822 + __SYSCALL(__NR_futex_time64, sys_futex) 823 + #define __NR_sched_rr_get_interval_time64 423 824 + __SYSCALL(__NR_sched_rr_get_interval_time64, sys_sched_rr_get_interval) 825 + #endif 826 + 827 + #define __NR_pidfd_send_signal 424 828 + __SYSCALL(__NR_pidfd_send_signal, sys_pidfd_send_signal) 829 + #define __NR_io_uring_setup 425 830 + __SYSCALL(__NR_io_uring_setup, sys_io_uring_setup) 831 + #define __NR_io_uring_enter 426 832 + __SYSCALL(__NR_io_uring_enter, sys_io_uring_enter) 833 + #define __NR_io_uring_register 427 834 + __SYSCALL(__NR_io_uring_register, sys_io_uring_register) 835 + #define __NR_open_tree 428 836 + __SYSCALL(__NR_open_tree, sys_open_tree) 837 + #define __NR_move_mount 429 838 + __SYSCALL(__NR_move_mount, sys_move_mount) 839 + #define __NR_fsopen 430 840 + __SYSCALL(__NR_fsopen, sys_fsopen) 841 + #define __NR_fsconfig 431 842 + __SYSCALL(__NR_fsconfig, sys_fsconfig) 843 + #define __NR_fsmount 432 844 + __SYSCALL(__NR_fsmount, sys_fsmount) 845 + #define __NR_fspick 433 846 + __SYSCALL(__NR_fspick, sys_fspick) 847 + #define __NR_pidfd_open 434 848 + __SYSCALL(__NR_pidfd_open, sys_pidfd_open) 849 + #ifdef __ARCH_WANT_SYS_CLONE3 850 + #define __NR_clone3 435 851 + __SYSCALL(__NR_clone3, sys_clone3) 852 + #endif 853 + 854 + #undef __NR_syscalls 855 + #define __NR_syscalls 436 856 + 857 + /* 858 + * 32 bit systems traditionally used different 859 + * syscalls for off_t and loff_t arguments, while 860 + * 64 bit systems only need the off_t version. 861 + * For new 32 bit platforms, there is no need to 862 + * implement the old 32 bit off_t syscalls, so 863 + * they take different names. 864 + * Here we map the numbers so that both versions 865 + * use the same syscall table layout. 866 + */ 867 + #if __BITS_PER_LONG == 64 && !defined(__SYSCALL_COMPAT) 868 + #define __NR_fcntl __NR3264_fcntl 869 + #define __NR_statfs __NR3264_statfs 870 + #define __NR_fstatfs __NR3264_fstatfs 871 + #define __NR_truncate __NR3264_truncate 872 + #define __NR_ftruncate __NR3264_ftruncate 873 + #define __NR_lseek __NR3264_lseek 874 + #define __NR_sendfile __NR3264_sendfile 875 + #if defined(__ARCH_WANT_NEW_STAT) || defined(__ARCH_WANT_STAT64) 876 + #define __NR_newfstatat __NR3264_fstatat 877 + #define __NR_fstat __NR3264_fstat 878 + #endif 879 + #define __NR_mmap __NR3264_mmap 880 + #define __NR_fadvise64 __NR3264_fadvise64 881 + #ifdef __NR3264_stat 882 + #define __NR_stat __NR3264_stat 883 + #define __NR_lstat __NR3264_lstat 884 + #endif 885 + #else 886 + #define __NR_fcntl64 __NR3264_fcntl 887 + #define __NR_statfs64 __NR3264_statfs 888 + #define __NR_fstatfs64 __NR3264_fstatfs 889 + #define __NR_truncate64 __NR3264_truncate 890 + #define __NR_ftruncate64 __NR3264_ftruncate 891 + #define __NR_llseek __NR3264_lseek 892 + #define __NR_sendfile64 __NR3264_sendfile 893 + #if defined(__ARCH_WANT_NEW_STAT) || defined(__ARCH_WANT_STAT64) 894 + #define __NR_fstatat64 __NR3264_fstatat 895 + #define __NR_fstat64 __NR3264_fstat 896 + #endif 897 + #define __NR_mmap2 __NR3264_mmap 898 + #define __NR_fadvise64_64 __NR3264_fadvise64 899 + #ifdef __NR3264_stat 900 + #define __NR_stat64 __NR3264_stat 901 + #define __NR_lstat64 __NR3264_lstat 902 + #endif 903 + #endif
+2
src/kernel/emulation/linux/linux-syscalls/linux-x86.h
··· 426 426 #define __NR_fspick 433 427 427 #define __NR_pidfd_open 434 428 428 #define __NR_clone3 435 429 + #define __NR_openat2 437 430 + #define __NR_pidfd_getfd 438 429 431 430 432 #endif /* _ASM_X86_UNISTD_32_H */
+2
src/kernel/emulation/linux/linux-syscalls/linux-x86_64.h
··· 348 348 #define __NR_fspick 433 349 349 #define __NR_pidfd_open 434 350 350 #define __NR_clone3 435 351 + #define __NR_openat2 437 352 + #define __NR_pidfd_getfd 438 351 353 352 354 #endif /* _ASM_X86_UNISTD_64_H */
+12 -6
src/kernel/emulation/linux/linux-syscalls/linux.h
··· 1 - #ifndef _ASM_X86_UNISTD_H 2 - #define _ASM_X86_UNISTD_H 1 + #ifndef _ASM_GENERAL_UNISTD_H 2 + #define _ASM_GENERAL_UNISTD_H 3 3 4 4 # ifdef __i386__ 5 - # include "linux-x86.h" 5 + // # include <asm/unistd_32.h> 6 + # include "linux-x86.h" 6 7 # elif defined(__x86_64__) 7 - # include "linux-x86_64.h" 8 + // # include <asm/unistd_64.h> 9 + # include "linux-x86_64.h" 10 + # elif defined(__arm64__) 11 + // # include <asm/unistd.h> 12 + # include "linux-arm64.h" 8 13 # else 9 - # error Missing Linux sc numbers for this arch 14 + // look in <asm/unistd.h> if you are unsure 15 + # error Missing Linux sc numbers for this arch 10 16 # endif 11 17 12 - #endif /* _ASM_X86_UNISTD_H */ 18 + #endif /* _ASM_GENERAL_UNISTD_H */
+15 -1
src/kernel/emulation/linux/select/poll.c
··· 5 5 #include <linux-syscalls/linux.h> 6 6 #include "../bsdthread/cancelable.h" 7 7 8 + struct ppoll_timespec { 9 + long tv_sec; /* seconds */ 10 + long tv_nsec; /* nanoseconds */ 11 + }; 12 + 8 13 long sys_poll(struct pollfd* fds, unsigned int nfds, int timeout) 9 14 { 10 15 CANCELATION_POINT(); ··· 15 20 { 16 21 int ret; 17 22 18 - ret = LINUX_SYSCALL(__NR_poll, fds, nfds, timeout); 23 + #if defined(__NR_poll) 24 + ret = LINUX_SYSCALL(__NR_poll, fds, nfds, timeout); 25 + #else 26 + struct ppoll_timespec timeout_ts = { 27 + .tv_sec = (timeout % 1000) * 1000000, 28 + .tv_nsec = timeout / 1000 29 + }; 30 + 31 + ret = LINUX_SYSCALL(__NR_ppoll, fds, nfds, (timeout < 0) ? NULL : &timeout_ts, NULL); 32 + #endif 19 33 if (ret < 0) 20 34 ret = errno_linux_to_bsd(ret); 21 35
+21 -17
src/kernel/emulation/linux/select/select.c
··· 13 13 14 14 long sys_select_nocancel(int nfds, void* rfds, void* wfds, void* efds, struct bsd_timeval* timeout) 15 15 { 16 - int ret; 17 - struct linux_timeval ltv; 16 + #if defined(__NR__newselect) || defined(__NR_select) 17 + int ret; 18 + struct linux_timeval ltv; 18 19 19 - if (timeout != NULL) 20 - { 21 - ltv.tv_sec = timeout->tv_sec; 22 - ltv.tv_usec = timeout->tv_usec; 23 - } 20 + if (timeout != NULL) 21 + { 22 + ltv.tv_sec = timeout->tv_sec; 23 + ltv.tv_usec = timeout->tv_usec; 24 + } 24 25 25 - #ifdef __NR__newselect 26 - ret = LINUX_SYSCALL(__NR__newselect, nfds, rfds, wfds, efds, 27 - (timeout != NULL) ? &ltv : NULL); 28 - #else 29 - ret = LINUX_SYSCALL(__NR_select, nfds, rfds, wfds, efds, 30 - (timeout != NULL) ? &ltv : NULL); 31 - #endif 32 - if (ret < 0) 33 - ret = errno_linux_to_bsd(ret); 26 + #if defined(__NR__newselect) 27 + ret = LINUX_SYSCALL(__NR__newselect, nfds, rfds, wfds, efds, 28 + (timeout != NULL) ? &ltv : NULL); 29 + #else 30 + ret = LINUX_SYSCALL(__NR_select, nfds, rfds, wfds, efds, 31 + (timeout != NULL) ? &ltv : NULL); 32 + #endif 33 + if (ret < 0) 34 + ret = errno_linux_to_bsd(ret); 34 35 35 - return ret; 36 + return ret; 37 + #else 38 + return sys_pselect_nocancel(nfds, rfds, wfds, efds, timeout, NULL); 39 + #endif 36 40 } 37 41
+22 -10
src/kernel/emulation/linux/stat/lstat.c
··· 27 27 if (ret < 0) 28 28 return errno_linux_to_bsd(ret); 29 29 30 - #ifdef __NR_lstat64 31 - ret = LINUX_SYSCALL(__NR_lstat64, vc.path, &lstat); 32 - #else 33 - ret = LINUX_SYSCALL(__NR_lstat, vc.path, &lstat); 34 - #endif 30 + #ifdef defined(__NR_lstat64) 31 + ret = LINUX_SYSCALL(__NR_lstat64, vc.path, &lstat); 32 + #elif defined(__NR_lstat) 33 + ret = LINUX_SYSCALL(__NR_lstat, vc.path, &lstat); 34 + #else 35 + #if defined(__NR_newfstatat) 36 + int status = LINUX_SYSCALL(__NR_newfstatat, LINUX_AT_FDCWD, vc.path, &lstat, LINUX_AT_SYMLINK_NOFOLLOW); 37 + #else 38 + int status = LINUX_SYSCALL(__NR_fstatat64, LINUX_AT_FDCWD, vc.path, &lstat, LINUX_AT_SYMLINK_NOFOLLOW); 39 + #endif 40 + #endif 35 41 36 42 if (ret < 0) 37 43 return errno_linux_to_bsd(ret); ··· 56 62 if (ret < 0) 57 63 return errno_linux_to_bsd(ret); 58 64 59 - #ifdef __NR_lstat64 60 - ret = LINUX_SYSCALL(__NR_lstat64, vc.path, &lstat); 61 - #else 62 - ret = LINUX_SYSCALL(__NR_lstat, vc.path, &lstat); 63 - #endif 65 + #ifdef defined(__NR_lstat64) 66 + ret = LINUX_SYSCALL(__NR_lstat64, vc.path, &lstat); 67 + #elif defined(__NR_lstat) 68 + ret = LINUX_SYSCALL(__NR_lstat, vc.path, &lstat); 69 + #else 70 + #if defined(__NR_newfstatat) 71 + int status = LINUX_SYSCALL(__NR_newfstatat, LINUX_AT_FDCWD, vc.path, &lstat, LINUX_AT_SYMLINK_NOFOLLOW); 72 + #else 73 + int status = LINUX_SYSCALL(__NR_fstatat64, LINUX_AT_FDCWD, vc.path, &lstat, LINUX_AT_SYMLINK_NOFOLLOW); 74 + #endif 75 + #endif 64 76 65 77 if (ret < 0) 66 78 return errno_linux_to_bsd(ret);
+5 -1
src/kernel/emulation/linux/stat/mkfifo.c
··· 28 28 if (ret < 0) 29 29 return errno_linux_to_bsd(ret); 30 30 31 - ret = LINUX_SYSCALL(__NR_mknod, vc.path, mode | LINUX_S_IFIFO, 0); 31 + #if defined(__NR_mknod) 32 + ret = LINUX_SYSCALL(__NR_mknod, vc.path, mode | LINUX_S_IFIFO, 0); 33 + #else 34 + ret = LINUX_SYSCALL(__NR_mknodat, LINUX_AT_FDCWD, vc.path, mode | LINUX_S_IFIFO, 0); 35 + #endif 32 36 33 37 if (ret < 0) 34 38 return errno_linux_to_bsd(ret);
+5 -1
src/kernel/emulation/linux/time/utimes.c
··· 30 30 if (ret < 0) 31 31 return errno_linux_to_bsd(ret); 32 32 33 - ret = LINUX_SYSCALL(__NR_utimes, vc.path, tv ? ltv: 0); 33 + #if defined(__NR_utimes) 34 + ret = LINUX_SYSCALL(__NR_utimes, vc.path, tv ? ltv: 0); 35 + #else 36 + ret = LINUX_SYSCALL(__NR_utimensat, LINUX_AT_FDCWD, vc.path, tv ? ltv: 0, 0); 37 + #endif 34 38 if (ret < 0) 35 39 ret = errno_linux_to_bsd(ret); 36 40
+10 -2
src/kernel/emulation/linux/unistd/chmod_extended.c
··· 18 18 if (ret < 0) 19 19 return errno_linux_to_bsd(ret); 20 20 21 - ret = LINUX_SYSCALL(__NR_chmod, vc.path, mode); 21 + #if defined(__NR_chmod) 22 + ret = LINUX_SYSCALL(__NR_chmod, vc.path, mode); 23 + #else 24 + ret = LINUX_SYSCALL(__NR_fchmodat, LINUX_AT_FDCWD, vc.path, mode, 0); 25 + #endif 22 26 if (ret < 0) 23 27 return errno_linux_to_bsd(ret); 24 28 25 - ret = LINUX_SYSCALL(__NR_chown, vc.path, uid, gid); 29 + #if defined(__NR_chown) 30 + ret = LINUX_SYSCALL(__NR_chown, vc.path, uid, gid); 31 + #else 32 + ret = LINUX_SYSCALL(__NR_fchownat, LINUX_AT_FDCWD, vc.path, uid, gid, 0); 33 + #endif 26 34 if (ret < 0) 27 35 return errno_linux_to_bsd(ret); 28 36
+11 -1
src/kernel/emulation/linux/unistd/dup2.c
··· 2 2 #include "../base.h" 3 3 #include "../errno.h" 4 4 #include <linux-syscalls/linux.h> 5 + #include "../duct_errno.h" 5 6 6 7 extern void kqueue_dup(int oldfd, int newfd); 7 8 8 9 long sys_dup2(int fd_from, int fd_to) 9 10 { 10 11 int ret; 12 + 13 + #if defined(__NR_dup2) 14 + ret = LINUX_SYSCALL2(__NR_dup2, fd_from, fd_to); 15 + #else 16 + // It's not clear if 0 is offically a valid flag argument. 17 + // But we don't really have a choice. 18 + ret = LINUX_SYSCALL(__NR_dup3, fd_from, fd_to, 0); 11 19 12 - ret = LINUX_SYSCALL2(__NR_dup2, fd_from, fd_to); 20 + if (ret == LINUX_EINVAL && fd_from == fd_to) 21 + ret = fd_to; 22 + #endif 13 23 if (ret < 0) 14 24 ret = errno_linux_to_bsd(ret); 15 25 else
+9 -5
src/kernel/emulation/linux/unistd/getpgrp.c
··· 5 5 6 6 long sys_getpgrp(void) 7 7 { 8 - int ret; 8 + #if defined(__NR_getpgrp) 9 + int ret; 9 10 10 - ret = LINUX_SYSCALL0(__NR_getpgrp); 11 - if (ret < 0) 12 - ret = errno_linux_to_bsd(ret); 11 + ret = LINUX_SYSCALL0(__NR_getpgrp); 12 + if (ret < 0) 13 + ret = errno_linux_to_bsd(ret); 13 14 14 - return ret; 15 + return ret; 16 + #else 17 + return sys_getpgid(0); 18 + #endif 15 19 } 16 20
+5 -1
src/kernel/emulation/linux/unistd/mknod.c
··· 21 21 if (ret < 0) 22 22 return errno_linux_to_bsd(ret); 23 23 24 - ret = LINUX_SYSCALL(__NR_mknod, vc.path, mode, dev); 24 + #if defined(__NR_mknod) 25 + ret = LINUX_SYSCALL(__NR_mknod, vc.path, mode, dev); 26 + #else 27 + ret = LINUX_SYSCALL(__NR_mknodat, LINUX_AT_FDCWD, vc.path, mode, dev); 28 + #endif 25 29 if (ret < 0) 26 30 ret = errno_linux_to_bsd(ret); 27 31
+5 -1
src/kernel/emulation/linux/unistd/pipe.c
··· 7 7 { 8 8 int ret; 9 9 10 - ret = LINUX_SYSCALL(__NR_pipe, fd); 10 + #if defined(__NR_pipe) 11 + ret = LINUX_SYSCALL(__NR_pipe, fd); 12 + #else 13 + ret = LINUX_SYSCALL(__NR_pipe2, fd, 0); 14 + #endif 11 15 if (ret < 0) 12 16 return errno_linux_to_bsd(ret); 13 17
+36 -7
src/kernel/emulation/linux/vchroot_userspace.c
··· 37 37 # include "duct_errno.h" 38 38 # include "stat/common.h" 39 39 # include "dirent/getdirentries.h" 40 + # include "common_at.h" 40 41 typedef struct linux_stat stat_t; 41 42 42 43 extern __SIZE_TYPE__ strlen(const char* s); ··· 107 108 108 109 __simple_sprintf(buf, "/proc/self/fd/%d", dfd); 109 110 110 - rv = LINUX_SYSCALL(__NR_readlink, buf, prefix_path, sizeof(prefix_path) - 1); 111 + #if defined(__NR_readlink) 112 + rv = LINUX_SYSCALL(__NR_readlink, buf, prefix_path, sizeof(prefix_path) - 1); 113 + #else 114 + rv = LINUX_SYSCALL(__NR_readlinkat, LINUX_AT_FDCWD, buf, prefix_path, sizeof(prefix_path) - 1); 115 + #endif 111 116 prefix_path[rv] = '\0'; 112 117 prefix_path_len = rv; 113 118 ··· 184 189 else 185 190 strcpy(buf, "/proc/self/cwd"); 186 191 187 - int rv = LINUX_SYSCALL(__NR_readlink, buf, ctxt.current_path, sizeof(ctxt.current_path) - 1); 192 + #if defined(__NR_readlink) 193 + int rv = LINUX_SYSCALL(__NR_readlink, buf, ctxt.current_path, sizeof(ctxt.current_path) - 1); 194 + #else 195 + int rv = LINUX_SYSCALL(__NR_readlinkat, LINUX_AT_FDCWD, buf, ctxt.current_path, sizeof(ctxt.current_path) - 1); 196 + #endif 188 197 189 198 if (rv < 0) 190 199 { ··· 305 314 if (!ctxt->unknown_component) 306 315 { 307 316 stat_t st; 308 - int status = LINUX_SYSCALL(__NR_lstat, ctxt->current_path, &st); 317 + #if defined(__NR_lstat) 318 + int status = LINUX_SYSCALL(__NR_lstat, ctxt->current_path, &st); 319 + #else 320 + #if __NR_newfstatat 321 + int status = LINUX_SYSCALL(__NR_newfstatat, LINUX_AT_FDCWD, ctxt->current_path, &st, LINUX_AT_SYMLINK_NOFOLLOW); 322 + #else 323 + int status = LINUX_SYSCALL(__NR_fstatat64, LINUX_AT_FDCWD, ctxt->current_path, &st, LINUX_AT_SYMLINK_NOFOLLOW); 324 + #endif 325 + #endif 309 326 310 327 if (icase_enabled && status == -LINUX_ENOENT) 311 328 { ··· 313 330 314 331 // Examine the directory above 315 332 ctxt->current_path[prevlen-1] = '\0'; 316 - 317 - int dfd = LINUX_SYSCALL(__NR_open, (prevlen > 1) ? ctxt->current_path : "/", LINUX_O_RDONLY); 333 + 334 + #if defined(__NR_open) 335 + int dfd = LINUX_SYSCALL(__NR_open, (prevlen > 1) ? ctxt->current_path : "/", LINUX_O_RDONLY); 336 + #else 337 + int dfd = LINUX_SYSCALL(__NR_openat, LINUX_AT_FDCWD, (prevlen > 1) ? ctxt->current_path : "/", LINUX_O_RDONLY); 338 + #endif 318 339 char dirents[4096]; // buffer space for struct linux_dirent64 entries 319 340 int len; 320 341 ··· 356 377 char link[512]; 357 378 int rv; 358 379 359 - rv = LINUX_SYSCALL(__NR_readlink, ctxt->current_path, link, sizeof(link) - 1); 380 + #if defined(__NR_readlink) 381 + rv = LINUX_SYSCALL(__NR_readlink, ctxt->current_path, link, sizeof(link) - 1); 382 + #else 383 + rv = LINUX_SYSCALL(__NR_readlinkat, LINUX_AT_FDCWD, ctxt->current_path, link, sizeof(link) - 1); 384 + #endif 360 385 361 386 if (rv < 0) 362 387 return rv; ··· 431 456 432 457 __simple_sprintf(buf, "/proc/self/fd/%d", args->fd); 433 458 434 - int rv = LINUX_SYSCALL(__NR_readlink, buf, link, sizeof(link) - 1); 459 + #if defined(__NR_readlink) 460 + int rv = LINUX_SYSCALL(__NR_readlink, buf, link, sizeof(link) - 1); 461 + #else 462 + int rv = LINUX_SYSCALL(__NR_readlinkat, LINUX_AT_FDCWD, buf, link, sizeof(link) - 1); 463 + #endif 435 464 if (rv < 0) 436 465 return rv; 437 466
+6 -1
src/kernel/emulation/linux/xattr/flistxattr.c
··· 6 6 #include "../fdpath.h" 7 7 #include <sys/stat.h> 8 8 #include "../simple.h" 9 + #include "../common_at.h" 9 10 10 11 #ifdef __NR_fstat64 11 12 #define STAT_CALL __NR_fstat64 ··· 31 32 char buf[64] = {0}; 32 33 char path[4096] = {0}; 33 34 __simple_sprintf(buf, "/proc/self/fd/%d", fd); 34 - ret = LINUX_SYSCALL(__NR_readlink, buf, path, sizeof(path) - 1); 35 + #if __NR_readlink 36 + ret = LINUX_SYSCALL(__NR_readlink, buf, path, sizeof(path) - 1); 37 + #else 38 + ret = LINUX_SYSCALL(__NR_readlinkat, LINUX_AT_FDCWD, buf, path, sizeof(path) - 1); 39 + #endif 35 40 if (ret < 0) 36 41 return errno_linux_to_bsd(ret); 37 42 path[ret] = '\0';