1 $NetBSD: syscalls.master,v 1.82 2024/09/28 19:35:55 christos Exp $ 2 3; Derived from sys/compat/linux/arch/*/syscalls.master 4; and from Linux 2.4.12 arch/arm/kernel/calls.S 5 6; NetBSD/arm COMPAT_LINUX system call name/number "master" file. 7; (See syscalls.conf to see what it is processed into.) 8; 9; Fields: number type [type-dependent ...] 10; number system call number, must be in order 11; type one of STD, OBSOL, UNIMPL, NODEF, NOARGS, or one of 12; the compatibility options defined in syscalls.conf. 13; 14; types: 15; STD always included 16; OBSOL obsolete, not included in system 17; UNIMPL unimplemented, not included in system 18; NODEF included, but don't define the syscall number 19; NOARGS included, but don't define the syscall args structure 20; INDIR included, but don't define the syscall args structure 21; and allow it to be "really" varargs. 22; 23; The compat options are defined in the syscalls.conf file, and the 24; compat option name is prefixed to the syscall name. Other than 25; that, they're like NODEF (for 'compat' options), or STD (for 26; 'libcompat' options). 27; 28; The type-dependent arguments are as follows: 29; For STD, NODEF, NOARGS, and compat syscalls: 30; { pseudo-proto } [alias] 31; For other syscalls: 32; [comment] 33; 34; #ifdef's, etc. may be included, and are copied to the output files. 35; #include's are copied to the syscall names and switch definition files only. 36 37#include <sys/param.h> 38#include <sys/poll.h> 39#include <sys/systm.h> 40#include <sys/signal.h> 41#include <sys/mount.h> 42#include <sys/syscallargs.h> 43#include <sys/time.h> 44 45#include <compat/sys/time.h> 46#include <compat/linux/common/linux_types.h> 47#include <compat/linux/common/linux_mmap.h> 48#include <compat/linux/common/linux_signal.h> 49#include <compat/linux/common/linux_siginfo.h> 50#include <compat/linux/common/linux_machdep.h> 51#include <compat/linux/common/linux_mqueue.h> 52#include <compat/linux/common/linux_sched.h> 53 54 55#include <compat/linux/linux_syscallargs.h> 56 57%% 58; XXX We have to explicitly declare linux_sys_nosys. 590 NOARGS { int|linux_sys||nosys(void); } 601 STD { int|linux_sys||exit(int rval); } 612 NOARGS { int|sys||fork(void); } 623 NOARGS { ssize_t|sys||read(int fd, void *buf, size_t nbyte); } 634 NOARGS { ssize_t|sys||write(int fd, const void *buf, \ 64 size_t nbyte); } 655 STD { int|linux_sys||open(const char *path, int flags, \ 66 linux_umode_t mode); } 676 NOARGS { int|sys||close(int fd); } 687 STD { int|linux_sys||waitpid(int pid, int *status, \ 69 int options);} 708 STD { int|linux_sys||creat(const char *path, linux_umode_t mode); } 719 NOARGS { int|sys||link(const char *path, const char *link); } 7210 STD { int|linux_sys||unlink(const char *path); } 7311 NOARGS { int|sys||execve(const char *path, char **argp, \ 74 char **envp); } 7512 NOARGS { int|sys||chdir(const char *path); } 7613 STD { int|linux_sys||time(linux_time_t *t); } 7714 STD { int|linux_sys||mknod(const char *path, linux_umode_t mode, \ 78 unsigned dev); } 7915 NOARGS { int|sys||chmod(const char *path, int mode); } 8016 STD { int|linux_sys||lchown16(const char *path, \ 81 linux_uid16_t uid, linux_gid16_t gid); } 8217 OBSOL break 8318 OBSOL ostat 8419 NOARGS { long|compat_43_sys||lseek(int fd, long offset, \ 85 int whence); } 8620 NOARGS { pid_t|sys||getpid(void); } 8721 UNIMPL mount 8822 OBSOL umount 8923 NOARGS { int|sys||setuid(uid_t uid); } 9024 NOARGS { uid_t|sys||getuid(void); } 9125 STD { int|linux_sys||stime(linux_time_t *t); } 9226 STD { int|linux_sys||ptrace(int request, int pid, \ 93 int addr, int data); } 9427 STD { int|linux_sys||alarm(unsigned int secs); } 9528 OBSOL ofstat 9629 STD { int|linux_sys||pause(void); } 9730 STD { int|linux_sys||utime(const char *path, \ 98 struct linux_utimbuf *times); } 9931 OBSOL stty 10032 OBSOL gtty 10133 NOARGS { int|sys||access(const char *path, int flags); } 10234 STD { int|linux_sys||nice(int incr); } 10335 OBSOL ftime 10436 NOARGS { int|sys||sync(void); } 10537 STD { int|linux_sys||kill(int pid, int signum); } 10638 NOARGS { int|sys||__posix_rename(const char *from, \ 107 const char *to); } 10839 NOARGS { int|sys||mkdir(const char *path, linux_umode_t mode); } 10940 NOARGS { int|sys||rmdir(const char *path); } 11041 NOARGS { int|sys||dup(int fd); } 11142 STD { int|linux_sys||pipe(int *pfds); } 11243 STD { int|linux_sys||times(struct times *tms); } 11344 OBSOL prof 11445 STD { int|linux_sys||brk(char *nsize); } 11546 NOARGS { int|sys||setgid(gid_t gid); } 11647 NOARGS { gid_t|sys||getgid(void); } 11748 STD { int|linux_sys||signal(int signum, \ 118 linux_handler_t handler); } 11949 NOARGS { uid_t|sys||geteuid(void); } 12050 NOARGS { gid_t|sys||getegid(void); } 12151 NOARGS { int|sys||acct(char *path); } 12252 UNIMPL umount 12353 OBSOL lock 12454 STD { int|linux_sys||ioctl(int fd, u_long com, \ 125 void *data); } 12655 STD { int|linux_sys||fcntl(int fd, int cmd, void *arg); } 12756 OBSOL mpx 12857 NOARGS { int|sys||setpgid(int pid, int pgid); } 12958 OBSOL ulimit 13059 STD { int|linux_sys||oldolduname( \ 131 struct linux_oldold_utsname *up); } 13260 NOARGS { int|sys||umask(int newmask); } 13361 NOARGS { int|sys||chroot(char *path); } 13462 UNIMPL ustat 13563 NOARGS { int|sys||dup2(int from, int to); } 13664 NOARGS { pid_t|sys||getppid(void); } 13765 NOARGS { int|sys||getpgrp(void); } 13866 NOARGS { int|sys||setsid(void); } 13967 STD { int|linux_sys||sigaction(int signum, \ 140 const struct linux_old_sigaction *nsa, \ 141 struct linux_old_sigaction *osa); } 14268 STD { int|linux_sys||siggetmask(void); } 14369 STD { int|linux_sys||sigsetmask(linux_old_sigset_t mask); } 14470 STD { int|linux_sys||setreuid16(linux_uid16_t ruid, \ 145 linux_uid16_t euid); } 14671 STD { int|linux_sys||setregid16(linux_gid16_t rgid, \ 147 linux_gid16_t egid); } 14872 STD { int|linux_sys||sigsuspend(void *restart, \ 149 int oldmask, int mask); } 15073 STD { int|linux_sys||sigpending(linux_old_sigset_t *set); } 15174 NOARGS { int|compat_43_sys||sethostname(char *hostname, \ 152 u_int len);} 15375 STD { int|linux_sys||setrlimit(u_int which, \ 154 struct orlimit *rlp); } 15576 STD { int|linux_sys||getrlimit(u_int which, \ 156 struct orlimit *rlp); } 15777 NOARGS { int|compat_50_sys||getrusage(int who, struct rusage50 *rusage); } 15878 STD { int|linux_sys||gettimeofday(struct timeval50 *tp, \ 159 struct timezone *tzp); } 16079 STD { int|linux_sys||settimeofday(struct timeval50 *tp, \ 161 struct timezone *tzp); } 16280 STD { int|linux_sys||getgroups16(int gidsetsize, \ 163 linux_gid16_t *gidset); } 16481 STD { int|linux_sys||setgroups16(int gidsetsize, \ 165 linux_gid16_t *gidset); } 16682 STD { int|linux_sys||oldselect(struct linux_oldselect *lsp); } 16783 NOARGS { int|sys||symlink(const char *path, const char *link); } 16884 NOARGS { int|compat_43_sys||lstat(const char *path, \ 169 struct stat43 *ub); } oolstat 17085 NOARGS { ssize_t|sys||readlink(const char *path, char *buf, \ 171 int count); } 172#ifdef EXEC_AOUT 17386 STD { int|linux_sys||uselib(const char *path); } 174#else 17586 EXCL uselib 176#endif 17787 STD { int|linux_sys||swapon(char *name); } 17888 STD { int|linux_sys||reboot(int magic1, int magic2, \ 179 int cmd, void *arg); } 18089 STD { int|linux_sys||readdir(int fd, void *dent, \ 181 unsigned int count); } 18290 STD { int|linux_sys||old_mmap(struct linux_oldmmap *lmp); } 18391 NOARGS { int|sys||munmap(void *addr, size_t len); } 18492 NOARGS { int|compat_43_sys||truncate(const char *path, \ 185 long length); } 18693 NOARGS { int|compat_43_sys||ftruncate(int fd, long length); } 18794 NOARGS { int|sys||fchmod(int fd, linux_umode_t mode); } 18895 STD { int|linux_sys||fchown16(int fd, linux_uid16_t uid, \ 189 linux_gid16_t gid); } 19096 STD { int|linux_sys||getpriority(int which, int who); } 19197 NOARGS { int|sys||setpriority(int which, int who, int prio); } 19298 NOARGS { int|sys||profil(void *samples, u_int size, \ 193 u_int offset, u_int scale); } 19499 STD { int|linux_sys||statfs(const char *path, \ 195 struct linux_statfs *sp); } 196100 STD { int|linux_sys||fstatfs(int fd, \ 197 struct linux_statfs *sp); } 198101 UNIMPL 199102 STD { int|linux_sys||socketcall(int what, void *args); } 200103 UNIMPL syslog 201104 NOARGS { int|compat_50_sys||setitimer(int which, \ 202 struct itimerval50 *itv, \ 203 struct itimerval50 *oitv); } 204105 NOARGS { int|compat_50_sys||getitimer(int which, \ 205 struct itimerval50 *itv); } 206106 STD { int|linux_sys||stat(const char *path, \ 207 struct linux_stat *sp); } 208107 STD { int|linux_sys||lstat(const char *path, \ 209 struct linux_stat *sp); } 210108 STD { int|linux_sys||fstat(int fd, struct linux_stat *sp); } 211109 STD { int|linux_sys||olduname(struct linux_oldutsname *up); } 212110 UNIMPL 213111 UNIMPL vhangup 214112 UNIMPL idle 215113 UNIMPL syscall 216114 STD { int|linux_sys||wait4(int pid, int *status, \ 217 int options, struct rusage50 *rusage); } 218115 STD { int|linux_sys||swapoff(const char *path); } 219116 STD { int|linux_sys||sysinfo(struct linux_sysinfo *arg); } 220117 STD { int|linux_sys||ipc(int what, int a1, int a2, int a3, \ 221 void *ptr); } 222118 NOARGS { int|sys||fsync(int fd); } 223119 STD { int|linux_sys||sigreturn(struct linux_sigcontext *scp); } 224120 STD { int|linux_sys||clone(int flags, void *stack, \ 225 void *parent_tidptr, void *tls, void *child_tidptr); } 226121 STD { int|linux_sys||setdomainname(char *domainname, \ 227 int len); } 228122 STD { int|linux_sys||uname(struct linux_utsname *up); } 229123 UNIMPL modify_ldt 230124 UNIMPL adjtimex 231125 STD { int|linux_sys||mprotect(const void *start, \ 232 unsigned long len, int prot); } 233126 STD { int|linux_sys||sigprocmask(int how, \ 234 const linux_old_sigset_t *set, \ 235 linux_old_sigset_t *oset); } 236127 UNIMPL create_module 237128 UNIMPL init_module 238129 UNIMPL delete_module 239130 UNIMPL get_kernel_syms 240131 UNIMPL quotactl 241132 NOARGS { pid_t|sys||getpgid(pid_t pid); } 242133 NOARGS { int|sys||fchdir(int fd); } 243134 UNIMPL bdflush 244135 UNIMPL sysfs 245136 STD { int|linux_sys||personality(unsigned long per); } 246137 UNIMPL afs_syscall 247138 STD { int|linux_sys||setfsuid(uid_t uid); } 248139 STD { int|linux_sys||setfsgid(gid_t gid); } 249140 STD { int|linux_sys||llseek(int fd, u_int32_t ohigh, \ 250 u_int32_t olow, void *res, int whence); } 251141 STD { int|linux_sys||getdents(int fd, \ 252 struct linux_dirent *dent, unsigned int count); } 253142 STD { int|linux_sys||select(int nfds, fd_set *readfds, \ 254 fd_set *writefds, fd_set *exceptfds, \ 255 struct timeval50 *timeout); } 256143 NOARGS { int|sys||flock(int fd, int how); } 257144 NOARGS { int|sys|13|msync(void *addr, size_t len, int flags); } 258145 NOARGS { ssize_t|sys||readv(int fd, \ 259 const struct iovec *iovp, int iovcnt); } 260146 NOARGS { ssize_t|sys||writev(int fd, \ 261 const struct iovec *iovp, int iovcnt); } 262147 NOARGS { pid_t|sys||getsid(pid_t pid); } 263148 STD { int|linux_sys||fdatasync(int fd); } 264149 STD { int|linux_sys||__sysctl(struct linux___sysctl *lsp); } 265150 NOARGS { int|sys||mlock(void *addr, size_t len); } 266151 NOARGS { int|sys||munlock(void *addr, size_t len); } 267152 NOARGS { int|sys||mlockall(int flags); } 268153 NOARGS { int|sys||munlockall(void); } 269154 STD { int|linux_sys||sched_setparam(pid_t pid, \ 270 const struct linux_sched_param *sp); } 271155 STD { int|linux_sys||sched_getparam(pid_t pid, \ 272 struct linux_sched_param *sp); } 273156 STD { int|linux_sys||sched_setscheduler(pid_t pid, \ 274 int policy, const struct linux_sched_param *sp); } 275157 STD { int|linux_sys||sched_getscheduler(pid_t pid); } 276158 STD { int|linux_sys||sched_yield(void); } 277159 STD { int|linux_sys||sched_get_priority_max(int policy); } 278160 STD { int|linux_sys||sched_get_priority_min(int policy); } 279161 UNIMPL sched_rr_get_interval 280162 STD { int|linux_sys||nanosleep( \ 281 const struct linux_timespec *rqtp, \ 282 struct linux_timespec *rmtp); } 283163 STD { void *|linux_sys||mremap(void *old_address, \ 284 size_t old_size, size_t new_size, u_long flags); } 285164 STD { int|linux_sys||setresuid16(linux_uid16_t ruid, \ 286 linux_uid16_t euid, linux_uid16_t suid); } 287165 STD { int|linux_sys||getresuid16(linux_uid16_t *ruid, \ 288 linux_uid16_t *euid, linux_uid16_t *suid); } 289166 UNIMPL 290167 UNIMPL query_module 291168 NOARGS { int|sys||poll(struct pollfd *fds, u_int nfds, \ 292 int timeout); } 293169 UNIMPL nfsservctl 294170 STD { int|linux_sys||setresgid16(linux_gid16_t rgid, \ 295 linux_gid16_t egid, linux_gid16_t sgid); } 296171 STD { int|linux_sys||getresgid16(linux_gid16_t *rgid, \ 297 linux_gid16_t *egid, linux_gid16_t *sgid); } 298172 UNIMPL prctl 299173 UNIMPL rt_sigreturn 300;173 STD { int|linux_sys||rt_sigreturn( \ 301; struct linux_rt_sigframe *sfp); } 302174 STD { int|linux_sys||rt_sigaction(int signum, \ 303 const struct linux_sigaction *nsa, \ 304 struct linux_sigaction *osa, \ 305 size_t sigsetsize); } 306175 STD { int|linux_sys||rt_sigprocmask(int how, \ 307 const linux_sigset_t *set, \ 308 linux_sigset_t *oset, \ 309 size_t sigsetsize); } 310176 STD { int|linux_sys||rt_sigpending( \ 311 linux_sigset_t *set, \ 312 size_t sigsetsize); } 313177 STD { int|linux_sys||rt_sigtimedwait( \ 314 const linux_sigset_t *set, \ 315 linux_siginfo_t *info, \ 316 const struct linux_timespec *timeout); } 317178 STD { int|linux_sys||rt_queueinfo(int pid, int signum, \ 318 linux_siginfo_t *uinfo); } 319179 STD { int|linux_sys||rt_sigsuspend(linux_sigset_t *unewset, \ 320 size_t sigsetsize); } 321180 STD { int|linux_sys||pread(int fd, char *buf, \ 322 size_t nbyte, off_t offset); } 323181 STD { int|linux_sys||pwrite(int fd, char *buf, \ 324 size_t nbyte, off_t offset); } 325182 STD { int|linux_sys||chown16(const char *path, \ 326 linux_uid16_t uid, linux_gid16_t gid); } 327183 NOARGS { int|sys||__getcwd(char *bufp, size_t length); } 328184 UNIMPL capget 329185 UNIMPL capset 330186 STD { int|linux_sys||sigaltstack( \ 331 const struct linux_sigaltstack *ss, \ 332 struct linux_sigaltstack *oss); } 333187 UNIMPL sendfile 334188 UNIMPL getpmsg 335189 UNIMPL putpmsg 336190 NOARGS vfork { int|sys|14|vfork(void); } 337191 STD { int|linux_sys||ugetrlimit(int which, \ 338 struct rlimit *rlp); } 339#define linux_sys_mmap2_args linux_sys_mmap_args 340192 NOARGS { linux_off_t|linux_sys||mmap2(unsigned long addr, \ 341 size_t len, int prot, int flags, int fd, \ 342 linux_off_t offset); } 343193 STD { int|linux_sys||truncate64(const char *path, \ 344 off_t length); } 345194 STD { int|linux_sys||ftruncate64(unsigned int fd, \ 346 off_t length); } 347195 STD { int|linux_sys||stat64(const char *path, \ 348 struct linux_stat64 *sp); } 349196 STD { int|linux_sys||lstat64(const char *path, \ 350 struct linux_stat64 *sp); } 351197 STD { int|linux_sys||fstat64(int fd, \ 352 struct linux_stat64 *sp); } 353198 NOARGS { int|sys||__posix_lchown(const char *path, uid_t uid, \ 354 gid_t gid); } 355199 NOARGS getuid32 { uid_t|sys||getuid(void); } 356200 NOARGS getgid32 { gid_t|sys||getgid(void); } 357201 NOARGS geteuid32 { uid_t|sys||geteuid(void); } 358202 NOARGS getegid32 { gid_t|sys||getegid(void); } 359203 NOARGS setreuid32 { int|sys||setreuid(uid_t ruid, \ 360 uid_t euid); } 361204 NOARGS setregid32 { int|sys||setregid(gid_t rgid, \ 362 gid_t egid); } 363205 NOARGS getgroups32 { int|sys||getgroups(int gidsetsize, \ 364 gid_t *gidset); } 365206 NOARGS setgroups32 { int|sys||setgroups(int gidsetsize, \ 366 gid_t *gidset); } 367207 NOARGS fchown32 { int|sys||__posix_fchown(int fd, uid_t uid, \ 368 gid_t gid); } 369208 STD setresuid32 { int|linux_sys||setresuid(uid_t ruid, \ 370 uid_t euid, uid_t suid); } 371209 STD getresuid32 { int|linux_sys||getresuid(uid_t *ruid, \ 372 uid_t *euid, uid_t *suid); } 373210 STD setresgid32 { int|linux_sys||setresgid(gid_t rgid, \ 374 gid_t egid, gid_t sgid); } 375211 STD getresgid32 { int|linux_sys||getresgid(gid_t *rgid, \ 376 gid_t *egid, gid_t *sgid); } 377212 NOARGS chown32 { int|sys||__posix_chown(const char *path, \ 378 uid_t uid, gid_t gid); } 379213 NOARGS setuid32 { int|sys||setuid(uid_t uid); } 380214 NOARGS setgid32 { int|sys||setgid(gid_t gid); } 381215 NOARGS setfsuid32 { int|linux_sys||setfsuid(uid_t uid); } 382216 NOARGS setfsgid32 { int|linux_sys||setfsgid(gid_t gid); } 383217 STD { int|linux_sys||getdents64(int fd, \ 384 struct linux_dirent64 *dent, unsigned int count); } 385218 UNIMPL pivot_root 386219 NOARGS { int|sys||mincore(void *addr, size_t len, char *vec); } 387220 NOARGS { int|sys||madvise(void *addr, size_t len, int behav); } 388221 STD { int|linux_sys||fcntl64(int fd, int cmd, void *arg); } 389222 UNIMPL /* for tux */ 390223 UNIMPL /* unused */ 391224 NOARGS { pid_t|linux_sys||gettid(void); } 392225 STD { ssize_t|linux_sys||readahead(int fd, off_t offset, \ 393 size_t count); } 394226 STD { int|linux_sys||setxattr(char *path, char *name, \ 395 void *value, size_t size, int flags); } 396227 STD { int|linux_sys||lsetxattr(char *path, char *name, \ 397 void *value, size_t size, int flags); } 398228 STD { int|linux_sys||fsetxattr(int fd, char *name, \ 399 void *value, size_t size, int flags); } 400229 STD { ssize_t|linux_sys||getxattr(char *path, char *name, \ 401 void *value, size_t size); } 402230 STD { ssize_t|linux_sys||lgetxattr(char *path, char *name, \ 403 void *value, size_t size); } 404231 STD { ssize_t|linux_sys||fgetxattr(int fd, char *name, \ 405 void *value, size_t size); } 406232 STD { ssize_t|linux_sys||listxattr(char *path, char *list, \ 407 size_t size); } 408233 STD { ssize_t|linux_sys||llistxattr(char *path, char *list, \ 409 size_t size); } 410234 STD { ssize_t|linux_sys||flistxattr(int fd, char *list, \ 411 size_t size); } 412235 STD { int|linux_sys||removexattr(char *path, char *name); } 413236 STD { int|linux_sys||lremovexattr(char *path, char *name); } 414237 STD { int|linux_sys||fremovexattr(int fd, char *name); } 415238 STD { int|linux_sys||tkill(int tid, int sig); } 416239 UNIMPL sendfile64 417240 STD { int|linux_sys||futex(int *uaddr, int op, int val, \ 418 const struct linux_timespec *timeout, int *uaddr2, \ 419 int val3); } 420241 STD { int|linux_sys||sched_setaffinity(pid_t pid, \ 421 unsigned int len, unsigned long *mask); } 422242 STD { int|linux_sys||sched_getaffinity(pid_t pid, \ 423 unsigned int len, unsigned long *mask); } 424243 UNIMPL io_setup 425244 UNIMPL io_destroy 426245 UNIMPL io_getevents 427246 UNIMPL io_submit 428247 UNIMPL io_cancel 429248 STD { int|linux_sys||exit_group(int error_code); } 430249 UNIMPL lookup_dcookie 431250 STD { int|linux_sys||epoll_create(int size); } 432251 STD { int|linux_sys||epoll_ctl(int epfd, int op, int fd, \ 433 struct linux_epoll_event *event); } 434252 STD { int|linux_sys||epoll_wait(int epfd, \ 435 struct linux_epoll_event *events, int maxevents, \ 436 int timeout); } 437253 UNIMPL remap_file_pages 438254 UNIMPL set_thread_area 439255 UNIMPL get_thread_area 440256 STD { int|linux_sys||set_tid_address(int *tid); } 441257 STD { int|linux_sys||timer_create(clockid_t clockid, \ 442 struct linux_sigevent *evp, timer_t *timerid); } 443258 STD { int|linux_sys||timer_settime(timer_t timerid, \ 444 int flags, const struct linux_itimerspec *tim, \ 445 struct linux_itimerspec *otim); } 446259 STD { int|linux_sys||timer_gettime(timer_t timerid, \ 447 struct linux_itimerspec *tim); } 448260 NOARGS { int|sys||timer_getoverrun(timer_t timerid); } 449261 NOARGS { int|sys||timer_delete(timer_t timerid); } 450262 STD { int|linux_sys||clock_settime(clockid_t which, \ 451 struct linux_timespec *tp); } 452263 STD { int|linux_sys||clock_gettime(clockid_t which, \ 453 struct linux_timespec *tp); } 454264 STD { int|linux_sys||clock_getres(clockid_t which, \ 455 struct linux_timespec *tp); } 456265 STD { int|linux_sys||clock_nanosleep(clockid_t which, \ 457 int flags, struct linux_timespec *rqtp, \ 458 struct linux_timespec *rmtp); } 459266 STD { int|linux_sys||statfs64(const char *path, \ 460 size_t sz, struct linux_statfs64 *sp); } 461267 STD { int|linux_sys||fstatfs64(int fd, \ 462 size_t sz, struct linux_statfs64 *sp); } 463268 STD { int|linux_sys||tgkill(int tgid, int tid, int sig); } 464269 NOARGS { int|compat_50_sys||utimes(const char *path, \ 465 const struct timeval50 *tptr); } 466270 STD { int|linux_sys||fadvise64_64(int fd, off_t offset, \ 467 off_t len, int advice); } 468271 UNIMPL pciconfig_iobase 469272 UNIMPL pciconfig_read 470273 UNIMPL pciconfig_write 471274 STD { linux_mqd_t|linux_sys||mq_open(const char *name, \ 472 int oflag, linux_umode_t mode, \ 473 struct linux_mq_attr *attr); } 474275 STD { int|linux_sys||mq_unlink(const char *name); } 475276 STD { int|linux_sys||mq_timedsend(linux_mqd_t mqdes, \ 476 const char *msg_ptr, size_t msg_len, \ 477 unsigned int msg_prio, \ 478 const struct linux_timespec *abs_timeout); } 479277 STD { ssize_t|linux_sys||mq_timedreceive(linux_mqd_t mqdes, \ 480 char *msg_ptr, size_t msg_len, \ 481 unsigned int *msg_prio, \ 482 const struct linux_timespec *abs_timeout); } 483278 STD { int|linux_sys||mq_notify(linux_mqd_t mqdes, \ 484 const struct linux_sigevent *sevp); } 485279 STD { int|linux_sys||mq_getsetattr(linux_mqd_t mqdes, \ 486 const struct linux_mq_attr *newattr, \ 487 struct linux_mq_attr *oldattr); } 488280 STD { int|linux_sys||waitid(int idtype, id_t id, \ 489 linux_siginfo_t *infop, int options, \ 490 struct rusage50 *rusage); } 491281 UNIMPL socket 492282 UNIMPL bind 493283 UNIMPL connect 494284 UNIMPL listen 495285 UNIMPL accept 496286 UNIMPL getsockname 497287 UNIMPL getpeername 498288 UNIMPL socketpair 499289 UNIMPL send 500290 UNIMPL sendto 501291 UNIMPL recv 502292 UNIMPL recvfrom 503293 UNIMPL shutdown 504294 UNIMPL setsockopt 505295 UNIMPL getsockopt 506296 UNIMPL sendmsg 507297 UNIMPL recvmsg 508298 UNIMPL semop 509299 UNIMPL semget 510300 UNIMPL semctl 511301 UNIMPL msgsnd 512302 UNIMPL msgrcv 513303 UNIMPL msgget 514304 UNIMPL msgctl 515305 UNIMPL shmat 516306 UNIMPL shmdt 517307 UNIMPL shmget 518308 UNIMPL shmctl 519309 UNIMPL add_key 520310 UNIMPL request_key 521311 UNIMPL keyctl 522312 UNIMPL semtimedop 523313 UNIMPL vserver 524314 UNIMPL ioptio_set 525315 UNIMPL ioptio_get 526316 STD { int|linux_sys||inotify_init(void); } 527317 STD { int|linux_sys||inotify_add_watch(int fd, \ 528 const char *pathname, uint32_t mask); } 529318 STD { int|linux_sys||inotify_rm_watch(int fd, int wd); } 530319 UNIMPL mbind 531320 UNIMPL get_mempolicy 532321 UNIMPL set_mempolicy 533322 STD { int|linux_sys||openat(int fd, const char *path, \ 534 int flags, ... linux_umode_t mode); } 535323 NOARGS { int|sys||mkdirat(int fd, const char *path, \ 536 linux_umode_t mode); } 537324 STD { int|linux_sys||mknodat(int fd, const char *path, \ 538 linux_umode_t mode, unsigned dev); } 539325 STD { int|linux_sys||fchownat(int fd, const char *path, \ 540 uid_t owner, gid_t group, int flag); } 541326 UNIMPL futimesat 542327 STD { int|linux_sys||fstatat64(int fd, const char *path, \ 543 struct linux_stat64 *sp, int flag); } 544328 STD { int|linux_sys||unlinkat(int fd, const char *path, \ 545 int flag); } 546329 NOARGS { int|sys||renameat(int fromfd, const char *from, \ 547 int tofd, const char *to); } 548330 STD { int|linux_sys||linkat(int fd1, const char *name1, \ 549 int fd2, const char *name2, int flags); } 550331 NOARGS { int|sys||symlinkat(const char *path1, int fd, \ 551 const char *path2); } 552332 NOARGS { ssize_t|sys||readlinkat(int fd, const char *path, \ 553 char *buf, size_t bufsize); } 554333 STD { int|linux_sys||fchmodat(int fd, const char *path, \ 555 linux_umode_t mode); } 556334 STD { int|linux_sys||faccessat(int fd, const char *path, \ 557 int amode); } 558335 STD { int|linux_sys||pselect6(int nfds, fd_set *readfds, \ 559 fd_set *writefds, fd_set *exceptfds, \ 560 struct linux_timespec *timeout, \ 561 linux_sized_sigset_t *ss); } 562336 STD { int|linux_sys||ppoll(struct pollfd *fds, u_int nfds, \ 563 struct linux_timespec *timeout, \ 564 linux_sigset_t *sigset); } 565337 UNIMPL unshare 566 ; 567 ; The NetBSD native robust list calls have different 568 ; argument names / types, but they are ABI-compatible 569 ; with Linux. 570 ; 571338 NOARGS { int|sys||__futex_set_robust_list(void *head, \ 572 size_t len); } 573339 NOARGS { int|sys||__futex_get_robust_list(lwpid_t lwpid, \ 574 void **headp, size_t *lenp); } 575340 UNIMPL splice 576341 STD { int|linux_sys||sync_file_range(int fd, \ 577 off_t offset, off_t nbytes, unsigned int flags); } 578342 UNIMPL tee 579343 UNIMPL vmsplice 580344 UNIMPL move_pages 581345 STD { int|linux_sys||getcpu(unsigned int *cpu, \ 582 unsigned int *node, \ 583 struct linux_getcpu_cache *tcache); } 584346 STD { int|linux_sys||epoll_pwait(int epfd, \ 585 struct linux_epoll_event *events, int maxevents, \ 586 int timeout, const linux_sigset_t *sigmask); } 587347 UNIMPL kexec_load 588348 STD { int|linux_sys||utimensat(int fd, const char *path, \ 589 struct linux_timespec *times, int flag); } 590349 UNIMPL signalfd 591350 STD { int|linux_sys||timerfd_create(clockid_t clock_id, \ 592 int flags); } 593351 STD { int|linux_sys||eventfd(unsigned int initval); } 594352 STD { int|linux_sys||fallocate(int fd, int mode, \ 595 off_t offset, off_t len); } 596353 STD { int|linux_sys||timerfd_settime(int fd, int flags, \ 597 const struct linux_itimerspec *tim, \ 598 struct linux_itimerspec *otim); } 599354 STD { int|linux_sys||timerfd_gettime(int fd, \ 600 struct linux_itimerspec *tim); } 601355 UNIMPL signalfd4 602356 STD { int|linux_sys||eventfd2(unsigned int initval, \ 603 int flags); } 604357 STD { int|linux_sys||epoll_create1(int flags); } 605358 STD { int|linux_sys||dup3(int from, int to, int flags); } 606359 STD { int|linux_sys||pipe2(int *pfds, int flags); } 607360 STD { int|linux_sys||inotify_init1(int flags); } 608361 STD { int|linux_sys||preadv(int fd, \ 609 const struct iovec *iovp, int iovcnt, \ 610 unsigned long off_lo, unsigned long off_hi); } 611362 STD { int|linux_sys||pwritev(int fd, \ 612 const struct iovcnt *iovp, int iovcnt, \ 613 unsigned long off_lo, unsigned long off_hi); } 614363 UNIMPL rt_tgsigqueueinfo 615364 UNIMPL perf_counter_open 616365 STD { int|linux_sys||recvmmsg(int s, \ 617 struct linux_mmsghdr *msgvec, unsigned int vlen, \ 618 unsigned int flags, struct timespec *timeout); } 619366 STD { int|linux_sys||accept4(int s, \ 620 struct osockaddr *name, \ 621 int *anamelen, int flags); } 622367 UNIMPL fanotify_init 623368 UNIMPL fanotify_mark 624369 STD { int|linux_sys||prlimit64(pid_t pid, int which, \ 625 struct rlimit *new_rlp, struct rlimit *old_rlp); } 626370 UNIMPL name_to_handle_at 627371 UNIMPL open_by_handle_at 628372 UNIMPL clock_adjtime 629373 STD { int|linux_sys||syncfs(int fd); } 630374 STD { int|linux_sys||sendmmsg(int s, \ 631 struct linux_mmsghdr *msgvec, unsigned int vlen, \ 632 unsigned int flags); } 633375 UNIMPL setns 634376 UNIMPL process_vm_readv 635377 UNIMPL process_vm_writev 636378 UNIMPL kcmp 637379 UNIMPL finit_module 638380 UNIMPL sched_setattr 639381 UNIMPL sched_getattr 640382 STD { int|linux_sys||renameat2(int fromfd, \ 641 const char *from, int tofd, const char *to, \ 642 unsigned int flags); } 643383 UNIMPL seccomp 644; XXX FIX-me? 645; 384 NOARGS { ssize_t|sys||getrandom(void *buf, size_t buflen, \ 646 unsigned int flags); } 647; 385 UNIMPL memfd_create 648 649; ARMLinux actually has two ranges of syscalls. Normal syscalls use 650; SWI numbers starting at 0x900000 (__NR_SYSCALL_BASE). Special 651; ARM-specific syscalls use SWI numbers starting at 0x9f0000 652; (__ARM_NR_BASE). linux_syscall() (in arch/arm/arm/linux_syscall.c) 653; remaps these down to 0x900180 so that we can use one linux_sysent 654; array for the whole lot. 655 656384 UNIMPL /* base */ 657385 STD { int|linux_sys||breakpoint(void); } 658386 STD { int|linux_sys||cacheflush(uintptr_t from, \ 659 intptr_t to, int flags); } 660387 UNIMPL usr26 661388 UNIMPL usr32 662389 STD { int|linux_sys||set_tls(void *tls); } 663390 UNIMPL 664391 STD { ssize_t|linux_sys||copy_file_range(int fd_in, \ 665 off_t * off_in, int fd_out, off_t * off_out, \ 666 size_t len, unsigned int flags); } 667392 UNIMPL 668393 UNIMPL 669394 UNIMPL 670395 UNIMPL 671396 UNIMPL 672397 STD { int|linux_sys||statx(int fd, const char *path, \ 673 int flag, unsigned int mask, \ 674 struct linux_statx *sp); } 675398 UNIMPL 676399 UNIMPL 677400 UNIMPL 678401 UNIMPL 679402 UNIMPL 680403 UNIMPL 681404 UNIMPL 682405 UNIMPL 683406 UNIMPL 684407 UNIMPL 685408 UNIMPL 686409 UNIMPL 687410 UNIMPL 688411 UNIMPL 689412 UNIMPL 690413 UNIMPL 691414 UNIMPL 692415 UNIMPL 693416 UNIMPL 694417 UNIMPL 695418 UNIMPL 696419 UNIMPL 697420 UNIMPL 698421 UNIMPL 699422 UNIMPL 700423 UNIMPL 701424 UNIMPL 702425 UNIMPL 703426 UNIMPL 704427 UNIMPL 705428 UNIMPL 706429 UNIMPL 707430 UNIMPL 708431 UNIMPL 709432 UNIMPL 710433 UNIMPL 711434 UNIMPL 712435 STD { int|linux_sys||clone3( \ 713 struct linux_user_clone3_args *cl_args, \ 714 size_t size); } 715436 STD { int|linux_sys||close_range(unsigned int first, \ 716 unsigned int last, unsigned int flags); } 717437 UNIMPL 718438 UNIMPL 719439 STD { int|linux_sys||faccessat2(int fd, const char *path, \ 720 int amode, int flags); } 721440 UNIMPL 722441 STD { int|linux_sys||epoll_pwait2(int epfd, \ 723 struct linux_epoll_event *events, int maxevents, \ 724 const struct linux_timespec *timeout, \ 725 const linux_sigset_t *sigmask); } 726