1 $NetBSD: syscalls.master,v 1.81 2024/07/01 01:35:52 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 UNIMPL sync_file_range2 577342 UNIMPL tee 578343 UNIMPL vmsplice 579344 UNIMPL move_pages 580345 STD { int|linux_sys||getcpu(unsigned int *cpu, \ 581 unsigned int *node, \ 582 struct linux_getcpu_cache *tcache); } 583346 STD { int|linux_sys||epoll_pwait(int epfd, \ 584 struct linux_epoll_event *events, int maxevents, \ 585 int timeout, const linux_sigset_t *sigmask); } 586347 UNIMPL kexec_load 587348 STD { int|linux_sys||utimensat(int fd, const char *path, \ 588 struct linux_timespec *times, int flag); } 589349 UNIMPL signalfd 590350 STD { int|linux_sys||timerfd_create(clockid_t clock_id, \ 591 int flags); } 592351 STD { int|linux_sys||eventfd(unsigned int initval); } 593352 STD { int|linux_sys||fallocate(int fd, int mode, \ 594 off_t offset, off_t len); } 595353 STD { int|linux_sys||timerfd_settime(int fd, int flags, \ 596 const struct linux_itimerspec *tim, \ 597 struct linux_itimerspec *otim); } 598354 STD { int|linux_sys||timerfd_gettime(int fd, \ 599 struct linux_itimerspec *tim); } 600355 UNIMPL signalfd4 601356 STD { int|linux_sys||eventfd2(unsigned int initval, \ 602 int flags); } 603357 STD { int|linux_sys||epoll_create1(int flags); } 604358 STD { int|linux_sys||dup3(int from, int to, int flags); } 605359 STD { int|linux_sys||pipe2(int *pfds, int flags); } 606360 STD { int|linux_sys||inotify_init1(int flags); } 607361 STD { int|linux_sys||preadv(int fd, \ 608 const struct iovec *iovp, int iovcnt, \ 609 unsigned long off_lo, unsigned long off_hi); } 610362 STD { int|linux_sys||pwritev(int fd, \ 611 const struct iovcnt *iovp, int iovcnt, \ 612 unsigned long off_lo, unsigned long off_hi); } 613363 UNIMPL rt_tgsigqueueinfo 614364 UNIMPL perf_counter_open 615365 STD { int|linux_sys||recvmmsg(int s, \ 616 struct linux_mmsghdr *msgvec, unsigned int vlen, \ 617 unsigned int flags, struct timespec *timeout); } 618366 STD { int|linux_sys||accept4(int s, \ 619 struct osockaddr *name, \ 620 int *anamelen, int flags); } 621367 UNIMPL fanotify_init 622368 UNIMPL fanotify_mark 623369 STD { int|linux_sys||prlimit64(pid_t pid, int which, \ 624 struct rlimit *new_rlp, struct rlimit *old_rlp); } 625370 UNIMPL name_to_handle_at 626371 UNIMPL open_by_handle_at 627372 UNIMPL clock_adjtime 628373 UNIMPL syncfs 629374 STD { int|linux_sys||sendmmsg(int s, \ 630 struct linux_mmsghdr *msgvec, unsigned int vlen, \ 631 unsigned int flags); } 632375 UNIMPL setns 633376 UNIMPL process_vm_readv 634377 UNIMPL process_vm_writev 635378 UNIMPL kcmp 636379 UNIMPL finit_module 637380 UNIMPL sched_setattr 638381 UNIMPL sched_getattr 639382 UNIMPL renameat2 640383 UNIMPL seccomp 641; XXX FIX-me? 642; 384 NOARGS { ssize_t|sys||getrandom(void *buf, size_t buflen, \ 643 unsigned int flags); } 644; 385 UNIMPL memfd_create 645 646; ARMLinux actually has two ranges of syscalls. Normal syscalls use 647; SWI numbers starting at 0x900000 (__NR_SYSCALL_BASE). Special 648; ARM-specific syscalls use SWI numbers starting at 0x9f0000 649; (__ARM_NR_BASE). linux_syscall() (in arch/arm/arm/linux_syscall.c) 650; remaps these down to 0x900180 so that we can use one linux_sysent 651; array for the whole lot. 652 653384 UNIMPL /* base */ 654385 STD { int|linux_sys||breakpoint(void); } 655386 STD { int|linux_sys||cacheflush(uintptr_t from, \ 656 intptr_t to, int flags); } 657387 UNIMPL usr26 658388 UNIMPL usr32 659389 STD { int|linux_sys||set_tls(void *tls); } 660390 UNIMPL 661391 UNIMPL 662392 UNIMPL 663393 UNIMPL 664394 UNIMPL 665395 UNIMPL 666396 UNIMPL 667397 STD { int|linux_sys||statx(int fd, const char *path, \ 668 int flag, unsigned int mask, \ 669 struct linux_statx *sp); } 670398 UNIMPL 671399 UNIMPL 672400 UNIMPL 673401 UNIMPL 674402 UNIMPL 675403 UNIMPL 676404 UNIMPL 677405 UNIMPL 678406 UNIMPL 679407 UNIMPL 680408 UNIMPL 681409 UNIMPL 682410 UNIMPL 683411 UNIMPL 684412 UNIMPL 685413 UNIMPL 686414 UNIMPL 687415 UNIMPL 688416 UNIMPL 689417 UNIMPL 690418 UNIMPL 691419 UNIMPL 692420 UNIMPL 693421 UNIMPL 694422 UNIMPL 695423 UNIMPL 696424 UNIMPL 697425 UNIMPL 698426 UNIMPL 699427 UNIMPL 700428 UNIMPL 701429 UNIMPL 702430 UNIMPL 703431 UNIMPL 704432 UNIMPL 705433 UNIMPL 706434 UNIMPL 707435 UNIMPL 708436 STD { int|linux_sys||close_range(unsigned int first, \ 709 unsigned int last, unsigned int flags); } 710437 UNIMPL 711438 UNIMPL 712439 STD { int|linux_sys||faccessat2(int fd, const char *path, \ 713 int amode, int flags); } 714440 UNIMPL 715441 STD { int|linux_sys||epoll_pwait2(int epfd, \ 716 struct linux_epoll_event *events, int maxevents, \ 717 const struct linux_timespec *timeout, \ 718 const linux_sigset_t *sigmask); } 719