syscalls.master revision 1.8
11.8Schristos $NetBSD: syscalls.master,v 1.8 2002/02/15 16:48:02 christos Exp $ 21.1Smanu 31.1Smanu; @(#)syscalls.master 8.1 (Berkeley) 7/19/93 41.1Smanu 51.1Smanu; Derived from NetBSD's sys/compat/linux/arch/i386/syscalls.master 61.1Smanu; sys/compat/linux/arch/m68k/syscalls.master 71.1Smanu; and from Linux's arch/ppc/kernel/misc.S 81.1Smanu; 91.1Smanu; We have problems for a few syscalls, specially: 101.1Smanu; 142 ppc_select -> sys_new_select -> sys_select (Conflicts with 82 ???). 111.1Smanu; 121.1Smanu; Expect problems with the following, which have an architecture dependent 131.1Smanu; implementation in Linux/powerpc: 141.1Smanu; 29 pause 151.1Smanu; 42 pipe tested. no problem. 161.1Smanu; 59 olduname 171.1Smanu; 101 ioperm 181.1Smanu; 109 uname 191.1Smanu; 117 ipc 201.1Smanu; 211.1Smanu; Most of syscalls after 182 that were introduced in Linux-2.4 are UNIMPL. 221.1Smanu; 231.1Smanu; The following are UNIMPL here. The Linux kernel implements them but just logs 241.1Smanu; a kernel error and returns -ENOSYS. 251.1Smanu; 110 iopl 261.1Smanu; 113 vm86 271.1Smanu; 123 modify_ldt 281.1Smanu; 198 sys_pciconfig_read 291.1Smanu; 199 sys_pciconfig_write 301.1Smanu; 200 sys_pciconfig_iobase 311.1Smanu; 321.1Smanu; Emmanuel Dreyfus <p99dreyf@criens.u-psud.fr> 331.1Smanu 341.1Smanu; NetBSD powerpc COMPAT_LINUX system call name/number "master" file. 351.1Smanu; (See syscalls.conf to see what it is processed into.) 361.1Smanu; 371.1Smanu; Fields: number type [type-dependent ...] 381.1Smanu; number system call number, must be in order 391.1Smanu; type one of STD, OBSOL, UNIMPL, NODEF, NOARGS, or one of 401.1Smanu; the compatibility options defined in syscalls.conf. 411.1Smanu; 421.1Smanu; types: 431.1Smanu; STD always included 441.1Smanu; OBSOL obsolete, not included in system 451.1Smanu; UNIMPL unimplemented, not included in system 461.1Smanu; NODEF included, but don't define the syscall number 471.1Smanu; NOARGS included, but don't define the syscall args structure 481.1Smanu; INDIR included, but don't define the syscall args structure 491.1Smanu; and allow it to be "really" varargs. 501.1Smanu; 511.1Smanu; The compat options are defined in the syscalls.conf file, and the 521.1Smanu; compat option name is prefixed to the syscall name. Other than 531.1Smanu; that, they're like NODEF (for 'compat' options), or STD (for 541.1Smanu; 'libcompat' options). 551.1Smanu; 561.1Smanu; The type-dependent arguments are as follows: 571.1Smanu; For STD, NODEF, NOARGS, and compat syscalls: 581.1Smanu; { pseudo-proto } [alias] 591.1Smanu; For other syscalls: 601.1Smanu; [comment] 611.1Smanu; 621.1Smanu; #ifdef's, etc. may be included, and are copied to the output files. 631.1Smanu; #include's are copied to the syscall names and switch definition files only. 641.1Smanu 651.6Smrg#if defined(_KERNEL_OPT) 661.1Smanu#include "opt_compat_netbsd.h" 671.1Smanu#include "opt_compat_43.h" 681.1Smanu#endif 691.1Smanu 701.1Smanu#include <sys/param.h> 711.1Smanu#include <sys/poll.h> 721.1Smanu#include <sys/systm.h> 731.1Smanu#include <sys/signal.h> 741.1Smanu#include <sys/mount.h> 751.1Smanu#include <sys/syscallargs.h> 761.1Smanu 771.1Smanu#include <compat/linux/common/linux_types.h> 781.1Smanu#include <compat/linux/common/linux_signal.h> 791.1Smanu#include <compat/linux/common/linux_siginfo.h> 801.1Smanu#include <compat/linux/common/linux_machdep.h> 811.1Smanu#include <compat/linux/common/linux_mmap.h> 821.1Smanu 831.1Smanu#include <compat/linux/linux_syscallargs.h> 841.1Smanu 851.3Sjdolecek0 NOARGS { int linux_sys_nosys(void); } syscall 861.1Smanu1 NOARGS { int sys_exit(int rval); } 871.1Smanu2 NOARGS { int sys_fork(void); } 881.1Smanu3 NOARGS { int sys_read(int fd, char *buf, u_int nbyte); } 891.1Smanu4 NOARGS { int sys_write(int fd, char *buf, u_int nbyte); } 901.1Smanu5 STD { int linux_sys_open(const char *path, int flags, \ 911.1Smanu int mode); } 921.1Smanu6 NOARGS { int sys_close(int fd); } 931.1Smanu7 STD { int linux_sys_waitpid(int pid, int *status, \ 941.1Smanu int options);} 951.1Smanu8 STD { int linux_sys_creat(const char *path, int mode); } 961.7Smanu9 STD { int linux_sys_link(const char *path, const \ 971.7Smanu char *link); } 981.1Smanu10 STD { int linux_sys_unlink(const char *path); } 991.1Smanu11 STD { int linux_sys_execve(const char *path, char **argp, \ 1001.1Smanu char **envp); } 1011.1Smanu12 STD { int linux_sys_chdir(const char *path); } 1021.1Smanu13 STD { int linux_sys_time(linux_time_t *t); } 1031.1Smanu14 STD { int linux_sys_mknod(const char *path, int mode, \ 1041.1Smanu int dev); } 1051.1Smanu15 STD { int linux_sys_chmod(const char *path, int mode); } 1061.1Smanu16 STD { int linux_sys_lchown(const char *path, int uid, \ 1071.1Smanu int gid); } 1081.1Smanu17 OBSOL break 1091.1Smanu18 OBSOL ostat 1101.1Smanu19 NOARGS { long compat_43_sys_lseek(int fd, long offset, \ 1111.1Smanu int whence); } 1121.2Sthorpej20 NOARGS MPSAFE { pid_t sys_getpid(void); } 1131.1Smanu21 UNIMPL mount 1141.1Smanu22 OBSOL umount 1151.1Smanu23 NOARGS { int sys_setuid(uid_t uid); } 1161.1Smanu24 NOARGS { uid_t sys_getuid(void); } 1171.1Smanu25 STD { int linux_sys_stime(linux_time_t *t); } 1181.1Smanu26 STD { int linux_sys_ptrace(int request, int pid, \ 1191.7Smanu int addr, int data); } 1201.1Smanu27 STD { int linux_sys_alarm(unsigned int secs); } 1211.1Smanu28 OBSOL ofstat 1221.1Smanu29 STD { int linux_sys_pause(void); } 1231.1Smanu30 STD { int linux_sys_utime(const char *path, \ 1241.1Smanu struct linux_utimbuf *times); } 1251.1Smanu31 OBSOL stty 1261.1Smanu32 OBSOL gtty 1271.1Smanu33 STD { int linux_sys_access(const char *path, int flags); } 1281.1Smanu34 STD { int linux_sys_nice(int incr); } 1291.1Smanu35 OBSOL ftime 1301.1Smanu36 NOARGS { int sys_sync(void); } 1311.1Smanu37 STD { int linux_sys_kill(int pid, int signum); } 1321.1Smanu38 STD { int linux_sys_rename(const char *from, \ 1331.1Smanu const char *to); } 1341.1Smanu39 STD { int linux_sys_mkdir(const char *path, int mode); } 1351.1Smanu40 STD { int linux_sys_rmdir(const char *path); } 1361.1Smanu41 NOARGS { int sys_dup(u_int fd); } 1371.1Smanu42 STD { int linux_sys_pipe(int *pfds); } 1381.1Smanu43 STD { int linux_sys_times(struct times *tms); } 1391.1Smanu44 OBSOL prof 1401.1Smanu45 STD { int linux_sys_brk(char *nsize); } 1411.1Smanu46 NOARGS { int sys_setgid(gid_t gid); } 1421.1Smanu47 NOARGS { gid_t sys_getgid(void); } 1431.1Smanu48 STD { int linux_sys_signal(int signum, \ 1441.1Smanu linux_handler_t handler); } 1451.1Smanu49 NOARGS { uid_t sys_geteuid(void); } 1461.1Smanu50 NOARGS { gid_t sys_getegid(void); } 1471.1Smanu51 NOARGS { int sys_acct(char *path); } 1481.1Smanu52 UNIMPL umount 1491.1Smanu53 OBSOL lock 1501.1Smanu54 STD { int linux_sys_ioctl(int fd, u_long com, \ 1511.1Smanu caddr_t data); } 1521.1Smanu55 STD { int linux_sys_fcntl(int fd, int cmd, void *arg); } 1531.1Smanu56 OBSOL mpx 1541.1Smanu57 NOARGS { int sys_setpgid(int pid, int pgid); } 1551.1Smanu58 OBSOL ulimit 1561.7Smanu59 STD { int linux_sys_olduname(struct linux_old_utsname \ 1571.7Smanu *up); } 1581.1Smanu60 NOARGS { int sys_umask(int newmask); } 1591.1Smanu61 NOARGS { int sys_chroot(char *path); } 1601.1Smanu62 UNIMPL ustat 1611.1Smanu63 NOARGS { int sys_dup2(u_int from, u_int to); } 1621.1Smanu64 NOARGS { pid_t sys_getppid(void); } 1631.1Smanu65 NOARGS { int sys_getpgrp(void); } 1641.1Smanu66 NOARGS { int sys_setsid(void); } 1651.1Smanu67 STD { int linux_sys_sigaction(int signum, \ 1661.1Smanu const struct linux_old_sigaction *nsa, \ 1671.1Smanu struct linux_old_sigaction *osa); } 1681.1Smanu68 STD { int linux_sys_siggetmask(void); } 1691.1Smanu69 STD { int linux_sys_sigsetmask(linux_old_sigset_t mask); } 1701.1Smanu70 NOARGS { int sys_setreuid(uid_t ruid, uid_t euid); } 1711.1Smanu71 NOARGS { int sys_setregid(gid_t rgid, gid_t egid); } 1721.1Smanu72 STD { int linux_sys_sigsuspend(caddr_t restart, \ 1731.1Smanu int oldmask, int mask); } 1741.1Smanu73 STD { int linux_sys_sigpending(linux_old_sigset_t *set); } 1751.1Smanu74 NOARGS { int compat_43_sys_sethostname(char *hostname, \ 1761.1Smanu u_int len);} 1771.1Smanu75 NOARGS { int compat_43_sys_setrlimit(u_int which, \ 1781.1Smanu struct orlimit *rlp); } 1791.1Smanu76 NOARGS { int compat_43_sys_getrlimit(u_int which, \ 1801.1Smanu struct orlimit *rlp); } 1811.1Smanu77 NOARGS { int sys_getrusage(int who, struct rusage *rusage); } 1821.5Smanu78 STD { int linux_sys_gettimeofday(struct timeval *tp, \ 1831.1Smanu struct timezone *tzp); } 1841.5Smanu79 STD { int linux_sys_settimeofday(struct timeval *tp, \ 1851.1Smanu struct timezone *tzp); } 1861.1Smanu80 NOARGS { int sys_getgroups(u_int gidsetsize, gid_t *gidset); } 1871.1Smanu81 NOARGS { int sys_setgroups(u_int gidsetsize, gid_t *gidset); } 1881.1Smanu82 STD { int linux_sys_select(int nfds, fd_set* readfds, \ 1891.1Smanu fd_set* writefds, fd_set* exceptfds, \ 1901.1Smanu struct timeval *timeout); } 1911.1Smanu83 STD { int linux_sys_symlink(const char *path, \ 1921.1Smanu const char *to); } 1931.1Smanu84 NOARGS { int compat_43_sys_lstat(const char *path, \ 1941.1Smanu struct stat43 *up); } oolstat 1951.1Smanu85 STD { int linux_sys_readlink(const char *name, char *buf, \ 1961.1Smanu int count); } 1971.1Smanu86 STD { int linux_sys_uselib(const char *path); } 1981.1Smanu87 STD { int linux_sys_swapon(char *name); } 1991.1Smanu88 STD { int linux_sys_reboot(int magic1, int magic2, \ 2001.1Smanu int cmd, void *arg); } 2011.1Smanu89 STD { int linux_sys_readdir(int fd, caddr_t dent, \ 2021.1Smanu unsigned int count); } 2031.7Smanu90 NOARGS { int linux_sys_mmap(unsigned long addr, size_t len, \ 2041.7Smanu int prot, int flags, int fd, linux_off_t offset); } 2051.1Smanu91 NOARGS { int sys_munmap(caddr_t addr, int len); } 2061.1Smanu92 STD { int linux_sys_truncate(const char *path, \ 2071.1Smanu long length); } 2081.1Smanu93 NOARGS { int compat_43_sys_ftruncate(int fd, long length); } 2091.1Smanu94 NOARGS { int sys_fchmod(int fd, int mode); } 2101.7Smanu95 NOARGS { int sys___posix_fchown(int fd, int uid, int gid); } 2111.1Smanu96 NOARGS { int sys_getpriority(int which, int who); } 2121.1Smanu97 NOARGS { int sys_setpriority(int which, int who, int prio); } 2131.1Smanu98 NOARGS { int sys_profil(caddr_t samples, u_int size, \ 2141.1Smanu u_int offset, u_int scale); } 2151.1Smanu99 STD { int linux_sys_statfs(const char *path, \ 2161.1Smanu struct linux_statfs *sp); } 2171.1Smanu100 STD { int linux_sys_fstatfs(int fd, \ 2181.1Smanu struct linux_statfs *sp); } 2191.7Smanu101 STD { int linux_sys_ioperm(unsigned int lo, \ 2201.7Smanu unsigned int hi, int val); } 2211.1Smanu102 STD { int linux_sys_socketcall(int what, void *args); } 2221.1Smanu103 UNIMPL syslog 2231.1Smanu104 NOARGS { int sys_setitimer(u_int which, \ 2241.1Smanu struct itimerval *itv, struct itimerval *oitv); } 2251.1Smanu105 NOARGS { int sys_getitimer(u_int which, \ 2261.1Smanu struct itimerval *itv); } 2271.1Smanu106 STD { int linux_sys_stat(const char *path, \ 2281.1Smanu struct linux_stat *sp); } 2291.1Smanu107 STD { int linux_sys_lstat(const char *path, \ 2301.1Smanu struct linux_stat *sp); } 2311.1Smanu108 STD { int linux_sys_fstat(int fd, struct linux_stat *sp); } 2321.1Smanu109 STD { int linux_sys_uname(struct linux_utsname *up); } 2331.1Smanu110 UNIMPL iopl 2341.1Smanu111 UNIMPL vhangup 2351.1Smanu112 UNIMPL idle 2361.1Smanu113 UNIMPL vm86old 2371.1Smanu114 STD { int linux_sys_wait4(int pid, int *status, \ 2381.1Smanu int options, struct rusage *rusage); } 2391.7Smanu115 STD { int linux_sys_swapoff(const char *path); } 2401.7Smanu116 STD { int linux_sys_sysinfo(struct linux_sysinfo *arg); } 2411.1Smanu117 STD { int linux_sys_ipc(int what, int a1, int a2, int a3, \ 2421.1Smanu caddr_t ptr); } 2431.1Smanu118 NOARGS { int sys_fsync(int fd); } 2441.1Smanu119 STD { int linux_sys_sigreturn(struct linux_sigcontext *scp); } 2451.1Smanu120 STD { int linux_sys_clone(int flags, void *stack); } 2461.1Smanu121 STD { int linux_sys_setdomainname(char *domainname, \ 2471.7Smanu int len); } 2481.1Smanu122 STD { int linux_sys_new_uname(struct linux_utsname *up); } 2491.7Smanu123 UNIMPL modify_ldt 2501.1Smanu124 UNIMPL adjtimex 2511.1Smanu125 NOARGS { int sys_mprotect(caddr_t addr, int len, int prot); } 2521.1Smanu126 STD { int linux_sys_sigprocmask(int how, \ 2531.1Smanu const linux_old_sigset_t *set, \ 2541.1Smanu linux_old_sigset_t *oset); } 2551.1Smanu127 UNIMPL create_module 2561.1Smanu128 UNIMPL init_module 2571.1Smanu129 UNIMPL delete_module 2581.1Smanu130 UNIMPL get_kernel_syms 2591.1Smanu131 UNIMPL quotactl 2601.1Smanu132 STD { int linux_sys_getpgid(int pid); } 2611.1Smanu133 NOARGS { int sys_fchdir(int fd); } 2621.1Smanu134 UNIMPL bdflush 2631.1Smanu135 UNIMPL sysfs 2641.1Smanu136 STD { int linux_sys_personality(int per); } 2651.1Smanu137 UNIMPL afs_syscall 2661.1Smanu138 STD { int linux_sys_setfsuid(uid_t uid); } 2671.1Smanu139 NOARGS { int linux_sys_getfsuid(void); } 2681.1Smanu140 STD { int linux_sys_llseek(int fd, u_int32_t ohigh, \ 2691.1Smanu u_int32_t olow, caddr_t res, int whence); } 2701.1Smanu141 STD { int linux_sys_getdents(int fd, \ 2711.1Smanu struct linux_dirent *dent, unsigned int count); } 2721.7Smanu142 STD { int linux_sys_new_select(int nfds, fd_set *readfds, \ 2731.1Smanu fd_set *writefds, fd_set *exceptfds, \ 2741.1Smanu struct timeval *timeout); } 2751.1Smanu143 NOARGS { int sys_flock(int fd, int how); } 2761.1Smanu144 STD { int linux_sys_msync(caddr_t addr, int len, int fl); } 2771.1Smanu145 NOARGS { int sys_readv(int fd, struct iovec *iovp, \ 2781.1Smanu u_int iovcnt); } 2791.1Smanu146 NOARGS { int sys_writev(int fd, struct iovec *iovp, \ 2801.1Smanu u_int iovcnt); } 2811.1Smanu147 NOARGS { pid_t sys_getsid(pid_t pid); } 2821.1Smanu148 STD { int linux_sys_fdatasync(int fd); } 2831.1Smanu149 STD { int linux_sys___sysctl(struct linux___sysctl *lsp); } 2841.1Smanu150 NOARGS { int sys_mlock(caddr_t addr, size_t len); } 2851.1Smanu151 NOARGS { int sys_munlock(caddr_t addr, size_t len); } 2861.1Smanu152 NOARGS { int sys_mlockall(int flags); } 2871.1Smanu153 NOARGS { int sys_munlockall(void); } 2881.1Smanu154 STD { int linux_sys_sched_setparam(pid_t pid, \ 2891.1Smanu const struct linux_sched_param *sp); } 2901.1Smanu155 STD { int linux_sys_sched_getparam(pid_t pid, \ 2911.1Smanu struct linux_sched_param *sp); } 2921.1Smanu156 STD { int linux_sys_sched_setscheduler(pid_t pid, \ 2931.1Smanu int policy, const struct linux_sched_param *sp); } 2941.1Smanu157 STD { int linux_sys_sched_getscheduler(pid_t pid); } 2951.1Smanu158 STD { int linux_sys_sched_yield(void); } 2961.1Smanu159 STD { int linux_sys_sched_get_priority_max(int policy); } 2971.1Smanu160 STD { int linux_sys_sched_get_priority_min(int policy); } 2981.1Smanu161 UNIMPL sched_rr_get_interval 2991.1Smanu162 NOARGS { int sys_nanosleep(const struct timespec *rqtp, \ 3001.1Smanu struct timespec *rmtp); } 3011.1Smanu163 STD { void *linux_sys_mremap(void *old_address, \ 3021.1Smanu size_t old_size, size_t new_size, u_long flags); } 3031.1Smanu164 STD { int linux_sys_setresuid(uid_t ruid, uid_t euid, \ 3041.1Smanu uid_t suid); } 3051.1Smanu165 STD { int linux_sys_getresuid(uid_t *ruid, uid_t *euid, \ 3061.1Smanu uid_t *suid); } 3071.1Smanu166 UNIMPL query_module 3081.1Smanu167 NOARGS { int sys_poll(struct pollfd *fds, u_int nfds, \ 3091.1Smanu int timeout); } 3101.1Smanu168 UNIMPL nfsservctl 3111.1Smanu169 STD { int linux_sys_setresgid(gid_t rgid, gid_t egid, \ 3121.1Smanu gid_t sgid); } 3131.1Smanu170 STD { int linux_sys_getresgid(gid_t *rgid, gid_t *egid, \ 3141.1Smanu gid_t *sgid); } 3151.1Smanu171 UNIMPL prctl 3161.1Smanu172 STD { int linux_sys_rt_sigreturn( \ 3171.7Smanu struct linux_rt_sigframe *sfp); } 3181.1Smanu173 STD { int linux_sys_rt_sigaction(int signum, \ 3191.1Smanu const struct linux_sigaction *nsa, \ 3201.1Smanu struct linux_sigaction *osa, \ 3211.1Smanu size_t sigsetsize); } 3221.1Smanu174 STD { int linux_sys_rt_sigprocmask(int how, \ 3231.1Smanu const linux_sigset_t *set, \ 3241.1Smanu linux_sigset_t *oset, \ 3251.1Smanu size_t sigsetsize); } 3261.1Smanu175 STD { int linux_sys_rt_sigpending( \ 3271.1Smanu linux_sigset_t *set, \ 3281.1Smanu size_t sigsetsize); } 3291.1Smanu176 UNIMPL rt_sigtimedwait 3301.1Smanu; XXX XAX int here? sigset_t here? siginfo_t 3311.1Smanu177 STD { int linux_sys_rt_queueinfo(int pid, int signum, \ 3321.1Smanu void *uinfo); } 3331.1Smanu178 STD { int linux_sys_rt_sigsuspend(linux_sigset_t *unewset, \ 3341.1Smanu size_t sigsetsize); } 3351.1Smanu179 STD { int linux_sys_pread(int fd, char *buf, \ 3361.1Smanu size_t nbyte, linux_off_t offset); } 3371.1Smanu180 STD { int linux_sys_pwrite(int fd, char *buf, \ 3381.1Smanu size_t nbyte, linux_off_t offset); } 3391.1Smanu181 STD { int linux_sys_chown(const char *path, \ 3401.1Smanu int uid, int gid); } 3411.1Smanu182 NOARGS { int sys___getcwd(char *bufp, size_t length); } 3421.1Smanu183 UNIMPL capget 3431.1Smanu184 UNIMPL capset 3441.1Smanu185 STD { int linux_sys_sigaltstack( \ 3451.1Smanu const struct linux_sigaltstack *ss, \ 3461.1Smanu struct linux_sigaltstack *oss); } 3471.1Smanu186 UNIMPL sendfile 3481.1Smanu187 UNIMPL getpmsg 3491.1Smanu188 UNIMPL putpmsg 3501.1Smanu189 NOARGS { int sys___vfork14(void); } 3511.8Schristos190 STD { int linux_sys_ugetrlimit(int which, \ 3521.8Schristos struct rlimit *rlp); } 3531.1Smanu191 UNIMPL /* unused */ 3541.8Schristos192 STD { off_t linux_sys_mmap2(void *addr, size_t len, \ 3551.8Schristos int prot, int flags, int fd, off_t offset); } 3561.1Smanu193 UNIMPL truncate64 3571.1Smanu194 UNIMPL ftruncate64 3581.1Smanu195 UNIMPL stat64 3591.1Smanu196 UNIMPL lstat64 3601.1Smanu197 UNIMPL fstat64 3611.1Smanu198 UNIMPL sys_pciconfig_read 3621.1Smanu199 UNIMPL sys_pciconfig_write 3631.1Smanu200 UNIMPL sys_pciconfig_iobase 3641.1Smanu201 UNIMPL /* Unused (MacOnLinux project) */ 3651.1Smanu202 UNIMPL sys_getdents64 3661.4Sjdolecek203 UNIMPL pivot_root 3671.4Sjdolecek204 UNIMPL fcntl64 3681.4Sjdolecek205 UNIMPL madvise 3691.4Sjdolecek206 UNIMPL mincore 370