1*8f021900Sryo $NetBSD: syscalls.master,v 1.77 2021/12/02 04:29:48 ryo Exp $ 2ee0c5b44Smanu 3ee0c5b44Smanu; NetBSD i386 COMPAT_LINUX32 system call name/number "master" file. 4ee0c5b44Smanu; (See syscalls.conf to see what it is processed into.) 5ee0c5b44Smanu; 6ee0c5b44Smanu; Fields: number type [type-dependent ...] 7ee0c5b44Smanu; number system call number, must be in order 8ee0c5b44Smanu; type one of STD, OBSOL, UNIMPL, NODEF, NOARGS, or one of 9ee0c5b44Smanu; the compatibility options defined in syscalls.conf. 10ee0c5b44Smanu; 11ee0c5b44Smanu; types: 12ee0c5b44Smanu; STD always included 13ee0c5b44Smanu; OBSOL obsolete, not included in system 14ee0c5b44Smanu; UNIMPL unimplemented, not included in system 15ee0c5b44Smanu; NODEF included, but don't define the syscall number 16ee0c5b44Smanu; 17ee0c5b44Smanu; INDIR included, but don't define the syscall args structure 18ee0c5b44Smanu; and allow it to be "really" varargs. 19ee0c5b44Smanu; 20ee0c5b44Smanu; The compat options are defined in the syscalls.conf file, and the 21ee0c5b44Smanu; compat option name is prefixed to the syscall name. Other than 22ee0c5b44Smanu; that, they're like NODEF (for 'compat' options), or STD (for 23ee0c5b44Smanu; 'libcompat' options). 24ee0c5b44Smanu; 25ee0c5b44Smanu; The type-dependent arguments are as follows: 26ee0c5b44Smanu; For STD, NODEF, NOARGS, and compat syscalls: 27ee0c5b44Smanu; { pseudo-proto } [alias] 28ee0c5b44Smanu; For other syscalls: 29ee0c5b44Smanu; [comment] 30ee0c5b44Smanu; 31ee0c5b44Smanu; #ifdef's, etc. may be included, and are copied to the output files. 32ee0c5b44Smanu; #include's are copied to the syscall names and switch definition files only. 33ee0c5b44Smanu 34ee0c5b44Smanu#include <sys/param.h> 35ee0c5b44Smanu#include <sys/poll.h> 36ee0c5b44Smanu#include <sys/systm.h> 37ee0c5b44Smanu#include <sys/signal.h> 38ee0c5b44Smanu#include <sys/mount.h> 39ee0c5b44Smanu#include <sys/syscallargs.h> 40ee0c5b44Smanu 41ee0c5b44Smanu#include <machine/netbsd32_machdep.h> 42ee0c5b44Smanu 43ee0c5b44Smanu#include <compat/netbsd32/netbsd32.h> 44ee0c5b44Smanu#include <compat/netbsd32/netbsd32_syscallargs.h> 45ee0c5b44Smanu 4629a841b3Schs#include <compat/linux/common/linux_types.h> 4729a841b3Schs 48ee0c5b44Smanu#include <compat/linux32/common/linux32_types.h> 49ee0c5b44Smanu#include <compat/linux32/common/linux32_signal.h> 50ee0c5b44Smanu#include <compat/linux32/arch/amd64/linux32_missing.h> 51ee0c5b44Smanu#include <compat/linux32/linux32_syscallargs.h> 52ee0c5b44Smanu 53ee0c5b44Smanu#include <compat/linux/common/linux_mmap.h> 54ee0c5b44Smanu#include <compat/linux/common/linux_signal.h> 55ee0c5b44Smanu#include <compat/linux/common/linux_siginfo.h> 56ee0c5b44Smanu#include <compat/linux/common/linux_machdep.h> 5792ce8c6aSad#include <compat/linux/common/linux_ipc.h> 5892ce8c6aSad#include <compat/linux/common/linux_sem.h> 59ee0c5b44Smanu#include <compat/linux/linux_syscallargs.h> 60ee0c5b44Smanu 61ee0c5b44Smanu%% 62ee0c5b44Smanu 63a9a2ce83Spooka0 NOARGS { int|linux_sys||nosys(void); } syscall 6433fa5ccbSchs1 STD { int|linux32_sys||exit(int rval); } 65a9a2ce83Spooka2 NOARGS { int|sys||fork(void); } 66a9a2ce83Spooka3 NOARGS { netbsd32_ssize_t|netbsd32||read(int fd, \ 67ee0c5b44Smanu netbsd32_voidp buf, netbsd32_size_t nbyte); } 68a9a2ce83Spooka4 NOARGS { netbsd32_ssize_t|netbsd32||write(int fd, \ 6933b4e768Snjoly netbsd32_voidp buf, netbsd32_size_t nbyte); } 70a9a2ce83Spooka5 STD { int|linux32_sys||open(netbsd32_charp path, int flags, \ 7129a841b3Schs linux_umode_t mode); } 72a9a2ce83Spooka6 NOARGS { int|netbsd32||close(int fd); } 73a9a2ce83Spooka7 STD { int|linux32_sys||waitpid(int pid, netbsd32_intp status, \ 74ee0c5b44Smanu int options);} 7529a841b3Schs8 STD { int|linux32_sys||creat(netbsd32_charp path, linux_umode_t mode); } 76a9a2ce83Spooka9 NOARGS { int|netbsd32||link(netbsd32_charp path, \ 7733b4e768Snjoly netbsd32_charp link); } 78a9a2ce83Spooka10 STD { int|linux32_sys||unlink(netbsd32_charp path); } 79a9a2ce83Spooka11 NOARGS { int|netbsd32||execve(netbsd32_charp path, \ 80ee0c5b44Smanu netbsd32_charpp argp, netbsd32_charpp envp); } 81a9a2ce83Spooka12 NOARGS { int|netbsd32||chdir(netbsd32_charp path); } 82a9a2ce83Spooka13 STD { int|linux32_sys||time(linux32_timep_t t); } 83a9a2ce83Spooka14 STD { int|linux32_sys||mknod(netbsd32_charp path, \ 8429a841b3Schs linux_umode_t mode, unsigned dev); } 8529a841b3Schs15 NOARGS { int|netbsd32||chmod(netbsd32_charp path, linux_umode_t mode); } 86a9a2ce83Spooka16 STD { int|linux32_sys||lchown16(netbsd32_charp path, \ 875cec0f49Snjoly linux32_uid16_t uid, linux32_gid16_t gid); } 88a9a2ce83Spooka17 STD { int|linux32_sys||break(netbsd32_charp nsize); } 89ee0c5b44Smanu18 OBSOL ostat 90a9a2ce83Spooka19 NOARGS { netbsd32_long|compat_43_netbsd32||olseek(int fd, \ 9165af340dSchristos netbsd32_long offset, int whence); } 9233fa5ccbSchs20 NOARGS { pid_t|sys||getpid(void); } 93ee0c5b44Smanu21 UNIMPL mount 94ee0c5b44Smanu22 UNIMPL umount 95a9a2ce83Spooka23 NOARGS linux_setuid16 { int|netbsd32||setuid(uid_t uid); } 96a9a2ce83Spooka24 NOARGS linux_getuid16 { uid_t|sys||getuid(void); } 97a9a2ce83Spooka25 STD { int|linux32_sys||stime(linux32_timep_t t); } 98a9a2ce83Spooka26 STD { int|linux32_sys||ptrace(int request, int pid, \ 995f09cf30Schristos int addr, int data); } 100a9a2ce83Spooka27 STD { int|linux32_sys||alarm(unsigned int secs); } 101ee0c5b44Smanu28 OBSOL ofstat 102a9a2ce83Spooka29 NOARGS { int|linux_sys||pause(void); } 103a9a2ce83Spooka30 STD { int|linux32_sys||utime(netbsd32_charp path, \ 104ee0c5b44Smanu linux32_utimbufp_t times); } 105ee0c5b44Smanu31 OBSOL stty 106ee0c5b44Smanu32 OBSOL gtty 107a9a2ce83Spooka33 NOARGS { int|netbsd32||access(netbsd32_charp path, \ 108ee0c5b44Smanu int flags); } 109a9a2ce83Spooka34 STD { int|linux32_sys||nice(int incr); } 110ee0c5b44Smanu35 OBSOL ftime 111a9a2ce83Spooka36 NOARGS { int|sys||sync(void); } 112a9a2ce83Spooka37 STD { int|linux32_sys||kill(int pid, int signum); } 113a9a2ce83Spooka38 NOARGS { int|netbsd32||__posix_rename(netbsd32_charp from, \ 11433b4e768Snjoly netbsd32_charp to); } 11529a841b3Schs39 NOARGS { int|netbsd32||mkdir(netbsd32_charp path, linux_umode_t mode); } 116a9a2ce83Spooka40 NOARGS { int|netbsd32||rmdir(netbsd32_charp path); } 117dffea6adSnjoly41 NOARGS { int|netbsd32||dup(int fd); } 118a9a2ce83Spooka42 STD { int|linux32_sys||pipe(netbsd32_intp fd); } 119a9a2ce83Spooka43 STD { int|linux32_sys||times(linux32_tmsp_t tms); } 120ee0c5b44Smanu44 OBSOL prof 121a9a2ce83Spooka45 STD { int|linux32_sys||brk(netbsd32_charp nsize); } 122a9a2ce83Spooka46 NOARGS linux_setgid16 { int|netbsd32||setgid(gid_t gid); } 123a9a2ce83Spooka47 NOARGS linux_getgid16 { gid_t|sys||getgid(void); } 124a9a2ce83Spooka48 STD { int|linux32_sys||signal(int signum, \ 12565af340dSchristos linux32_handlerp_t handler); } 126a9a2ce83Spooka49 NOARGS linux_geteuid16 { uid_t|sys||geteuid(void); } 127a9a2ce83Spooka50 NOARGS linux_getegid16 { gid_t|sys||getegid(void); } 128a9a2ce83Spooka51 NOARGS { int|netbsd32||acct(netbsd32_charp path); } 129ee0c5b44Smanu52 OBSOL phys 130ee0c5b44Smanu53 OBSOL lock 131a9a2ce83Spooka54 STD { int|linux32_sys||ioctl(int fd, netbsd32_u_long com, \ 132ee0c5b44Smanu netbsd32_charp data); } 133a9a2ce83Spooka55 STD { int|linux32_sys||fcntl(int fd, \ 134ee0c5b44Smanu int cmd, netbsd32_voidp arg); } 135ee0c5b44Smanu56 OBSOL mpx 136a9a2ce83Spooka57 NOARGS { int|netbsd32||setpgid(int pid, int pgid); } 137ee0c5b44Smanu58 OBSOL ulimit 138a9a2ce83Spooka59 STD { int|linux32_sys||oldolduname( \ 139ee0c5b44Smanu linux32_oldold_utsnamep_t up); } 140a9a2ce83Spooka60 NOARGS { int|netbsd32||umask(int newmask); } 141a9a2ce83Spooka61 NOARGS { int|netbsd32||chroot(netbsd32_charp path); } 142ee0c5b44Smanu62 UNIMPL ustat 143a9a2ce83Spooka63 NOARGS { int|netbsd32||dup2(int from, int to); } 14433fa5ccbSchs64 NOARGS { pid_t|sys||getppid(void); } 145a9a2ce83Spooka65 NOARGS { int|sys||getpgrp(void); } 146a9a2ce83Spooka66 NOARGS { int|sys||setsid(void); } 147ee0c5b44Smanu67 UNIMPL sigaction 1489a0f18ccSnjoly68 STD { int|linux32_sys||siggetmask(void); } 1499a0f18ccSnjoly69 STD { int|linux32_sys||sigsetmask(linux32_old_sigset_t mask); } 150a9a2ce83Spooka70 STD { int|linux32_sys||setreuid16(linux32_uid16_t ruid, \ 1515cec0f49Snjoly linux32_uid16_t euid); } 152a9a2ce83Spooka71 STD { int|linux32_sys||setregid16(linux32_gid16_t rgid, \ 1535cec0f49Snjoly linux32_gid16_t egid); } 154ee0c5b44Smanu72 UNIMPL sigsuspend 155ee0c5b44Smanu73 UNIMPL sigpending 156a9a2ce83Spooka74 NOARGS { int|compat_43_netbsd32||osethostname(netbsd32_charp hostname, \ 157ee0c5b44Smanu u_int len); } 158a9a2ce83Spooka75 STD { int|linux32_sys||setrlimit(u_int which, \ 159ee0c5b44Smanu netbsd32_orlimitp_t rlp); } 160a9a2ce83Spooka76 STD { int|linux32_sys||getrlimit(u_int which, \ 161ee0c5b44Smanu netbsd32_orlimitp_t rlp); } 162a9a2ce83Spooka77 NOARGS { int|compat_50_netbsd32||getrusage(int who, \ 163461a86f9Schristos netbsd32_rusage50p_t rusage); } 1649554a293Snjoly78 STD { int|linux32_sys||gettimeofday(netbsd32_timeval50p_t tp, \ 165ee0c5b44Smanu netbsd32_timezonep_t tzp); } 1669554a293Snjoly79 STD { int|linux32_sys||settimeofday(netbsd32_timeval50p_t tp, \ 167ee0c5b44Smanu netbsd32_timezonep_t tzp); } 168a9a2ce83Spooka80 STD { int|linux32_sys||getgroups16(int gidsetsize, \ 1695cec0f49Snjoly linux32_gid16p_t gidset); } 170a9a2ce83Spooka81 STD { int|linux32_sys||setgroups16(int gidsetsize, \ 1715cec0f49Snjoly linux32_gid16p_t gidset); } 172a9a2ce83Spooka82 STD { int|linux32_sys||oldselect(linux32_oldselectp_t lsp); } 173a9a2ce83Spooka83 NOARGS { int|netbsd32||symlink(netbsd32_charp path, \ 17433b4e768Snjoly netbsd32_charp link); } 175a9a2ce83Spooka84 NOARGS { int|compat_43_netbsd32||lstat43(netbsd32_charp \ 176ee0c5b44Smanu path, netbsd32_stat43p_t ub); } 17765af340dSchristos85 NOARGS { int|netbsd32||readlink(netbsd32_charp path, \ 17833b4e768Snjoly netbsd32_charp buf, netbsd32_size_t count); } 179ee0c5b44Smanu86 UNIMPL uselib 180a9a2ce83Spooka87 STD { int|linux32_sys||swapon(netbsd32_charp name); } 181a9a2ce83Spooka88 STD { int|linux32_sys||reboot(int magic1, int magic2, int cmd, \ 182ee0c5b44Smanu netbsd32_voidp arg); } 183a9a2ce83Spooka89 STD { int|linux32_sys||readdir(int fd, netbsd32_voidp dent, \ 1843a6c84afSnjoly unsigned int count); } 185a9a2ce83Spooka90 STD { int|linux32_sys||old_mmap(linux32_oldmmapp lmp); } 186a9a2ce83Spooka91 NOARGS { int|netbsd32||munmap(netbsd32_voidp addr, \ 18733b4e768Snjoly netbsd32_size_t len); } 188a9a2ce83Spooka92 NOARGS { int|compat_43_netbsd32||otruncate(netbsd32_charp path, \ 189ee0c5b44Smanu netbsd32_long length); } 190a9a2ce83Spooka93 NOARGS { int|compat_43_netbsd32||oftruncate(int fd, \ 19112a8f947Snjoly netbsd32_long length); } 19229a841b3Schs94 NOARGS { int|netbsd32||fchmod(int fd, linux_umode_t mode); } 193a9a2ce83Spooka95 STD { int|linux32_sys||fchown16(int fd, linux32_uid16_t uid, \ 1945cec0f49Snjoly linux32_gid16_t gid); } 195a9a2ce83Spooka96 STD { int|linux32_sys||getpriority(int which, int who); } 196a9a2ce83Spooka97 NOARGS { int|netbsd32||setpriority(int which, int who, int prio); } 197fc7a1961Schs98 NOARGS { int|netbsd32||profil(netbsd32_voidp samples, \ 198fc7a1961Schs netbsd32_size_t size, netbsd32_u_long offset, \ 199fc7a1961Schs u_int scale); } 200a9a2ce83Spooka99 STD { int|linux32_sys||statfs(netbsd32_charp path, \ 201f771d34aSnjoly linux32_statfsp sp); } 202ca080002Snjoly100 STD { int|linux32_sys||fstatfs(int fd, linux32_statfsp sp); } 203fc7a1961Schs101 NOARGS { int|linux_sys||ioperm(unsigned int lo, \ 204fc7a1961Schs unsigned int hi, int val); } 205a9a2ce83Spooka102 STD { int|linux32_sys||socketcall(int what, netbsd32_voidp args); } 206ee0c5b44Smanu103 UNIMPL syslog 207a9a2ce83Spooka104 NOARGS { int|compat_50_netbsd32||setitimer(int which, \ 208461a86f9Schristos netbsd32_itimerval50p_t itv, netbsd32_itimerval50p_t oitv); } 209a9a2ce83Spooka105 NOARGS { int|compat_50_netbsd32||getitimer(int which, \ 210461a86f9Schristos netbsd32_itimerval50p_t itv); } 21133fdfb68Snjoly106 STD { int|linux32_sys||stat(netbsd32_charp path, \ 21233fdfb68Snjoly linux32_statp sp); } 21333fdfb68Snjoly107 STD { int|linux32_sys||lstat(netbsd32_charp path, \ 21433fdfb68Snjoly linux32_statp sp); } 21533fdfb68Snjoly108 STD { int|linux32_sys||fstat(int fd, \ 21633fdfb68Snjoly linux32_statp sp); } 217a9a2ce83Spooka109 STD { int|linux32_sys||olduname(linux32_oldutsnamep_t up); } 218fc7a1961Schs110 NOARGS { int|linux_sys||iopl(int level); } 219ee0c5b44Smanu111 UNIMPL vhangup 220ee0c5b44Smanu112 UNIMPL idle 221ee0c5b44Smanu113 UNIMPL vm86old 222a9a2ce83Spooka114 STD { int|linux32_sys||wait4(int pid, netbsd32_intp status, \ 22325a76c08Snjoly int options, netbsd32_rusage50p_t rusage); } 224a9a2ce83Spooka115 STD { int|linux32_sys||swapoff(netbsd32_charp path); } 225a9a2ce83Spooka116 STD { int|linux32_sys||sysinfo(linux32_sysinfop_t arg); } 226a9a2ce83Spooka117 STD { int|linux32_sys||ipc(int what, int a1, int a2, int a3, \ 22784db6228Snjoly netbsd32_voidp ptr); } 228a9a2ce83Spooka118 NOARGS { int|netbsd32||fsync(int fd); } 229a9a2ce83Spooka119 STD { int|linux32_sys||sigreturn(linux32_sigcontextp_t scp); } 23033fa5ccbSchs120 STD { int|linux32_sys||clone(int flags, netbsd32_voidp stack, \ 23133fa5ccbSchs netbsd32_voidp parent_tidptr, netbsd32_voidp tls, \ 23233fa5ccbSchs netbsd32_voidp child_tidptr); } 233fc7a1961Schs121 STD { int|linux32_sys||setdomainname(netbsd32_charp domainname, \ 234fc7a1961Schs int len); } 235a9a2ce83Spooka122 STD { int|linux32_sys||uname(linux32_utsnamep up); } 236fc7a1961Schs123 STD { int|linux32_sys||modify_ldt(int func, netbsd32_charp ptr, \ 237fc7a1961Schs netbsd32_size_t bytecount); } 238ee0c5b44Smanu124 UNIMPL adjtimex 239a9a2ce83Spooka125 STD { int|linux32_sys||mprotect(netbsd32_voidp start, \ 240ee0c5b44Smanu netbsd32_size_t len, int prot); } 241ee0c5b44Smanu126 UNIMPL sigprocmask 242ee0c5b44Smanu127 UNIMPL create_module 243ee0c5b44Smanu128 UNIMPL init_module 244ee0c5b44Smanu129 UNIMPL delete_module 245ee0c5b44Smanu130 UNIMPL get_kernel_syms 246ee0c5b44Smanu131 UNIMPL quotactl 247a9a2ce83Spooka132 NOARGS { int|netbsd32||getpgid(pid_t pid); } 248a9a2ce83Spooka133 NOARGS { int|netbsd32||fchdir(int fd); } 249ee0c5b44Smanu134 UNIMPL bdflush 250ee0c5b44Smanu135 UNIMPL sysfs 251675b20daSnjoly136 STD { int|linux32_sys||personality(netbsd32_u_long per); } 252ee0c5b44Smanu137 UNIMPL afs_syscall 253a9a2ce83Spooka138 NOARGS setfsuid16 { int|linux32_sys||setfsuid(uid_t uid); } 254a9a2ce83Spooka139 NOARGS setfsgid16 { int|linux32_sys||setfsgid(gid_t gid); } 255a9a2ce83Spooka140 STD { int|linux32_sys||llseek(int fd, u_int32_t ohigh, \ 256e7377ec5Snjoly u_int32_t olow, netbsd32_voidp res, int whence); } 257a9a2ce83Spooka141 STD { int|linux32_sys||getdents(int fd, \ 258ee0c5b44Smanu linux32_direntp_t dent, unsigned int count); } 259a9a2ce83Spooka142 STD { int|linux32_sys||select(int nfds, \ 260ee0c5b44Smanu netbsd32_fd_setp_t readfds, \ 261ee0c5b44Smanu netbsd32_fd_setp_t writefds, \ 262ee0c5b44Smanu netbsd32_fd_setp_t exceptfds, \ 2639554a293Snjoly netbsd32_timeval50p_t timeout); } 264a9a2ce83Spooka143 NOARGS { int|netbsd32||flock(int fd, int how); } 265a9a2ce83Spooka144 NOARGS { int|netbsd32|13|msync(netbsd32_voidp addr, \ 266dc80a003Snjoly netbsd32_size_t len, int flags); } 267a9a2ce83Spooka145 NOARGS { int|netbsd32||readv(int fd, \ 26833b4e768Snjoly netbsd32_iovecp_t iovp, int iovcnt); } 269a9a2ce83Spooka146 NOARGS { netbsd32_ssize_t|netbsd32||writev(int fd, \ 27033b4e768Snjoly netbsd32_iovecp_t iovp, int iovcnt); } 271a9a2ce83Spooka147 NOARGS { pid_t|netbsd32||getsid(pid_t pid); } 272a9a2ce83Spooka148 STD { int|linux32_sys||fdatasync(int fd); } 273a9a2ce83Spooka149 STD { int|linux32_sys||__sysctl(linux32___sysctlp_t lsp); } 274a9a2ce83Spooka150 NOARGS { int|netbsd32||mlock(netbsd32_voidp addr, \ 275e578f686Snjoly netbsd32_size_t len); } 276a9a2ce83Spooka151 NOARGS { int|netbsd32||munlock(netbsd32_voidp addr, \ 277e578f686Snjoly netbsd32_size_t len); } 278a9a2ce83Spooka152 NOARGS { int|netbsd32||mlockall(int flags); } 279a9a2ce83Spooka153 NOARGS { int|sys||munlockall(void); } 28033fa5ccbSchs154 STD { int|linux32_sys||sched_setparam(pid_t pid, \ 28133fa5ccbSchs const linux32_sched_paramp_t sp); } 282a9a2ce83Spooka155 STD { int|linux32_sys||sched_getparam(pid_t pid, \ 283717102f4Smanu linux32_sched_paramp_t sp); } 284a9a2ce83Spooka156 STD { int|linux32_sys||sched_setscheduler(pid_t pid, \ 28533b4e768Snjoly int policy, linux32_sched_paramp_t sp); } 286a9a2ce83Spooka157 STD { int|linux32_sys||sched_getscheduler(pid_t pid); } 287a9a2ce83Spooka158 NOARGS { int|linux_sys||sched_yield(void); } 288a9a2ce83Spooka159 STD { int|linux32_sys||sched_get_priority_max(int policy); } 289a9a2ce83Spooka160 STD { int|linux32_sys||sched_get_priority_min(int policy); } 290ee0c5b44Smanu161 UNIMPL sched_rr_get_interval 291a9a2ce83Spooka162 STD { int|linux32_sys||nanosleep(linux32_timespecp_t rqtp, \ 292cf192232Snjoly linux32_timespecp_t rmtp); } 293a9a2ce83Spooka163 STD { int|linux32_sys||mremap(netbsd32_voidp old_address, \ 294717102f4Smanu netbsd32_size_t old_size, netbsd32_size_t new_size, \ 295717102f4Smanu netbsd32_u_long flags); } 296a9a2ce83Spooka164 STD { int|linux32_sys||setresuid16(linux32_uid16_t ruid, \ 2975cec0f49Snjoly linux32_uid16_t euid, linux32_uid16_t suid); } 298a9a2ce83Spooka165 STD { int|linux32_sys||getresuid16(linux32_uid16p_t ruid, \ 2995cec0f49Snjoly linux32_uid16p_t euid, linux32_uid16p_t suid); } 300ee0c5b44Smanu166 UNIMPL vm86 301ee0c5b44Smanu167 UNIMPL query_module 302a9a2ce83Spooka168 NOARGS { int|netbsd32||poll(netbsd32_pollfdp_t fds, u_int nfds, \ 303ee0c5b44Smanu int timeout); } 304ee0c5b44Smanu169 UNIMPL nfsservctl 305a9a2ce83Spooka170 STD { int|linux32_sys||setresgid16(linux32_gid16_t rgid, \ 3065cec0f49Snjoly linux32_gid16_t egid, linux32_gid16_t sgid); } 307a9a2ce83Spooka171 STD { int|linux32_sys||getresgid16(linux32_gid16p_t rgid, \ 3085cec0f49Snjoly linux32_gid16p_t egid, linux32_gid16p_t sgid); } 309ee0c5b44Smanu172 UNIMPL prctl 310a9a2ce83Spooka173 STD { int|linux32_sys||rt_sigreturn(linux32_ucontextp_t ucp); } 311a9a2ce83Spooka174 STD { int|linux32_sys||rt_sigaction(int signum, \ 31233b4e768Snjoly linux32_sigactionp_t nsa, \ 313ee0c5b44Smanu linux32_sigactionp_t osa, \ 314ee0c5b44Smanu netbsd32_size_t sigsetsize); } 315a9a2ce83Spooka175 STD { int|linux32_sys||rt_sigprocmask(int how, \ 31633b4e768Snjoly linux32_sigsetp_t set, \ 317ee0c5b44Smanu linux32_sigsetp_t oset, \ 318ee0c5b44Smanu netbsd32_size_t sigsetsize); } 319a9a2ce83Spooka176 STD { int|linux32_sys||rt_sigpending(linux32_sigsetp_t set, \ 320efde75aeSnjoly netbsd32_size_t sigsetsize); } 32130d1f33eSchristos177 STD { int|linux32_sys||rt_sigtimedwait( \ 322de41ffceSchristos const linux32_sigsetp_t set, \ 323de41ffceSchristos linux32_siginfop_t info, \ 324de41ffceSchristos const linux32_timespecp_t timeout); } 3259c8407cdSnjoly178 STD { int|linux32_sys||rt_queueinfo(int pid, int sig, \ 3269c8407cdSnjoly linux32_siginfop_t uinfo); } 327a9a2ce83Spooka179 STD { int|linux32_sys||rt_sigsuspend(linux32_sigsetp_t unewset, \ 328ee0c5b44Smanu netbsd32_size_t sigsetsize); } 329a9a2ce83Spooka180 STD { netbsd32_ssize_t|linux32_sys||pread(int fd, \ 330fc9f8f74Snjoly netbsd32_voidp buf, netbsd32_size_t nbyte, \ 331d63cac9fSnjoly netbsd32_off_t offset); } 332a9a2ce83Spooka181 STD { netbsd32_ssize_t|linux32_sys||pwrite(int fd, \ 33333b4e768Snjoly netbsd32_voidp buf, netbsd32_size_t nbyte, \ 334d63cac9fSnjoly netbsd32_off_t offset); } 335a9a2ce83Spooka182 STD { int|linux32_sys||chown16(netbsd32_charp path, \ 3365cec0f49Snjoly linux32_uid16_t uid, linux32_gid16_t gid); } 337a9a2ce83Spooka183 NOARGS { int|netbsd32||__getcwd(netbsd32_charp bufp, \ 3385e9b532bSmanu netbsd32_size_t length); } 339ee0c5b44Smanu184 UNIMPL capget 340ee0c5b44Smanu185 UNIMPL capset 341ee0c5b44Smanu186 UNIMPL sigaltstack 342ee0c5b44Smanu187 UNIMPL sendfile 343ee0c5b44Smanu188 UNIMPL getpmsg 344ee0c5b44Smanu189 UNIMPL putpmsg 345a9a2ce83Spooka190 NOARGS { int|sys|14|vfork(void); } 346a9a2ce83Spooka191 STD { int|linux32_sys||ugetrlimit(int which, \ 347ee0c5b44Smanu netbsd32_orlimitp_t rlp); } 348a9a2ce83Spooka192 STD { linux32_off_t|linux32_sys||mmap2(netbsd32_u_long addr, \ 349717102f4Smanu netbsd32_size_t len, int prot, int flags, int fd, \ 350717102f4Smanu linux32_off_t offset); } 351fc7a1961Schs193 STD { int|linux32_sys||truncate64(netbsd32_charp path, \ 352fc7a1961Schs uint32_t lenlo, uint32_t lenhi); } 353fc7a1961Schs194 STD { int|linux32_sys||ftruncate64(unsigned int fd, \ 354fc7a1961Schs uint32_t lenlo, uint32_t lenhi); } 355a9a2ce83Spooka195 STD { int|linux32_sys||stat64(netbsd32_charp path, \ 356ee0c5b44Smanu linux32_stat64p sp); } 357a9a2ce83Spooka196 STD { int|linux32_sys||lstat64(netbsd32_charp path, \ 358ee0c5b44Smanu linux32_stat64p sp); } 359a9a2ce83Spooka197 STD { int|linux32_sys||fstat64(int fd, \ 360ee0c5b44Smanu linux32_stat64p sp); } 361a9a2ce83Spooka198 NOARGS { int|netbsd32||__posix_lchown(netbsd32_charp path, \ 36233b4e768Snjoly uid_t uid, gid_t gid); } 363a9a2ce83Spooka199 NOARGS { uid_t|sys||getuid(void); } 364a9a2ce83Spooka200 NOARGS { gid_t|sys||getgid(void); } 365a9a2ce83Spooka201 NOARGS { uid_t|sys||geteuid(void); } 366a9a2ce83Spooka202 NOARGS { gid_t|sys||getegid(void); } 367a9a2ce83Spooka203 NOARGS { int|netbsd32||setreuid(uid_t ruid, uid_t euid); } 368a9a2ce83Spooka204 NOARGS { int|netbsd32||setregid(gid_t rgid, gid_t egid); } 369a9a2ce83Spooka205 NOARGS { int|netbsd32||getgroups(int gidsetsize, \ 3705e9b532bSmanu netbsd32_gid_tp gidset); } 371a9a2ce83Spooka206 NOARGS { int|netbsd32||setgroups(int gidsetsize, \ 3725e9b532bSmanu netbsd32_gid_tp gidset); } 373a9a2ce83Spooka207 NOARGS { int|netbsd32||__posix_fchown(int fd, uid_t uid, gid_t gid); } 374a9a2ce83Spooka208 STD { int|linux32_sys||setresuid(uid_t ruid, uid_t euid, \ 375ee0c5b44Smanu uid_t suid); } 376a9a2ce83Spooka209 STD { int|linux32_sys||getresuid(linux32_uidp_t ruid, \ 377533a5224Snjoly linux32_uidp_t euid, linux32_uidp_t suid); } 378a9a2ce83Spooka210 STD { int|linux32_sys||setresgid(gid_t rgid, gid_t egid, \ 379ee0c5b44Smanu gid_t sgid); } 380a9a2ce83Spooka211 STD { int|linux32_sys||getresgid(linux32_gidp_t rgid, \ 381533a5224Snjoly linux32_gidp_t egid, linux32_gidp_t sgid); } 382a9a2ce83Spooka212 NOARGS { int|netbsd32||__posix_chown(netbsd32_charp path, \ 38333b4e768Snjoly uid_t uid, gid_t gid); } 384a9a2ce83Spooka213 NOARGS { int|netbsd32||setuid(uid_t uid); } 385a9a2ce83Spooka214 NOARGS { int|netbsd32||setgid(gid_t gid); } 386a9a2ce83Spooka215 STD { int|linux32_sys||setfsuid(uid_t uid); } 387a9a2ce83Spooka216 STD { int|linux32_sys||setfsgid(gid_t gid); } 388ee0c5b44Smanu217 UNIMPL pivot_root 3898bbb5210Snjoly218 NOARGS { int|netbsd32||mincore(netbsd32_voidp addr, \ 3908bbb5210Snjoly netbsd32_size_t len, netbsd32_charp vec); } 391a9a2ce83Spooka219 NOARGS { int|netbsd32||madvise(netbsd32_voidp addr, \ 392717102f4Smanu netbsd32_size_t len, int behav); } 393a9a2ce83Spooka220 STD { int|linux32_sys||getdents64(int fd, \ 394ee0c5b44Smanu linux32_dirent64p_t dent, unsigned int count); } 395174ee4c8Sdsl; fcntl64() - Exactly the same as fcntl() 396174ee4c8Sdsl#define linux32_sys_fcntl64 linux32_sys_fcntl 397174ee4c8Sdsl#define linux32_sys_fcntl64_args linux32_sys_fcntl_args 398a9a2ce83Spooka221 NOARGS { int|linux32_sys||fcntl64(int fd, \ 399ee0c5b44Smanu int cmd, netbsd32_voidp arg); } 400ee0c5b44Smanu222 UNIMPL /* unused */ 401ee0c5b44Smanu223 UNIMPL /* unused */ 40233fa5ccbSchs224 NOARGS { pid_t|linux_sys||gettid(void); } 403ee0c5b44Smanu225 UNIMPL readahead 40435ec66ccSchristos226 NOARGS { int|netbsd32||setxattr(netbsd32_charp path, \ 40535ec66ccSchristos netbsd32_charp name, netbsd32_voidp value, \ 40635ec66ccSchristos netbsd32_size_t size, int flags); } 40735ec66ccSchristos227 NOARGS { int|netbsd32||lsetxattr(netbsd32_charp path, \ 40835ec66ccSchristos netbsd32_charp name, netbsd32_voidp value, \ 40935ec66ccSchristos netbsd32_size_t size, int flags); } 41035ec66ccSchristos228 NOARGS { int|netbsd32||fsetxattr(int fd, netbsd32_charp name, \ 41135ec66ccSchristos netbsd32_voidp value, netbsd32_size_t size, int flags); } 41235ec66ccSchristos229 NOARGS { ssize_t|netbsd32||getxattr(netbsd32_charp path, \ 41335ec66ccSchristos netbsd32_charp name, netbsd32_voidp value, \ 41435ec66ccSchristos netbsd32_size_t size); } 41535ec66ccSchristos230 NOARGS { ssize_t|netbsd32||lgetxattr(netbsd32_charp path, \ 41635ec66ccSchristos netbsd32_charp name, netbsd32_voidp value, \ 41735ec66ccSchristos netbsd32_size_t size); } 41835ec66ccSchristos231 NOARGS { ssize_t|netbsd32||fgetxattr(int fd, netbsd32_charp name, \ 41935ec66ccSchristos netbsd32_voidp value, netbsd32_size_t size); } 42035ec66ccSchristos232 NOARGS { ssize_t|netbsd32||listxattr(netbsd32_charp path, \ 42135ec66ccSchristos netbsd32_charp list, netbsd32_size_t size); } 42235ec66ccSchristos233 NOARGS { ssize_t|netbsd32||llistxattr(netbsd32_charp path, \ 42335ec66ccSchristos netbsd32_charp list, netbsd32_size_t size); } 42435ec66ccSchristos234 NOARGS { ssize_t|netbsd32||flistxattr(int fd, netbsd32_charp list, \ 42535ec66ccSchristos netbsd32_size_t size); } 42635ec66ccSchristos235 NOARGS { int|netbsd32||removexattr(netbsd32_charp path, \ 42735ec66ccSchristos netbsd32_charp name); } 42835ec66ccSchristos236 NOARGS { int|netbsd32||lremovexattr(netbsd32_charp path, \ 42935ec66ccSchristos netbsd32_charp name); } 43035ec66ccSchristos237 NOARGS { int|netbsd32||fremovexattr(int fd, netbsd32_charp name); } 43133fa5ccbSchs238 STD { int|linux32_sys||tkill(int tid, int sig); } 432ee0c5b44Smanu239 UNIMPL sendfile64 43333fa5ccbSchs240 STD { int|linux32_sys||futex(linux32_intp_t uaddr, int op, int val, \ 43433fa5ccbSchs linux32_timespecp_t timeout, linux32_intp_t uaddr2, \ 43533fa5ccbSchs int val3); } 43633fa5ccbSchs241 STD { int|linux32_sys||sched_setaffinity(pid_t pid, \ 43733fa5ccbSchs unsigned int len, linux32_ulongp_t mask); } 43833fa5ccbSchs242 STD { int|linux32_sys||sched_getaffinity(pid_t pid, \ 43933fa5ccbSchs unsigned int len, linux32_ulongp_t mask); } 44033fa5ccbSchs243 STD { int|linux32_sys||set_thread_area(linux32_user_descp_t desc); } 44133fa5ccbSchs244 STD { int|linux32_sys||get_thread_area(linux32_user_descp_t desc); } 442ee0c5b44Smanu245 UNIMPL io_setup 443ee0c5b44Smanu246 UNIMPL io_destroy 444ee0c5b44Smanu247 UNIMPL io_getevents 445ee0c5b44Smanu248 UNIMPL io_submit 446ee0c5b44Smanu249 UNIMPL io_cancel 447dab2e0b5Salnsn250 STD { int|linux32_sys||fadvise64(int fd, uint32_t offlo, \ 448dab2e0b5Salnsn uint32_t offhi, linux32_size_t len, int advice); } 449ee0c5b44Smanu251 UNIMPL /* unused */ 450a9a2ce83Spooka252 STD { int|linux32_sys||exit_group(int error_code); } 451ee0c5b44Smanu253 UNIMPL lookup_dcookie 452ee0c5b44Smanu254 UNIMPL epoll_create 453ee0c5b44Smanu255 UNIMPL epoll_ctl 454ee0c5b44Smanu256 UNIMPL epoll_wait 455ee0c5b44Smanu257 UNIMPL remap_file_pages 45633fa5ccbSchs258 STD { int|linux32_sys||set_tid_address(linux32_intp_t tid); } 457555b1851Sthorpej259 STD { int|linux32_sys||timer_create(clockid_t clockid, \ 458555b1851Sthorpej struct linux32_sigevent *evp, timer_t *timerid); } 459555b1851Sthorpej260 STD { int|linux32_sys||timer_settime(timer_t timerid, \ 460555b1851Sthorpej int flags, const struct linux32_itimerspec *tim, \ 461555b1851Sthorpej struct linux32_itimerspec *otim); } 462555b1851Sthorpej261 STD { int|linux32_sys||timer_gettime(timer_t timerid, \ 463555b1851Sthorpej struct linux32_itimerspec *tim); } 464555b1851Sthorpej262 NOARGS { int|sys||timer_getoverrun(timer_t timerid); } 465555b1851Sthorpej263 NOARGS { int|sys||timer_delete(timer_t timerid); } 466a9a2ce83Spooka264 STD { int|linux32_sys||clock_settime(clockid_t which, \ 467c007e33aSnjoly linux32_timespecp_t tp); } 468a9a2ce83Spooka265 STD { int|linux32_sys||clock_gettime(clockid_t which, \ 469c007e33aSnjoly linux32_timespecp_t tp); } 470a9a2ce83Spooka266 STD { int|linux32_sys||clock_getres(clockid_t which, \ 471c007e33aSnjoly linux32_timespecp_t tp); } 472a9a2ce83Spooka267 STD { int|linux32_sys||clock_nanosleep(clockid_t which, int flags, \ 47399688b74Snjoly linux32_timespecp_t rqtp, linux32_timespecp_t rmtp); } 474fc7a1961Schs268 STD { int|linux32_sys||statfs64(netbsd32_charp path, \ 475fc7a1961Schs netbsd32_size_t sz, linux32_statfs64p sp); } 476fc7a1961Schs269 STD { int|linux32_sys||fstatfs64(int fd, \ 477fc7a1961Schs netbsd32_size_t sz, linux32_statfs64p sp); } 47833fa5ccbSchs270 STD { int|linux32_sys||tgkill(int tgid, int tid, int sig); } 479f0bcde4bSnjoly271 NOARGS { int|compat_50_netbsd32||utimes(netbsd32_charp path, \ 480f0bcde4bSnjoly netbsd32_timeval50p_t tptr); } 481dab2e0b5Salnsn272 STD { int|linux32_sys||fadvise64_64(int fd, uint32_t offlo, \ 482dab2e0b5Salnsn uint32_t offhi, uint32_t lenlo, uint32_t lenhi, int advice); } 483ee0c5b44Smanu273 UNIMPL vserver 484ee0c5b44Smanu274 UNIMPL mbind 485ee0c5b44Smanu275 UNIMPL get_mempolicy 486ee0c5b44Smanu276 UNIMPL set_mempolicy 487ee0c5b44Smanu277 UNIMPL mq_open 488ee0c5b44Smanu278 UNIMPL mq_unlink 489ee0c5b44Smanu279 UNIMPL mq_timedsend 490ee0c5b44Smanu280 UNIMPL mq_timedreceive 491ee0c5b44Smanu281 UNIMPL mq_notify 492ee0c5b44Smanu282 UNIMPL mq_getsetattr 493ee0c5b44Smanu283 UNIMPL kexec_load 49433fa5ccbSchs284 UNIMPL waitid 49533fa5ccbSchs285 UNIMPL /* unused */ 49633fa5ccbSchs286 UNIMPL add_key 49733fa5ccbSchs287 UNIMPL request_key 49833fa5ccbSchs288 UNIMPL keyctl 49933fa5ccbSchs289 UNIMPL ioprio_set 50033fa5ccbSchs290 UNIMPL ioprio_get 50133fa5ccbSchs291 UNIMPL inotify_init 50233fa5ccbSchs292 UNIMPL inotify_add_watch 50333fa5ccbSchs293 UNIMPL inotify_rm_watch 50433fa5ccbSchs294 UNIMPL migrate_pages 50529a841b3Schs295 STD { int|linux32_sys||openat(int fd, netbsd32_charp path, \ 50629a841b3Schs int flags, ... linux_umode_t mode); } 50729a841b3Schs296 NOARGS { int|netbsd32||mkdirat(int fd, netbsd32_charp path, \ 50829a841b3Schs linux_umode_t mode); } 50929a841b3Schs297 STD { int|linux32_sys||mknodat(int fd, netbsd32_charp path, \ 51029a841b3Schs linux_umode_t mode, unsigned dev); } 51129a841b3Schs298 STD { int|linux32_sys||fchownat(int fd, netbsd32_charp path, \ 51229a841b3Schs uid_t owner, gid_t group, int flag); } 51333fa5ccbSchs299 UNIMPL futimesat 51429a841b3Schs300 STD { int|linux32_sys||fstatat64(int fd, netbsd32_charp path, \ 51529a841b3Schs linux32_stat64p sp, int flag); } 51629a841b3Schs301 STD { int|linux32_sys||unlinkat(int fd, netbsd32_charp path, \ 51729a841b3Schs int flag); } 51829a841b3Schs302 NOARGS { int|netbsd32||renameat(int fromfd, netbsd32_charp from, \ 51929a841b3Schs int tofd, netbsd32_charp to); } 52029a841b3Schs303 STD { int|linux32_sys||linkat(int fd1, netbsd32_charp name1, \ 52129a841b3Schs int fd2, netbsd32_charp name2, int flags); } 52229a841b3Schs304 NOARGS { int|netbsd32||symlinkat(netbsd32_charp path1, int fd, \ 52329a841b3Schs netbsd32_charp path2); } 52429a841b3Schs305 NOARGS { int|netbsd32||readlinkat(int fd, netbsd32_charp path, \ 52529a841b3Schs netbsd32_charp buf, linux32_size_t bufsize); } 52629a841b3Schs306 STD { int|linux32_sys||fchmodat(int fd, netbsd32_charp path, \ 52729a841b3Schs linux_umode_t mode); } 52829a841b3Schs307 STD { int|linux32_sys||faccessat(int fd, netbsd32_charp path, \ 52929a841b3Schs int amode); } 53091864278Sryo308 STD { int|linux32_sys||pselect6(int nfds, \ 53191864278Sryo netbsd32_fd_setp_t readfds, \ 53291864278Sryo netbsd32_fd_setp_t writefds, \ 53391864278Sryo netbsd32_fd_setp_t exceptfds, \ 53491864278Sryo linux32_timespecp_t timeout, \ 53591864278Sryo linux32_sized_sigsetp_t ss); } 536f43d462aSnjoly309 STD { int|linux32_sys||ppoll(netbsd32_pollfdp_t fds, u_int nfds, \ 537f43d462aSnjoly linux32_timespecp_t timeout, linux32_sigsetp_t sigset); } 53833fa5ccbSchs310 UNIMPL unshare 539276ef223Sthorpej ; 540276ef223Sthorpej ; The netbsd32 native robust list calls have different 541276ef223Sthorpej ; argument names / types, but they are ABI-compatible 542276ef223Sthorpej ; with linux32. 543276ef223Sthorpej ; 544276ef223Sthorpej311 NOARGS { int|netbsd32||__futex_set_robust_list( \ 545276ef223Sthorpej netbsd32_voidp head, netbsd32_size_t len); } 546276ef223Sthorpej312 NOARGS { int|netbsd32||__futex_get_robust_list(lwpid_t lwpid, \ 547276ef223Sthorpej netbsd32_voidp headp, netbsd32_size_tp lenp); } 54833fa5ccbSchs313 UNIMPL splice 54933fa5ccbSchs314 UNIMPL sync_file_range 55033fa5ccbSchs315 UNIMPL tee 55133fa5ccbSchs316 UNIMPL vmsplice 55233fa5ccbSchs317 UNIMPL move_pages 55333fa5ccbSchs318 UNIMPL getcpu 55433fa5ccbSchs319 UNIMPL epoll_wait 55529a841b3Schs320 STD { int|linux32_sys||utimensat(int fd, netbsd32_charp path, \ 55629a841b3Schs linux32_timespecp_t times, int flag); } 55733fa5ccbSchs321 UNIMPL signalfd 558185d6cd7Sthorpej322 NOARGS { int|linux_sys||timerfd_create(clockid_t clock_id, \ 559185d6cd7Sthorpej int flags); } 5604d055d8aSthorpej323 STD { int|linux32_sys||eventfd(unsigned int initval); } 56154412fcaSjdolecek324 STD { int|linux32_sys||fallocate(int fd, int mode, \ 56254412fcaSjdolecek off_t offset, off_t len); } 563185d6cd7Sthorpej325 STD { int|linux32_sys||timerfd_settime(int fd, int flags, \ 564185d6cd7Sthorpej const struct linux32_itimerspec *tim, \ 565185d6cd7Sthorpej struct linux32_itimerspec *otim); } 566185d6cd7Sthorpej326 STD { int|linux32_sys||timerfd_gettime(int fd, \ 567185d6cd7Sthorpej struct linux32_itimerspec *tim); } 56833fa5ccbSchs327 UNIMPL signalfd4 5694d055d8aSthorpej328 STD { int|linux32_sys||eventfd2(unsigned int initval, \ 5704d055d8aSthorpej int flags); } 57133fa5ccbSchs329 UNIMPL epoll_create1 572bd814003Schristos330 STD { int|linux32_sys||dup3(int from, int to, int flags); } 573bd814003Schristos331 STD { int|linux32_sys||pipe2(netbsd32_intp fd, int flags); } 57433fa5ccbSchs332 UNIMPL inotify_init1 5754d7b9c05Sthorpej333 STD { int|linux32_sys||preadv(int fd, \ 5764d7b9c05Sthorpej const netbsd32_iovecp_t iovp, int iovcnt, \ 5774d7b9c05Sthorpej netbsd32_u_long off_lo, netbsd32_u_long off_hi); } 5784d7b9c05Sthorpej334 STD { int|linux32_sys||pwritev(int fd, \ 5794d7b9c05Sthorpej const netbsd32_iovecp_t iovp, int iovcnt, \ 5804d7b9c05Sthorpej netbsd32_u_long off_lo, netbsd32_u_long off_hi); } 58133fa5ccbSchs335 UNIMPL rt_tgsigqueueinfo 58233fa5ccbSchs336 UNIMPL perf_counter_open 58333fa5ccbSchs337 UNIMPL recvmmsg 58429a841b3Schs338 UNIMPL fanotify_init 58529a841b3Schs339 UNIMPL fanotify_mark 586*8f021900Sryo340 STD { int|linux32_sys||prlimit64(pid_t pid, int which, \ 587*8f021900Sryo netbsd32_rlimitp_t new_rlp, netbsd32_rlimitp_t old_rlp); } 58829a841b3Schs341 UNIMPL name_to_handle_at 58929a841b3Schs342 UNIMPL open_by_handle_at 59029a841b3Schs343 UNIMPL clock_adjtime 59129a841b3Schs344 UNIMPL syncfs 59229a841b3Schs345 UNIMPL sendmmsg 59329a841b3Schs346 UNIMPL setns 59429a841b3Schs347 UNIMPL process_vm_readv 59529a841b3Schs348 UNIMPL process_vm_writev 59629a841b3Schs349 UNIMPL kcmp 59729a841b3Schs350 UNIMPL finit_module 598