syscalls.master revision 1.80
11.80Schristos	$NetBSD: syscalls.master,v 1.80 2024/06/29 13:46:09 christos Exp $
21.1Sbjh21
31.1Sbjh21; Derived from sys/compat/linux/arch/*/syscalls.master
41.1Sbjh21; and from Linux 2.4.12 arch/arm/kernel/calls.S
51.1Sbjh21
61.1Sbjh21; NetBSD/arm COMPAT_LINUX system call name/number "master" file.
71.1Sbjh21; (See syscalls.conf to see what it is processed into.)
81.1Sbjh21;
91.1Sbjh21; Fields: number type [type-dependent ...]
101.1Sbjh21;	number	system call number, must be in order
111.1Sbjh21;	type	one of STD, OBSOL, UNIMPL, NODEF, NOARGS, or one of
121.1Sbjh21;		the compatibility options defined in syscalls.conf.
131.1Sbjh21;
141.1Sbjh21; types:
151.1Sbjh21;	STD	always included
161.1Sbjh21;	OBSOL	obsolete, not included in system
171.1Sbjh21;	UNIMPL	unimplemented, not included in system
181.1Sbjh21;	NODEF	included, but don't define the syscall number
191.1Sbjh21;	NOARGS	included, but don't define the syscall args structure
201.1Sbjh21;	INDIR	included, but don't define the syscall args structure
211.1Sbjh21;		and allow it to be "really" varargs.
221.1Sbjh21;
231.1Sbjh21; The compat options are defined in the syscalls.conf file, and the
241.1Sbjh21; compat option name is prefixed to the syscall name.  Other than
251.1Sbjh21; that, they're like NODEF (for 'compat' options), or STD (for
261.1Sbjh21; 'libcompat' options).
271.1Sbjh21;
281.1Sbjh21; The type-dependent arguments are as follows:
291.1Sbjh21; For STD, NODEF, NOARGS, and compat syscalls:
301.1Sbjh21;	{ pseudo-proto } [alias]
311.1Sbjh21; For other syscalls:
321.1Sbjh21;	[comment]
331.1Sbjh21;
341.1Sbjh21; #ifdef's, etc. may be included, and are copied to the output files.
351.1Sbjh21; #include's are copied to the syscall names and switch definition files only.
361.1Sbjh21
371.1Sbjh21#include <sys/param.h>
381.1Sbjh21#include <sys/poll.h>
391.1Sbjh21#include <sys/systm.h>
401.1Sbjh21#include <sys/signal.h>
411.1Sbjh21#include <sys/mount.h>
421.1Sbjh21#include <sys/syscallargs.h>
431.38Srtr#include <sys/time.h>
441.1Sbjh21
451.38Srtr#include <compat/sys/time.h>
461.1Sbjh21#include <compat/linux/common/linux_types.h>
471.14She#include <compat/linux/common/linux_mmap.h>
481.1Sbjh21#include <compat/linux/common/linux_signal.h>
491.1Sbjh21#include <compat/linux/common/linux_siginfo.h>
501.1Sbjh21#include <compat/linux/common/linux_machdep.h>
511.80Schristos#include <compat/linux/common/linux_sched.h>
521.80Schristos
531.1Sbjh21
541.1Sbjh21#include <compat/linux/linux_syscallargs.h>
551.1Sbjh21
561.1Sbjh21%%
571.5Sbjh21; XXX We have to explicitly declare linux_sys_nosys.
581.39Spooka0	NOARGS		{ int|linux_sys||nosys(void); }
591.44Schs1	STD		{ int|linux_sys||exit(int rval); }
601.39Spooka2	NOARGS		{ int|sys||fork(void); }
611.55Snjoly3	NOARGS		{ ssize_t|sys||read(int fd, void *buf, size_t nbyte); }
621.55Snjoly4	NOARGS		{ ssize_t|sys||write(int fd, const void *buf, \
631.55Snjoly			    size_t nbyte); }
641.39Spooka5	STD		{ int|linux_sys||open(const char *path, int flags, \
651.54Snjoly			    linux_umode_t mode); }
661.39Spooka6	NOARGS		{ int|sys||close(int fd); }
671.39Spooka7	STD		{ int|linux_sys||waitpid(int pid, int *status, \
681.1Sbjh21			    int options);}
691.54Snjoly8	STD		{ int|linux_sys||creat(const char *path, linux_umode_t mode); }
701.39Spooka9	NOARGS		{ int|sys||link(const char *path, const char *link); }
711.39Spooka10	STD		{ int|linux_sys||unlink(const char *path); }
721.39Spooka11	NOARGS		{ int|sys||execve(const char *path, char **argp, \
731.1Sbjh21			    char **envp); }
741.39Spooka12	NOARGS		{ int|sys||chdir(const char *path); }
751.39Spooka13	STD		{ int|linux_sys||time(linux_time_t *t); }
761.54Snjoly14	STD		{ int|linux_sys||mknod(const char *path, linux_umode_t mode, \
771.57Snjoly			    unsigned dev); }
781.39Spooka15	NOARGS		{ int|sys||chmod(const char *path, int mode); }
791.39Spooka16	STD		{ int|linux_sys||lchown16(const char *path, \
801.33Snjoly			    linux_uid16_t uid, linux_gid16_t gid); }
811.1Sbjh2117	OBSOL		break
821.1Sbjh2118	OBSOL		ostat
831.39Spooka19	NOARGS		{ long|compat_43_sys||lseek(int fd, long offset, \
841.1Sbjh21			    int whence); }
851.39Spooka20	NOARGS 		{ pid_t|sys||getpid(void); }
861.1Sbjh2121	UNIMPL		mount
871.1Sbjh2122	OBSOL		umount
881.39Spooka23	NOARGS		{ int|sys||setuid(uid_t uid); }
891.39Spooka24	NOARGS		{ uid_t|sys||getuid(void); }
901.39Spooka25	STD		{ int|linux_sys||stime(linux_time_t *t); }
911.39Spooka26	STD		{ int|linux_sys||ptrace(int request, int pid, \
921.1Sbjh21			    int addr, int data); }
931.39Spooka27	STD		{ int|linux_sys||alarm(unsigned int secs); }
941.1Sbjh2128	OBSOL		ofstat
951.39Spooka29	STD		{ int|linux_sys||pause(void); }
961.39Spooka30	STD		{ int|linux_sys||utime(const char *path, \
971.1Sbjh21			    struct linux_utimbuf *times); }
981.1Sbjh2131	OBSOL		stty
991.1Sbjh2132	OBSOL		gtty
1001.39Spooka33	NOARGS		{ int|sys||access(const char *path, int flags); }
1011.39Spooka34	STD		{ int|linux_sys||nice(int incr); }
1021.1Sbjh2135	OBSOL		ftime
1031.39Spooka36	NOARGS		{ int|sys||sync(void); }
1041.39Spooka37	STD		{ int|linux_sys||kill(int pid, int signum); }
1051.39Spooka38	NOARGS		{ int|sys||__posix_rename(const char *from, \
1061.1Sbjh21			    const char *to); }
1071.54Snjoly39	NOARGS		{ int|sys||mkdir(const char *path, linux_umode_t mode); }
1081.39Spooka40	NOARGS		{ int|sys||rmdir(const char *path); }
1091.52Snjoly41	NOARGS		{ int|sys||dup(int fd); }
1101.39Spooka42	STD		{ int|linux_sys||pipe(int *pfds); }
1111.39Spooka43	STD		{ int|linux_sys||times(struct times *tms); }
1121.1Sbjh2144	OBSOL		prof
1131.39Spooka45	STD		{ int|linux_sys||brk(char *nsize); }
1141.39Spooka46	NOARGS		{ int|sys||setgid(gid_t gid); }
1151.39Spooka47	NOARGS		{ gid_t|sys||getgid(void); }
1161.39Spooka48	STD		{ int|linux_sys||signal(int signum, \
1171.1Sbjh21			    linux_handler_t handler); }
1181.39Spooka49	NOARGS		{ uid_t|sys||geteuid(void); }
1191.39Spooka50	NOARGS		{ gid_t|sys||getegid(void); }
1201.39Spooka51	NOARGS		{ int|sys||acct(char *path); }
1211.1Sbjh2152	UNIMPL		umount
1221.1Sbjh2153	OBSOL		lock
1231.39Spooka54	STD		{ int|linux_sys||ioctl(int fd, u_long com, \
1241.28Schristos			    void *data); }
1251.39Spooka55	STD		{ int|linux_sys||fcntl(int fd, int cmd, void *arg); }
1261.1Sbjh2156	OBSOL		mpx
1271.39Spooka57	NOARGS		{ int|sys||setpgid(int pid, int pgid); }
1281.1Sbjh2158	OBSOL		ulimit
1291.79Schristos59	STD		{ int|linux_sys||oldolduname( \
1301.2Sbjh21			   struct linux_oldold_utsname *up); }
1311.39Spooka60	NOARGS		{ int|sys||umask(int newmask); }
1321.39Spooka61	NOARGS		{ int|sys||chroot(char *path); }
1331.1Sbjh2162	UNIMPL		ustat
1341.52Snjoly63	NOARGS		{ int|sys||dup2(int from, int to); }
1351.39Spooka64	NOARGS		{ pid_t|sys||getppid(void); }
1361.39Spooka65	NOARGS		{ int|sys||getpgrp(void); }
1371.39Spooka66	NOARGS		{ int|sys||setsid(void); }
1381.39Spooka67	STD		{ int|linux_sys||sigaction(int signum, \
1391.1Sbjh21			    const struct linux_old_sigaction *nsa, \
1401.1Sbjh21			    struct linux_old_sigaction *osa); }
1411.39Spooka68	STD		{ int|linux_sys||siggetmask(void); }
1421.39Spooka69	STD		{ int|linux_sys||sigsetmask(linux_old_sigset_t mask); }
1431.39Spooka70	STD		{ int|linux_sys||setreuid16(linux_uid16_t ruid, \
1441.33Snjoly			    linux_uid16_t euid); }
1451.39Spooka71	STD		{ int|linux_sys||setregid16(linux_gid16_t rgid, \
1461.33Snjoly			    linux_gid16_t egid); }
1471.39Spooka72	STD		{ int|linux_sys||sigsuspend(void *restart, \
1481.1Sbjh21			    int oldmask, int mask); }
1491.39Spooka73	STD		{ int|linux_sys||sigpending(linux_old_sigset_t *set); }
1501.39Spooka74	NOARGS		{ int|compat_43_sys||sethostname(char *hostname, \
1511.1Sbjh21			    u_int len);}
1521.39Spooka75	STD		{ int|linux_sys||setrlimit(u_int which, \
1531.1Sbjh21			    struct orlimit *rlp); }
1541.39Spooka76	STD		{ int|linux_sys||getrlimit(u_int which, \
1551.1Sbjh21			    struct orlimit *rlp); }
1561.39Spooka77	NOARGS		{ int|compat_50_sys||getrusage(int who, struct rusage50 *rusage); }
1571.40Snjoly78	STD		{ int|linux_sys||gettimeofday(struct timeval50 *tp, \
1581.1Sbjh21			    struct timezone *tzp); }
1591.40Snjoly79	STD		{ int|linux_sys||settimeofday(struct timeval50 *tp, \
1601.1Sbjh21			    struct timezone *tzp); }
1611.39Spooka80	STD		{ int|linux_sys||getgroups16(int gidsetsize, \
1621.33Snjoly			    linux_gid16_t *gidset); }
1631.39Spooka81	STD		{ int|linux_sys||setgroups16(int gidsetsize, \
1641.33Snjoly			    linux_gid16_t *gidset); }
1651.39Spooka82	STD		{ int|linux_sys||oldselect(struct linux_oldselect *lsp); }
1661.63Sozaki83	NOARGS		{ int|sys||symlink(const char *path, const char *link); }
1671.39Spooka84	NOARGS		{ int|compat_43_sys||lstat(const char *path, \
1681.63Sozaki			    struct stat43 *ub); } oolstat
1691.64Snjoly85	NOARGS		{ ssize_t|sys||readlink(const char *path, char *buf, \
1701.1Sbjh21			    int count); }
1711.1Sbjh21#ifdef EXEC_AOUT
1721.39Spooka86	STD		{ int|linux_sys||uselib(const char *path); }
1731.1Sbjh21#else
1741.1Sbjh2186	EXCL		uselib
1751.1Sbjh21#endif
1761.39Spooka87	STD		{ int|linux_sys||swapon(char *name); }
1771.39Spooka88	STD		{ int|linux_sys||reboot(int magic1, int magic2, \
1781.1Sbjh21			    int cmd, void *arg); }
1791.39Spooka89	STD		{ int|linux_sys||readdir(int fd, void *dent, \
1801.1Sbjh21			    unsigned int count); }
1811.39Spooka90	STD		{ int|linux_sys||old_mmap(struct linux_oldmmap *lmp); }
1821.61Snjoly91	NOARGS		{ int|sys||munmap(void *addr, size_t len); }
1831.39Spooka92	NOARGS		{ int|compat_43_sys||truncate(const char *path, \
1841.1Sbjh21			    long length); }
1851.39Spooka93	NOARGS		{ int|compat_43_sys||ftruncate(int fd, long length); }
1861.54Snjoly94	NOARGS		{ int|sys||fchmod(int fd, linux_umode_t mode); }
1871.39Spooka95	STD		{ int|linux_sys||fchown16(int fd, linux_uid16_t uid, \
1881.33Snjoly			    linux_gid16_t gid); }
1891.39Spooka96	STD		{ int|linux_sys||getpriority(int which, int who); }
1901.39Spooka97	NOARGS		{ int|sys||setpriority(int which, int who, int prio); }
1911.39Spooka98	NOARGS		{ int|sys||profil(void *samples, u_int size, \
1921.1Sbjh21			    u_int offset, u_int scale); }
1931.39Spooka99	STD		{ int|linux_sys||statfs(const char *path, \
1941.1Sbjh21			    struct linux_statfs *sp); }
1951.39Spooka100	STD		{ int|linux_sys||fstatfs(int fd, \
1961.1Sbjh21			    struct linux_statfs *sp); }
1971.1Sbjh21101	UNIMPL
1981.39Spooka102	STD		{ int|linux_sys||socketcall(int what, void *args); }
1991.1Sbjh21103	UNIMPL		syslog
2001.47Schristos104	NOARGS		{ int|compat_50_sys||setitimer(int which, \
2011.38Srtr			    struct itimerval50 *itv, \
2021.38Srtr			    struct itimerval50 *oitv); }
2031.47Schristos105	NOARGS		{ int|compat_50_sys||getitimer(int which, \
2041.38Srtr			    struct itimerval50 *itv); }
2051.39Spooka106	STD		{ int|linux_sys||stat(const char *path, \
2061.1Sbjh21			    struct linux_stat *sp); }
2071.39Spooka107	STD		{ int|linux_sys||lstat(const char *path, \
2081.1Sbjh21			    struct linux_stat *sp); }
2091.39Spooka108	STD		{ int|linux_sys||fstat(int fd, struct linux_stat *sp); }
2101.39Spooka109	STD		{ int|linux_sys||olduname(struct linux_oldutsname *up); }
2111.1Sbjh21110	UNIMPL
2121.1Sbjh21111	UNIMPL		vhangup
2131.1Sbjh21112	UNIMPL		idle
2141.1Sbjh21113	UNIMPL		syscall
2151.39Spooka114	STD		{ int|linux_sys||wait4(int pid, int *status, \
2161.41Snjoly			    int options, struct rusage50 *rusage); }
2171.39Spooka115	STD		{ int|linux_sys||swapoff(const char *path); }
2181.39Spooka116	STD		{ int|linux_sys||sysinfo(struct linux_sysinfo *arg); }
2191.39Spooka117	STD		{ int|linux_sys||ipc(int what, int a1, int a2, int a3, \
2201.28Schristos			    void *ptr); }
2211.39Spooka118	NOARGS		{ int|sys||fsync(int fd); }
2221.39Spooka119	STD		{ int|linux_sys||sigreturn(struct linux_sigcontext *scp); }
2231.44Schs120	STD		{ int|linux_sys||clone(int flags, void *stack, \
2241.44Schs			    void *parent_tidptr, void *tls, void *child_tidptr); }
2251.39Spooka121	STD		{ int|linux_sys||setdomainname(char *domainname, \
2261.1Sbjh21			    int len); }
2271.39Spooka122	STD		{ int|linux_sys||uname(struct linux_utsname *up); }
2281.20Sperry123	UNIMPL		modify_ldt
2291.1Sbjh21124	UNIMPL		adjtimex
2301.39Spooka125	STD		{ int|linux_sys||mprotect(const void *start, \
2311.9Schristos			    unsigned long len, int prot); }
2321.39Spooka126	STD		{ int|linux_sys||sigprocmask(int how, \
2331.1Sbjh21			    const linux_old_sigset_t *set, \
2341.1Sbjh21			    linux_old_sigset_t *oset); }
2351.1Sbjh21127	UNIMPL		create_module
2361.1Sbjh21128	UNIMPL		init_module
2371.1Sbjh21129	UNIMPL		delete_module
2381.1Sbjh21130	UNIMPL		get_kernel_syms
2391.1Sbjh21131	UNIMPL		quotactl
2401.39Spooka132	NOARGS		{ pid_t|sys||getpgid(pid_t pid); }
2411.39Spooka133	NOARGS		{ int|sys||fchdir(int fd); }
2421.1Sbjh21134	UNIMPL		bdflush
2431.1Sbjh21135	UNIMPL		sysfs
2441.43Snjoly136	STD		{ int|linux_sys||personality(unsigned long per); }
2451.1Sbjh21137	UNIMPL		afs_syscall
2461.39Spooka138	STD		{ int|linux_sys||setfsuid(uid_t uid); }
2471.39Spooka139	STD		{ int|linux_sys||setfsgid(gid_t gid); }
2481.39Spooka140	STD		{ int|linux_sys||llseek(int fd, u_int32_t ohigh, \
2491.28Schristos			    u_int32_t olow, void *res, int whence); }
2501.39Spooka141	STD		{ int|linux_sys||getdents(int fd, \
2511.1Sbjh21			    struct linux_dirent *dent, unsigned int count); }
2521.39Spooka142	STD		{ int|linux_sys||select(int nfds, fd_set *readfds, \
2531.1Sbjh21			    fd_set *writefds, fd_set *exceptfds, \
2541.40Snjoly			    struct timeval50 *timeout); }
2551.39Spooka143	NOARGS		{ int|sys||flock(int fd, int how); }
2561.39Spooka144	NOARGS		{ int|sys|13|msync(void *addr, size_t len, int flags); }
2571.55Snjoly145	NOARGS		{ ssize_t|sys||readv(int fd, \
2581.55Snjoly			    const struct iovec *iovp, int iovcnt); }
2591.55Snjoly146	NOARGS		{ ssize_t|sys||writev(int fd, \
2601.55Snjoly			    const struct iovec *iovp, int iovcnt); }
2611.39Spooka147	NOARGS		{ pid_t|sys||getsid(pid_t pid); }
2621.39Spooka148	STD		{ int|linux_sys||fdatasync(int fd); }
2631.39Spooka149	STD		{ int|linux_sys||__sysctl(struct linux___sysctl *lsp); }
2641.39Spooka150	NOARGS		{ int|sys||mlock(void *addr, size_t len); }
2651.39Spooka151	NOARGS		{ int|sys||munlock(void *addr, size_t len); }
2661.39Spooka152	NOARGS		{ int|sys||mlockall(int flags); }
2671.39Spooka153	NOARGS		{ int|sys||munlockall(void); }
2681.39Spooka154	STD		{ int|linux_sys||sched_setparam(pid_t pid, \
2691.1Sbjh21			    const struct linux_sched_param *sp); }
2701.39Spooka155	STD		{ int|linux_sys||sched_getparam(pid_t pid, \
2711.1Sbjh21			    struct linux_sched_param *sp); }
2721.39Spooka156	STD		{ int|linux_sys||sched_setscheduler(pid_t pid, \
2731.1Sbjh21			    int policy, const struct linux_sched_param *sp); }
2741.39Spooka157	STD		{ int|linux_sys||sched_getscheduler(pid_t pid); }
2751.39Spooka158	STD		{ int|linux_sys||sched_yield(void); }
2761.39Spooka159	STD		{ int|linux_sys||sched_get_priority_max(int policy); }
2771.39Spooka160	STD		{ int|linux_sys||sched_get_priority_min(int policy); }
2781.1Sbjh21161	UNIMPL		sched_rr_get_interval
2791.39Spooka162	STD		{ int|linux_sys||nanosleep( \
2801.36Snjoly			    const struct linux_timespec *rqtp, \
2811.36Snjoly			    struct linux_timespec *rmtp); }
2821.39Spooka163	STD		{ void *|linux_sys||mremap(void *old_address, \
2831.1Sbjh21			    size_t old_size, size_t new_size, u_long flags); }
2841.39Spooka164	STD		{ int|linux_sys||setresuid16(linux_uid16_t ruid, \
2851.33Snjoly			    linux_uid16_t euid, linux_uid16_t suid); }
2861.39Spooka165	STD		{ int|linux_sys||getresuid16(linux_uid16_t *ruid, \
2871.33Snjoly			    linux_uid16_t *euid, linux_uid16_t *suid); }
2881.1Sbjh21166	UNIMPL
2891.1Sbjh21167	UNIMPL		query_module
2901.39Spooka168	NOARGS		{ int|sys||poll(struct pollfd *fds, u_int nfds, \
2911.1Sbjh21			    int timeout); }
2921.1Sbjh21169	UNIMPL		nfsservctl
2931.39Spooka170	STD		{ int|linux_sys||setresgid16(linux_gid16_t rgid, \
2941.33Snjoly			    linux_gid16_t egid, linux_gid16_t sgid); }
2951.39Spooka171	STD		{ int|linux_sys||getresgid16(linux_gid16_t *rgid, \
2961.33Snjoly			    linux_gid16_t *egid, linux_gid16_t *sgid); }
2971.1Sbjh21172	UNIMPL		prctl
2981.1Sbjh21173	UNIMPL		rt_sigreturn
2991.39Spooka;173	STD		{ int|linux_sys||rt_sigreturn( \
3001.1Sbjh21;			    struct linux_rt_sigframe *sfp); }
3011.39Spooka174	STD		{ int|linux_sys||rt_sigaction(int signum, \
3021.1Sbjh21			    const struct linux_sigaction *nsa, \
3031.1Sbjh21			    struct linux_sigaction *osa, \
3041.1Sbjh21			    size_t sigsetsize); }
3051.39Spooka175	STD		{ int|linux_sys||rt_sigprocmask(int how, \
3061.1Sbjh21			    const linux_sigset_t *set, \
3071.1Sbjh21			    linux_sigset_t *oset, \
3081.1Sbjh21			    size_t sigsetsize); }
3091.39Spooka176	STD		{ int|linux_sys||rt_sigpending( \
3101.1Sbjh21			    linux_sigset_t *set, \
3111.1Sbjh21			    size_t sigsetsize); }
3121.48Schristos177	STD		{ int|linux_sys||rt_sigtimedwait( \
3131.48Schristos			    const linux_sigset_t *set, \
3141.48Schristos			    linux_siginfo_t *info, \
3151.48Schristos			    const struct linux_timespec *timeout); }
3161.39Spooka178	STD		{ int|linux_sys||rt_queueinfo(int pid, int signum, \
3171.42Snjoly			    linux_siginfo_t *uinfo); }
3181.39Spooka179	STD		{ int|linux_sys||rt_sigsuspend(linux_sigset_t *unewset, \
3191.1Sbjh21			    size_t sigsetsize); }
3201.39Spooka180	STD		{ int|linux_sys||pread(int fd, char *buf, \
3211.56Snjoly			    size_t nbyte, off_t offset); }
3221.39Spooka181	STD		{ int|linux_sys||pwrite(int fd, char *buf, \
3231.56Snjoly			    size_t nbyte, off_t offset); }
3241.39Spooka182	STD		{ int|linux_sys||chown16(const char *path, \
3251.33Snjoly			    linux_uid16_t uid, linux_gid16_t gid); }
3261.39Spooka183	NOARGS		{ int|sys||__getcwd(char *bufp, size_t length); }
3271.1Sbjh21184	UNIMPL		capget
3281.1Sbjh21185	UNIMPL		capset
3291.39Spooka186	STD		{ int|linux_sys||sigaltstack( \
3301.1Sbjh21			    const struct linux_sigaltstack *ss, \
3311.1Sbjh21			    struct linux_sigaltstack *oss); }
3321.1Sbjh21187	UNIMPL		sendfile
3331.1Sbjh21188	UNIMPL		getpmsg
3341.1Sbjh21189	UNIMPL		putpmsg
3351.39Spooka190	NOARGS		vfork { int|sys|14|vfork(void); }
3361.39Spooka191	STD		{ int|linux_sys||ugetrlimit(int which, \
3371.7Schristos			    struct rlimit *rlp); }
3381.30Sdsl#define linux_sys_mmap2_args linux_sys_mmap_args
3391.39Spooka192	NOARGS		{ linux_off_t|linux_sys||mmap2(unsigned long addr, \
3401.13Schristos			    size_t len, int prot, int flags, int fd, \
3411.13Schristos			    linux_off_t offset); }
3421.39Spooka193	STD		{ int|linux_sys||truncate64(const char *path, \
3431.1Sbjh21				off_t length); }
3441.39Spooka194	STD		{ int|linux_sys||ftruncate64(unsigned int fd, \
3451.1Sbjh21				off_t length); }
3461.39Spooka195	STD		{ int|linux_sys||stat64(const char *path, \
3471.1Sbjh21				struct linux_stat64 *sp); }
3481.39Spooka196	STD		{ int|linux_sys||lstat64(const char *path, \
3491.1Sbjh21				struct linux_stat64 *sp); }
3501.39Spooka197	STD		{ int|linux_sys||fstat64(int fd, \
3511.1Sbjh21				struct linux_stat64 *sp); }
3521.39Spooka198	NOARGS		{ int|sys||__posix_lchown(const char *path, uid_t uid, \
3531.1Sbjh21				gid_t gid); }
3541.39Spooka199	NOARGS		getuid32 { uid_t|sys||getuid(void); }
3551.39Spooka200	NOARGS		getgid32 { gid_t|sys||getgid(void); }
3561.39Spooka201	NOARGS		geteuid32 { uid_t|sys||geteuid(void); }
3571.39Spooka202	NOARGS		getegid32 { gid_t|sys||getegid(void); }
3581.39Spooka203	NOARGS		setreuid32 { int|sys||setreuid(uid_t ruid, \
3591.1Sbjh21				uid_t euid); }
3601.39Spooka204	NOARGS		setregid32 { int|sys||setregid(gid_t rgid, \
3611.1Sbjh21				gid_t egid); }
3621.59Snjoly205	NOARGS		getgroups32 { int|sys||getgroups(int gidsetsize, \
3631.1Sbjh21				gid_t *gidset); }
3641.59Snjoly206	NOARGS		setgroups32 { int|sys||setgroups(int gidsetsize, \
3651.1Sbjh21				gid_t *gidset); }
3661.39Spooka207	NOARGS		fchown32 { int|sys||__posix_fchown(int fd, uid_t uid, \
3671.1Sbjh21				gid_t gid); }
3681.39Spooka208	STD		setresuid32 { int|linux_sys||setresuid(uid_t ruid, \
3691.1Sbjh21				uid_t euid, uid_t suid); }
3701.39Spooka209	STD		getresuid32 { int|linux_sys||getresuid(uid_t *ruid, \
3711.1Sbjh21				uid_t *euid, uid_t *suid); }
3721.39Spooka210	STD		setresgid32 { int|linux_sys||setresgid(gid_t rgid, \
3731.1Sbjh21				gid_t egid, gid_t sgid); }
3741.39Spooka211	STD		getresgid32 { int|linux_sys||getresgid(gid_t *rgid, \
3751.1Sbjh21				gid_t *egid, gid_t *sgid); }
3761.39Spooka212	NOARGS		chown32 { int|sys||__posix_chown(const char *path, \
3771.1Sbjh21				uid_t uid, gid_t gid); }
3781.39Spooka213	NOARGS		setuid32 { int|sys||setuid(uid_t uid); }
3791.39Spooka214	NOARGS		setgid32 { int|sys||setgid(gid_t gid); }
3801.39Spooka215	NOARGS		setfsuid32 { int|linux_sys||setfsuid(uid_t uid); }
3811.39Spooka216	NOARGS		setfsgid32 { int|linux_sys||setfsgid(gid_t gid); }
3821.39Spooka217	STD		{ int|linux_sys||getdents64(int fd, \
3831.10Schristos			    struct linux_dirent64 *dent, unsigned int count); }
3841.1Sbjh21218	UNIMPL		pivot_root
3851.39Spooka219	NOARGS		{ int|sys||mincore(void *addr, size_t len, char *vec); }
3861.39Spooka220	NOARGS		{ int|sys||madvise(void *addr, size_t len, int behav); }
3871.39Spooka221	STD		{ int|linux_sys||fcntl64(int fd, int cmd, void *arg); }
3881.17Sjdolecek222	UNIMPL		/* for tux */
3891.17Sjdolecek223	UNIMPL		/* unused */
3901.44Schs224	NOARGS		{ pid_t|linux_sys||gettid(void); }
3911.77Schristos225	STD		{ ssize_t|linux_sys||readahead(int fd, off_t offset, \
3921.77Schristos			    size_t count); }
3931.39Spooka226	STD		{ int|linux_sys||setxattr(char *path, char *name, \
3941.21Sfvdl			    void *value, size_t size, int flags); }
3951.39Spooka227	STD		{ int|linux_sys||lsetxattr(char *path, char *name, \
3961.21Sfvdl			    void *value, size_t size, int flags); }
3971.39Spooka228	STD		{ int|linux_sys||fsetxattr(int fd, char *name, \
3981.21Sfvdl			    void *value, size_t size, int flags); }
3991.39Spooka229	STD		{ ssize_t|linux_sys||getxattr(char *path, char *name, \
4001.21Sfvdl			    void *value, size_t size); }
4011.39Spooka230	STD		{ ssize_t|linux_sys||lgetxattr(char *path, char *name, \
4021.21Sfvdl			    void *value, size_t size); }
4031.39Spooka231	STD		{ ssize_t|linux_sys||fgetxattr(int fd, char *name, \
4041.21Sfvdl			    void *value, size_t size); }
4051.39Spooka232	STD		{ ssize_t|linux_sys||listxattr(char *path, char *list, \
4061.21Sfvdl			    size_t size); }
4071.39Spooka233	STD		{ ssize_t|linux_sys||llistxattr(char *path, char *list, \
4081.21Sfvdl			    size_t size); }
4091.39Spooka234	STD		{ ssize_t|linux_sys||flistxattr(int fd, char *list, \
4101.21Sfvdl			    size_t size); }
4111.39Spooka235	STD		{ int|linux_sys||removexattr(char *path, char *name); }
4121.39Spooka236	STD		{ int|linux_sys||lremovexattr(char *path, char *name); }
4131.39Spooka237	STD		{ int|linux_sys||fremovexattr(int fd, char *name); }
4141.44Schs238	STD		{ int|linux_sys||tkill(int tid, int sig); }
4151.17Sjdolecek239	UNIMPL		sendfile64
4161.44Schs240	STD		{ int|linux_sys||futex(int *uaddr, int op, int val, \
4171.44Schs			    const struct linux_timespec *timeout, int *uaddr2, \
4181.44Schs			    int val3); }
4191.44Schs241	STD		{ int|linux_sys||sched_setaffinity(pid_t pid, \
4201.44Schs			    unsigned int len, unsigned long *mask); }
4211.44Schs242	STD		{ int|linux_sys||sched_getaffinity(pid_t pid, \
4221.44Schs			    unsigned int len, unsigned long *mask); }
4231.17Sjdolecek243	UNIMPL		io_setup
4241.17Sjdolecek244	UNIMPL		io_destroy
4251.17Sjdolecek245	UNIMPL		io_getevents
4261.17Sjdolecek246	UNIMPL		io_submit
4271.17Sjdolecek247	UNIMPL		io_cancel
4281.39Spooka248	STD		{ int|linux_sys||exit_group(int error_code); }
4291.17Sjdolecek249	UNIMPL		lookup_dcookie
4301.76Schristos250	STD		{ int|linux_sys||epoll_create(int size); }
4311.76Schristos251	STD		{ int|linux_sys||epoll_ctl(int epfd, int op, int fd, \
4321.76Schristos			    struct linux_epoll_event *event); }
4331.76Schristos252	STD		{ int|linux_sys||epoll_wait(int epfd, \
4341.76Schristos			    struct linux_epoll_event *events, int maxevents, \
4351.76Schristos			    int timeout); }
4361.17Sjdolecek253	UNIMPL		remap_file_pages
4371.44Schs254	UNIMPL		set_thread_area
4381.44Schs255	UNIMPL		get_thread_area
4391.44Schs256	STD		{ int|linux_sys||set_tid_address(int *tid); }
4401.70Sthorpej257	STD		{ int|linux_sys||timer_create(clockid_t clockid, \
4411.70Sthorpej			    struct linux_sigevent *evp, timer_t *timerid); }
4421.70Sthorpej258	STD		{ int|linux_sys||timer_settime(timer_t timerid, \
4431.70Sthorpej			    int flags, const struct linux_itimerspec *tim, \
4441.70Sthorpej			    struct linux_itimerspec *otim); }
4451.70Sthorpej259	STD		{ int|linux_sys||timer_gettime(timer_t timerid, \
4461.70Sthorpej			    struct linux_itimerspec *tim); }
4471.70Sthorpej260	NOARGS		{ int|sys||timer_getoverrun(timer_t timerid); }
4481.70Sthorpej261	NOARGS		{ int|sys||timer_delete(timer_t timerid); }
4491.39Spooka262	STD		{ int|linux_sys||clock_settime(clockid_t which, \
4501.22Sfvdl			    struct linux_timespec *tp); }
4511.39Spooka263	STD		{ int|linux_sys||clock_gettime(clockid_t which, \
4521.22Sfvdl			    struct linux_timespec *tp); }
4531.39Spooka264	STD		{ int|linux_sys||clock_getres(clockid_t which, \
4541.22Sfvdl			    struct linux_timespec *tp); }
4551.39Spooka265	STD		{ int|linux_sys||clock_nanosleep(clockid_t which, \
4561.22Sfvdl			    int flags, struct linux_timespec *rqtp, \
4571.22Sfvdl			    struct linux_timespec *rmtp); }
4581.39Spooka266	STD		{ int|linux_sys||statfs64(const char *path, \
4591.19Sjdolecek			    size_t sz, struct linux_statfs64 *sp); }
4601.39Spooka267	STD		{ int|linux_sys||fstatfs64(int fd, \
4611.19Sjdolecek			    size_t sz, struct linux_statfs64 *sp); }
4621.44Schs268	STD		{ int|linux_sys||tgkill(int tgid, int tid, int sig); }
4631.60Snjoly269	NOARGS		{ int|compat_50_sys||utimes(const char *path, \
4641.60Snjoly			    const struct timeval50 *tptr); }
4651.58Snjoly270	STD		{ int|linux_sys||fadvise64_64(int fd, off_t offset, \
4661.58Snjoly			    off_t len, int advice); }
4671.17Sjdolecek271	UNIMPL		pciconfig_iobase
4681.17Sjdolecek272	UNIMPL		pciconfig_read
4691.17Sjdolecek273	UNIMPL		pciconfig_write
4701.44Schs274	UNIMPL		mq_open
4711.44Schs275	UNIMPL		mq_unlink
4721.44Schs276	UNIMPL		mq_timedsend
4731.44Schs277	UNIMPL		mq_timedreceive
4741.44Schs278	UNIMPL		mq_notify
4751.44Schs279	UNIMPL		mq_getsetattr
4761.79Schristos280	STD		{ int|linux_sys||waitid(int idtype, id_t id, \
4771.78Schristos			    linux_siginfo_t *infop, int options, \
4781.78Schristos			    struct rusage50 *rusage); }
4791.44Schs281	UNIMPL		socket
4801.44Schs282	UNIMPL		bind
4811.44Schs283	UNIMPL		connect
4821.44Schs284	UNIMPL		listen
4831.44Schs285	UNIMPL		accept
4841.44Schs286	UNIMPL		getsockname
4851.44Schs287	UNIMPL		getpeername
4861.44Schs288	UNIMPL		socketpair
4871.44Schs289	UNIMPL		send
4881.44Schs290	UNIMPL		sendto
4891.44Schs291	UNIMPL		recv
4901.44Schs292	UNIMPL		recvfrom
4911.44Schs293	UNIMPL		shutdown
4921.44Schs294	UNIMPL		setsockopt
4931.44Schs295	UNIMPL		getsockopt
4941.44Schs296	UNIMPL		sendmsg
4951.44Schs297	UNIMPL		recvmsg
4961.44Schs298	UNIMPL		semop
4971.44Schs299	UNIMPL		semget
4981.44Schs300	UNIMPL		semctl
4991.44Schs301	UNIMPL		msgsnd
5001.44Schs302	UNIMPL		msgrcv
5011.44Schs303	UNIMPL		msgget
5021.44Schs304	UNIMPL		msgctl
5031.44Schs305	UNIMPL		shmat
5041.44Schs306	UNIMPL		shmdt
5051.44Schs307	UNIMPL		shmget
5061.44Schs308	UNIMPL		shmctl
5071.44Schs309	UNIMPL		add_key
5081.44Schs310	UNIMPL		request_key
5091.44Schs311	UNIMPL		keyctl
5101.44Schs312	UNIMPL		semtimedop
5111.44Schs313	UNIMPL		vserver
5121.44Schs314	UNIMPL		ioptio_set
5131.44Schs315	UNIMPL		ioptio_get
5141.79Schristos316	STD		{ int|linux_sys||inotify_init(void); }
5151.79Schristos317	STD		{ int|linux_sys||inotify_add_watch(int fd, \
5161.79Schristos			    const char *pathname, uint32_t mask); }
5171.79Schristos318	STD		{ int|linux_sys||inotify_rm_watch(int fd, int wd); }
5181.44Schs319	UNIMPL		mbind
5191.44Schs320	UNIMPL		get_mempolicy
5201.44Schs321	UNIMPL		set_mempolicy
5211.53Schs322	STD 		{ int|linux_sys||openat(int fd, const char *path, \
5221.53Schs			    int flags, ... linux_umode_t mode); }
5231.53Schs323	NOARGS		{ int|sys||mkdirat(int fd, const char *path, \
5241.53Schs			    linux_umode_t mode); }
5251.53Schs324	STD		{ int|linux_sys||mknodat(int fd, const char *path, \
5261.53Schs			    linux_umode_t mode, unsigned dev); }
5271.53Schs325	STD		{ int|linux_sys||fchownat(int fd, const char *path, \
5281.53Schs			    uid_t owner, gid_t group, int flag); }
5291.44Schs326	UNIMPL		futimesat
5301.53Schs327	STD		{ int|linux_sys||fstatat64(int fd, const char *path, \
5311.53Schs			    struct linux_stat64 *sp, int flag); }
5321.53Schs328	STD		{ int|linux_sys||unlinkat(int fd, const char *path, \
5331.53Schs			    int flag); }
5341.53Schs329	NOARGS		{ int|sys||renameat(int fromfd, const char *from, \
5351.53Schs			    int tofd, const char *to); }
5361.53Schs330	STD		{ int|linux_sys||linkat(int fd1, const char *name1, \
5371.53Schs			    int fd2, const char *name2, int flags); }
5381.53Schs331	NOARGS		{ int|sys||symlinkat(const char *path1, int fd, \
5391.53Schs			    const char *path2); }
5401.64Snjoly332	NOARGS		{ ssize_t|sys||readlinkat(int fd, const char *path, \
5411.53Schs			    char *buf, size_t bufsize); }
5421.53Schs333	STD		{ int|linux_sys||fchmodat(int fd, const char *path, \
5431.53Schs			    linux_umode_t mode); }
5441.53Schs334	STD		{ int|linux_sys||faccessat(int fd, const char *path, \
5451.53Schs			    int amode); }
5461.65Smanu335	STD		{ int|linux_sys||pselect6(int nfds, fd_set *readfds, \
5471.65Smanu			   fd_set *writefds, fd_set *exceptfds, \
5481.65Smanu			   struct linux_timespec *timeout, \
5491.65Smanu			   linux_sized_sigset_t *ss); }
5501.62Snjoly336	STD		{ int|linux_sys||ppoll(struct pollfd *fds, u_int nfds, \
5511.49Spooka			    struct linux_timespec *timeout, \
5521.49Spooka			    linux_sigset_t *sigset); }
5531.44Schs337	UNIMPL		unshare
5541.69Sthorpej			;
5551.69Sthorpej			; The NetBSD native robust list calls have different
5561.69Sthorpej			; argument names / types, but they are ABI-compatible
5571.69Sthorpej			; with Linux.
5581.69Sthorpej			;
5591.69Sthorpej338	NOARGS		{ int|sys||__futex_set_robust_list(void *head, \
5601.69Sthorpej			    size_t len); }
5611.69Sthorpej339	NOARGS		{ int|sys||__futex_get_robust_list(lwpid_t lwpid, \
5621.69Sthorpej			    void **headp, size_t *lenp); }
5631.44Schs340	UNIMPL		splice
5641.44Schs341	UNIMPL		sync_file_range2
5651.44Schs342	UNIMPL		tee
5661.44Schs343	UNIMPL		vmsplice
5671.44Schs344	UNIMPL		move_pages
5681.80Schristos345	STD		{ int|linux_sys||getcpu(unsigned int *cpu, \
5691.80Schristos			    unsigned int *node, \
5701.80Schristos			    struct linux_getcpu_cache *tcache); }
5711.76Schristos346	STD		{ int|linux_sys||epoll_pwait(int epfd, \
5721.76Schristos			    struct linux_epoll_event *events, int maxevents, \
5731.76Schristos			    int timeout, const linux_sigset_t *sigmask); }
5741.44Schs347	UNIMPL		kexec_load
5751.51Snjoly348	STD		{ int|linux_sys||utimensat(int fd, const char *path, \
5761.51Snjoly			    struct linux_timespec *times, int flag); }
5771.44Schs349	UNIMPL		signalfd
5781.71Sthorpej350	STD		{ int|linux_sys||timerfd_create(clockid_t clock_id, \
5791.71Sthorpej			    int flags); }
5801.72Sthorpej351	STD		{ int|linux_sys||eventfd(unsigned int initval); }
5811.68Sjdolecek352	STD		{ int|linux_sys||fallocate(int fd, int mode, \
5821.68Sjdolecek			    off_t offset, off_t len); }
5831.71Sthorpej353	STD		{ int|linux_sys||timerfd_settime(int fd, int flags, \
5841.71Sthorpej			    const struct linux_itimerspec *tim, \
5851.71Sthorpej			    struct linux_itimerspec *otim); }
5861.71Sthorpej354	STD		{ int|linux_sys||timerfd_gettime(int fd, \
5871.71Sthorpej			    struct linux_itimerspec *tim); }
5881.44Schs355	UNIMPL		signalfd4
5891.72Sthorpej356	STD		{ int|linux_sys||eventfd2(unsigned int initval, \
5901.72Sthorpej			    int flags); }
5911.76Schristos357	STD		{ int|linux_sys||epoll_create1(int flags); }
5921.45She358	STD		{ int|linux_sys||dup3(int from, int to, int flags); }
5931.45She359	STD		{ int|linux_sys||pipe2(int *pfds, int flags); }
5941.79Schristos360	STD		{ int|linux_sys||inotify_init1(int flags); }
5951.73Sthorpej361	STD		{ int|linux_sys||preadv(int fd, \
5961.73Sthorpej			    const struct iovec *iovp, int iovcnt, \
5971.73Sthorpej			    unsigned long off_lo, unsigned long off_hi); }
5981.73Sthorpej362	STD		{ int|linux_sys||pwritev(int fd, \
5991.73Sthorpej			    const struct iovcnt *iovp, int iovcnt, \
6001.73Sthorpej			    unsigned long off_lo, unsigned long off_hi); }
6011.44Schs363	UNIMPL		rt_tgsigqueueinfo
6021.44Schs364	UNIMPL		perf_counter_open
6031.67Schristos365	STD		{ int|linux_sys||recvmmsg(int s, \
6041.67Schristos			    struct linux_mmsghdr *msgvec, unsigned int vlen, \
6051.67Schristos			    unsigned int flags, struct timespec *timeout); }
6061.66Smartin366	STD		{ int|linux_sys||accept4(int s, \
6071.66Smartin			    struct osockaddr *name, \
6081.66Smartin			    int *anamelen, int flags); }
6091.67Schristos367	UNIMPL		fanotify_init
6101.67Schristos368	UNIMPL		fanotify_mark
6111.75Sryo369	STD		{ int|linux_sys||prlimit64(pid_t pid, int which, \
6121.75Sryo			    struct rlimit *new_rlp, struct rlimit *old_rlp); }
6131.67Schristos370	UNIMPL		name_to_handle_at
6141.67Schristos371	UNIMPL		open_by_handle_at
6151.67Schristos372	UNIMPL		clock_adjtime
6161.67Schristos373	UNIMPL		syncfs
6171.67Schristos374	STD		{ int|linux_sys||sendmmsg(int s, \
6181.67Schristos			    struct linux_mmsghdr *msgvec, unsigned int vlen, \
6191.67Schristos			    unsigned int flags); }
6201.67Schristos375	UNIMPL		setns
6211.67Schristos376	UNIMPL		process_vm_readv
6221.67Schristos377	UNIMPL		process_vm_writev
6231.67Schristos378	UNIMPL		kcmp
6241.67Schristos379	UNIMPL		finit_module
6251.67Schristos380	UNIMPL		sched_setattr
6261.67Schristos381	UNIMPL		sched_getattr
6271.67Schristos382	UNIMPL		renameat2
6281.67Schristos383	UNIMPL		seccomp
6291.67Schristos; XXX FIX-me?
6301.74Sryo; 384	NOARGS		{ ssize_t|sys||getrandom(void *buf, size_t buflen, \
6311.74Sryo			    unsigned int flags); }
6321.67Schristos; 385	UNIMPL		memfd_create
6331.3Sbjh21
6341.3Sbjh21; ARMLinux actually has two ranges of syscalls.  Normal syscalls use
6351.3Sbjh21; SWI numbers starting at 0x900000 (__NR_SYSCALL_BASE).  Special
6361.17Sjdolecek; ARM-specific syscalls use SWI numbers starting at 0x9f0000
6371.3Sbjh21; (__ARM_NR_BASE).  linux_syscall() (in arch/arm/arm/linux_syscall.c)
6381.17Sjdolecek; remaps these down to 0x900180 so that we can use one linux_sysent
6391.3Sbjh21; array for the whole lot.
6401.3Sbjh21
6411.17Sjdolecek384	UNIMPL		/* base */
6421.39Spooka385	STD		{ int|linux_sys||breakpoint(void); }
6431.39Spooka386	STD		{ int|linux_sys||cacheflush(uintptr_t from, \
6441.44Schs				intptr_t to, int flags); }
6451.17Sjdolecek387	UNIMPL		usr26
6461.17Sjdolecek388	UNIMPL		usr32
6471.44Schs389	STD		{ int|linux_sys||set_tls(void *tls); }
6481.76Schristos390	UNIMPL
6491.76Schristos391	UNIMPL
6501.76Schristos392	UNIMPL
6511.76Schristos393	UNIMPL
6521.76Schristos394	UNIMPL
6531.76Schristos395	UNIMPL
6541.76Schristos396	UNIMPL
6551.79Schristos397	STD		{ int|linux_sys||statx(int fd, const char *path, \
6561.77Schristos			    int flag, unsigned int mask, \
6571.77Schristos			    struct linux_statx *sp); }
6581.76Schristos398	UNIMPL
6591.76Schristos399	UNIMPL
6601.76Schristos400	UNIMPL
6611.76Schristos401	UNIMPL
6621.76Schristos402	UNIMPL
6631.76Schristos403	UNIMPL
6641.76Schristos404	UNIMPL
6651.76Schristos405	UNIMPL
6661.76Schristos406	UNIMPL
6671.76Schristos407	UNIMPL
6681.76Schristos408	UNIMPL
6691.76Schristos409	UNIMPL
6701.76Schristos410	UNIMPL
6711.76Schristos411	UNIMPL
6721.76Schristos412	UNIMPL
6731.76Schristos413	UNIMPL
6741.76Schristos414	UNIMPL
6751.76Schristos415	UNIMPL
6761.76Schristos416	UNIMPL
6771.76Schristos417	UNIMPL
6781.76Schristos418	UNIMPL
6791.76Schristos419	UNIMPL
6801.76Schristos420	UNIMPL
6811.76Schristos421	UNIMPL
6821.76Schristos422	UNIMPL
6831.76Schristos423	UNIMPL
6841.76Schristos424	UNIMPL
6851.76Schristos425	UNIMPL
6861.76Schristos426	UNIMPL
6871.76Schristos427	UNIMPL
6881.76Schristos428	UNIMPL
6891.76Schristos429	UNIMPL
6901.76Schristos430	UNIMPL
6911.76Schristos431	UNIMPL
6921.76Schristos432	UNIMPL
6931.76Schristos433	UNIMPL
6941.76Schristos434	UNIMPL
6951.76Schristos435	UNIMPL
6961.77Schristos436	STD		{ int|linux_sys||close_range(unsigned int first, \
6971.77Schristos			    unsigned int last, unsigned int flags); }
6981.76Schristos437	UNIMPL
6991.76Schristos438	UNIMPL
7001.80Schristos439	STD		{ int|linux_sys||faccessat2(int fd, const char *path, \
7011.80Schristos			    int amode, int flags); }
7021.76Schristos440	UNIMPL
7031.76Schristos441	STD		{ int|linux_sys||epoll_pwait2(int epfd, \
7041.76Schristos			    struct linux_epoll_event *events, int maxevents, \
7051.76Schristos			    const struct linux_timespec *timeout, \
7061.76Schristos			    const linux_sigset_t *sigmask); }
707