syscalls.master revision 1.4
11.4Sjdolecek $NetBSD: syscalls.master,v 1.4 2001/03/30 17:59:47 jdolecek 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.1Smanu#if defined(_KERNEL) && !defined(_LKM) 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.1Smanu9 STD { int linux_sys_link(const char *path, const char *link); } 971.1Smanu10 STD { int linux_sys_unlink(const char *path); } 981.1Smanu11 STD { int linux_sys_execve(const char *path, char **argp, \ 991.1Smanu char **envp); } 1001.1Smanu12 STD { int linux_sys_chdir(const char *path); } 1011.1Smanu13 STD { int linux_sys_time(linux_time_t *t); } 1021.1Smanu14 STD { int linux_sys_mknod(const char *path, int mode, \ 1031.1Smanu int dev); } 1041.1Smanu15 STD { int linux_sys_chmod(const char *path, int mode); } 1051.1Smanu16 STD { int linux_sys_lchown(const char *path, int uid, \ 1061.1Smanu int gid); } 1071.1Smanu17 OBSOL break 1081.1Smanu18 OBSOL ostat 1091.1Smanu19 NOARGS { long compat_43_sys_lseek(int fd, long offset, \ 1101.1Smanu int whence); } 1111.2Sthorpej20 NOARGS MPSAFE { pid_t sys_getpid(void); } 1121.1Smanu21 UNIMPL mount 1131.1Smanu22 OBSOL umount 1141.1Smanu23 NOARGS { int sys_setuid(uid_t uid); } 1151.1Smanu24 NOARGS { uid_t sys_getuid(void); } 1161.1Smanu25 STD { int linux_sys_stime(linux_time_t *t); } 1171.1Smanu26 STD { int linux_sys_ptrace(int request, int pid, \ 1181.1Smanu int addr, int data); } 1191.1Smanu27 STD { int linux_sys_alarm(unsigned int secs); } 1201.1Smanu28 OBSOL ofstat 1211.1Smanu29 STD { int linux_sys_pause(void); } 1221.1Smanu30 STD { int linux_sys_utime(const char *path, \ 1231.1Smanu struct linux_utimbuf *times); } 1241.1Smanu31 OBSOL stty 1251.1Smanu32 OBSOL gtty 1261.1Smanu33 STD { int linux_sys_access(const char *path, int flags); } 1271.1Smanu34 STD { int linux_sys_nice(int incr); } 1281.1Smanu35 OBSOL ftime 1291.1Smanu36 NOARGS { int sys_sync(void); } 1301.1Smanu37 STD { int linux_sys_kill(int pid, int signum); } 1311.1Smanu38 STD { int linux_sys_rename(const char *from, \ 1321.1Smanu const char *to); } 1331.1Smanu39 STD { int linux_sys_mkdir(const char *path, int mode); } 1341.1Smanu40 STD { int linux_sys_rmdir(const char *path); } 1351.1Smanu41 NOARGS { int sys_dup(u_int fd); } 1361.1Smanu42 STD { int linux_sys_pipe(int *pfds); } 1371.1Smanu43 STD { int linux_sys_times(struct times *tms); } 1381.1Smanu44 OBSOL prof 1391.1Smanu45 STD { int linux_sys_brk(char *nsize); } 1401.1Smanu46 NOARGS { int sys_setgid(gid_t gid); } 1411.1Smanu47 NOARGS { gid_t sys_getgid(void); } 1421.1Smanu48 STD { int linux_sys_signal(int signum, \ 1431.1Smanu linux_handler_t handler); } 1441.1Smanu49 NOARGS { uid_t sys_geteuid(void); } 1451.1Smanu50 NOARGS { gid_t sys_getegid(void); } 1461.1Smanu51 NOARGS { int sys_acct(char *path); } 1471.1Smanu52 UNIMPL umount 1481.1Smanu53 OBSOL lock 1491.1Smanu54 STD { int linux_sys_ioctl(int fd, u_long com, \ 1501.1Smanu caddr_t data); } 1511.1Smanu55 STD { int linux_sys_fcntl(int fd, int cmd, void *arg); } 1521.1Smanu56 OBSOL mpx 1531.1Smanu57 NOARGS { int sys_setpgid(int pid, int pgid); } 1541.1Smanu58 OBSOL ulimit 1551.1Smanu59 STD { int linux_sys_olduname(struct linux_old_utsname *up); } 1561.1Smanu60 NOARGS { int sys_umask(int newmask); } 1571.1Smanu61 NOARGS { int sys_chroot(char *path); } 1581.1Smanu62 UNIMPL ustat 1591.1Smanu63 NOARGS { int sys_dup2(u_int from, u_int to); } 1601.1Smanu64 NOARGS { pid_t sys_getppid(void); } 1611.1Smanu65 NOARGS { int sys_getpgrp(void); } 1621.1Smanu66 NOARGS { int sys_setsid(void); } 1631.1Smanu67 STD { int linux_sys_sigaction(int signum, \ 1641.1Smanu const struct linux_old_sigaction *nsa, \ 1651.1Smanu struct linux_old_sigaction *osa); } 1661.1Smanu68 STD { int linux_sys_siggetmask(void); } 1671.1Smanu69 STD { int linux_sys_sigsetmask(linux_old_sigset_t mask); } 1681.1Smanu70 NOARGS { int sys_setreuid(uid_t ruid, uid_t euid); } 1691.1Smanu71 NOARGS { int sys_setregid(gid_t rgid, gid_t egid); } 1701.1Smanu72 STD { int linux_sys_sigsuspend(caddr_t restart, \ 1711.1Smanu int oldmask, int mask); } 1721.1Smanu73 STD { int linux_sys_sigpending(linux_old_sigset_t *set); } 1731.1Smanu74 NOARGS { int compat_43_sys_sethostname(char *hostname, \ 1741.1Smanu u_int len);} 1751.1Smanu75 NOARGS { int compat_43_sys_setrlimit(u_int which, \ 1761.1Smanu struct orlimit *rlp); } 1771.1Smanu76 NOARGS { int compat_43_sys_getrlimit(u_int which, \ 1781.1Smanu struct orlimit *rlp); } 1791.1Smanu77 NOARGS { int sys_getrusage(int who, struct rusage *rusage); } 1801.1Smanu78 NOARGS { int sys_gettimeofday(struct timeval *tp, \ 1811.1Smanu struct timezone *tzp); } 1821.1Smanu79 NOARGS { int sys_settimeofday(struct timeval *tp, \ 1831.1Smanu struct timezone *tzp); } 1841.1Smanu80 NOARGS { int sys_getgroups(u_int gidsetsize, gid_t *gidset); } 1851.1Smanu81 NOARGS { int sys_setgroups(u_int gidsetsize, gid_t *gidset); } 1861.1Smanu82 STD { int linux_sys_select(int nfds, fd_set* readfds, \ 1871.1Smanu fd_set* writefds, fd_set* exceptfds, \ 1881.1Smanu struct timeval *timeout); } 1891.1Smanu83 STD { int linux_sys_symlink(const char *path, \ 1901.1Smanu const char *to); } 1911.1Smanu84 NOARGS { int compat_43_sys_lstat(const char *path, \ 1921.1Smanu struct stat43 *up); } oolstat 1931.1Smanu85 STD { int linux_sys_readlink(const char *name, char *buf, \ 1941.1Smanu int count); } 1951.1Smanu86 STD { int linux_sys_uselib(const char *path); } 1961.1Smanu87 STD { int linux_sys_swapon(char *name); } 1971.1Smanu88 STD { int linux_sys_reboot(int magic1, int magic2, \ 1981.1Smanu int cmd, void *arg); } 1991.1Smanu89 STD { int linux_sys_readdir(int fd, caddr_t dent, \ 2001.1Smanu unsigned int count); } 2011.1Smanu90 STD { int linux_sys_powerpc_mmap(unsigned long addr, size_t len, \ 2021.1Smanu int prot, int flags, int fd, linux_off_t offset); } 2031.1Smanu91 NOARGS { int sys_munmap(caddr_t addr, int len); } 2041.1Smanu92 STD { int linux_sys_truncate(const char *path, \ 2051.1Smanu long length); } 2061.1Smanu93 NOARGS { int compat_43_sys_ftruncate(int fd, long length); } 2071.1Smanu94 NOARGS { int sys_fchmod(int fd, int mode); } 2081.1Smanu95 NOARGS { int sys___posix_fchown(int fd, int uid, int gid); } 2091.1Smanu96 NOARGS { int sys_getpriority(int which, int who); } 2101.1Smanu97 NOARGS { int sys_setpriority(int which, int who, int prio); } 2111.1Smanu98 NOARGS { int sys_profil(caddr_t samples, u_int size, \ 2121.1Smanu u_int offset, u_int scale); } 2131.1Smanu99 STD { int linux_sys_statfs(const char *path, \ 2141.1Smanu struct linux_statfs *sp); } 2151.1Smanu100 STD { int linux_sys_fstatfs(int fd, \ 2161.1Smanu struct linux_statfs *sp); } 2171.1Smanu101 STD { int linux_sys_ioperm(unsigned int lo, \ 2181.1Smanu unsigned int hi, int val); } 2191.1Smanu102 STD { int linux_sys_socketcall(int what, void *args); } 2201.1Smanu103 UNIMPL syslog 2211.1Smanu104 NOARGS { int sys_setitimer(u_int which, \ 2221.1Smanu struct itimerval *itv, struct itimerval *oitv); } 2231.1Smanu105 NOARGS { int sys_getitimer(u_int which, \ 2241.1Smanu struct itimerval *itv); } 2251.1Smanu106 STD { int linux_sys_stat(const char *path, \ 2261.1Smanu struct linux_stat *sp); } 2271.1Smanu107 STD { int linux_sys_lstat(const char *path, \ 2281.1Smanu struct linux_stat *sp); } 2291.1Smanu108 STD { int linux_sys_fstat(int fd, struct linux_stat *sp); } 2301.1Smanu109 STD { int linux_sys_uname(struct linux_utsname *up); } 2311.1Smanu110 UNIMPL iopl 2321.1Smanu111 UNIMPL vhangup 2331.1Smanu112 UNIMPL idle 2341.1Smanu113 UNIMPL vm86old 2351.1Smanu114 STD { int linux_sys_wait4(int pid, int *status, \ 2361.1Smanu int options, struct rusage *rusage); } 2371.1Smanu115 STD { int linux_sys_swapoff(const char *path); } 2381.1Smanu116 STD { int linux_sys_sysinfo(struct linux_sysinfo *arg); } 2391.1Smanu117 STD { int linux_sys_ipc(int what, int a1, int a2, int a3, \ 2401.1Smanu caddr_t ptr); } 2411.1Smanu118 NOARGS { int sys_fsync(int fd); } 2421.1Smanu119 STD { int linux_sys_sigreturn(struct linux_sigcontext *scp); } 2431.1Smanu120 STD { int linux_sys_clone(int flags, void *stack); } 2441.1Smanu121 STD { int linux_sys_setdomainname(char *domainname, \ 2451.1Smanu int len); } 2461.1Smanu122 STD { int linux_sys_new_uname(struct linux_utsname *up); } 2471.1Smanu123 UNIMPL modify_ldt 2481.1Smanu124 UNIMPL adjtimex 2491.1Smanu125 NOARGS { int sys_mprotect(caddr_t addr, int len, int prot); } 2501.1Smanu126 STD { int linux_sys_sigprocmask(int how, \ 2511.1Smanu const linux_old_sigset_t *set, \ 2521.1Smanu linux_old_sigset_t *oset); } 2531.1Smanu127 UNIMPL create_module 2541.1Smanu128 UNIMPL init_module 2551.1Smanu129 UNIMPL delete_module 2561.1Smanu130 UNIMPL get_kernel_syms 2571.1Smanu131 UNIMPL quotactl 2581.1Smanu132 STD { int linux_sys_getpgid(int pid); } 2591.1Smanu133 NOARGS { int sys_fchdir(int fd); } 2601.1Smanu134 UNIMPL bdflush 2611.1Smanu135 UNIMPL sysfs 2621.1Smanu136 STD { int linux_sys_personality(int per); } 2631.1Smanu137 UNIMPL afs_syscall 2641.1Smanu138 STD { int linux_sys_setfsuid(uid_t uid); } 2651.1Smanu139 NOARGS { int linux_sys_getfsuid(void); } 2661.1Smanu140 STD { int linux_sys_llseek(int fd, u_int32_t ohigh, \ 2671.1Smanu u_int32_t olow, caddr_t res, int whence); } 2681.1Smanu141 STD { int linux_sys_getdents(int fd, \ 2691.1Smanu struct linux_dirent *dent, unsigned int count); } 2701.1Smanu142 STD { int linux_sys_new_select(int nfds, fd_set *readfds, \ 2711.1Smanu fd_set *writefds, fd_set *exceptfds, \ 2721.1Smanu struct timeval *timeout); } 2731.1Smanu143 NOARGS { int sys_flock(int fd, int how); } 2741.1Smanu144 STD { int linux_sys_msync(caddr_t addr, int len, int fl); } 2751.1Smanu145 NOARGS { int sys_readv(int fd, struct iovec *iovp, \ 2761.1Smanu u_int iovcnt); } 2771.1Smanu146 NOARGS { int sys_writev(int fd, struct iovec *iovp, \ 2781.1Smanu u_int iovcnt); } 2791.1Smanu147 NOARGS { pid_t sys_getsid(pid_t pid); } 2801.1Smanu148 STD { int linux_sys_fdatasync(int fd); } 2811.1Smanu149 STD { int linux_sys___sysctl(struct linux___sysctl *lsp); } 2821.1Smanu150 NOARGS { int sys_mlock(caddr_t addr, size_t len); } 2831.1Smanu151 NOARGS { int sys_munlock(caddr_t addr, size_t len); } 2841.1Smanu152 NOARGS { int sys_mlockall(int flags); } 2851.1Smanu153 NOARGS { int sys_munlockall(void); } 2861.1Smanu154 STD { int linux_sys_sched_setparam(pid_t pid, \ 2871.1Smanu const struct linux_sched_param *sp); } 2881.1Smanu155 STD { int linux_sys_sched_getparam(pid_t pid, \ 2891.1Smanu struct linux_sched_param *sp); } 2901.1Smanu156 STD { int linux_sys_sched_setscheduler(pid_t pid, \ 2911.1Smanu int policy, const struct linux_sched_param *sp); } 2921.1Smanu157 STD { int linux_sys_sched_getscheduler(pid_t pid); } 2931.1Smanu158 STD { int linux_sys_sched_yield(void); } 2941.1Smanu159 STD { int linux_sys_sched_get_priority_max(int policy); } 2951.1Smanu160 STD { int linux_sys_sched_get_priority_min(int policy); } 2961.1Smanu161 UNIMPL sched_rr_get_interval 2971.1Smanu162 NOARGS { int sys_nanosleep(const struct timespec *rqtp, \ 2981.1Smanu struct timespec *rmtp); } 2991.1Smanu163 STD { void *linux_sys_mremap(void *old_address, \ 3001.1Smanu size_t old_size, size_t new_size, u_long flags); } 3011.1Smanu164 STD { int linux_sys_setresuid(uid_t ruid, uid_t euid, \ 3021.1Smanu uid_t suid); } 3031.1Smanu165 STD { int linux_sys_getresuid(uid_t *ruid, uid_t *euid, \ 3041.1Smanu uid_t *suid); } 3051.1Smanu166 UNIMPL query_module 3061.1Smanu167 NOARGS { int sys_poll(struct pollfd *fds, u_int nfds, \ 3071.1Smanu int timeout); } 3081.1Smanu168 UNIMPL nfsservctl 3091.1Smanu169 STD { int linux_sys_setresgid(gid_t rgid, gid_t egid, \ 3101.1Smanu gid_t sgid); } 3111.1Smanu170 STD { int linux_sys_getresgid(gid_t *rgid, gid_t *egid, \ 3121.1Smanu gid_t *sgid); } 3131.1Smanu171 UNIMPL prctl 3141.1Smanu172 STD { int linux_sys_rt_sigreturn( \ 3151.1Smanu struct linux_rt_sigframe *sfp); } 3161.1Smanu173 STD { int linux_sys_rt_sigaction(int signum, \ 3171.1Smanu const struct linux_sigaction *nsa, \ 3181.1Smanu struct linux_sigaction *osa, \ 3191.1Smanu size_t sigsetsize); } 3201.1Smanu174 STD { int linux_sys_rt_sigprocmask(int how, \ 3211.1Smanu const linux_sigset_t *set, \ 3221.1Smanu linux_sigset_t *oset, \ 3231.1Smanu size_t sigsetsize); } 3241.1Smanu175 STD { int linux_sys_rt_sigpending( \ 3251.1Smanu linux_sigset_t *set, \ 3261.1Smanu size_t sigsetsize); } 3271.1Smanu176 UNIMPL rt_sigtimedwait 3281.1Smanu; XXX XAX int here? sigset_t here? siginfo_t 3291.1Smanu177 STD { int linux_sys_rt_queueinfo(int pid, int signum, \ 3301.1Smanu void *uinfo); } 3311.1Smanu178 STD { int linux_sys_rt_sigsuspend(linux_sigset_t *unewset, \ 3321.1Smanu size_t sigsetsize); } 3331.1Smanu179 STD { int linux_sys_pread(int fd, char *buf, \ 3341.1Smanu size_t nbyte, linux_off_t offset); } 3351.1Smanu180 STD { int linux_sys_pwrite(int fd, char *buf, \ 3361.1Smanu size_t nbyte, linux_off_t offset); } 3371.1Smanu181 STD { int linux_sys_chown(const char *path, \ 3381.1Smanu int uid, int gid); } 3391.1Smanu182 NOARGS { int sys___getcwd(char *bufp, size_t length); } 3401.1Smanu183 UNIMPL capget 3411.1Smanu184 UNIMPL capset 3421.1Smanu185 STD { int linux_sys_sigaltstack( \ 3431.1Smanu const struct linux_sigaltstack *ss, \ 3441.1Smanu struct linux_sigaltstack *oss); } 3451.1Smanu186 UNIMPL sendfile 3461.1Smanu187 UNIMPL getpmsg 3471.1Smanu188 UNIMPL putpmsg 3481.1Smanu189 NOARGS { int sys___vfork14(void); } 3491.1Smanu190 UNIMPL sys_getrlimit 3501.1Smanu191 UNIMPL /* unused */ 3511.1Smanu192 UNIMPL mmap2 3521.1Smanu193 UNIMPL truncate64 3531.1Smanu194 UNIMPL ftruncate64 3541.1Smanu195 UNIMPL stat64 3551.1Smanu196 UNIMPL lstat64 3561.1Smanu197 UNIMPL fstat64 3571.1Smanu198 UNIMPL sys_pciconfig_read 3581.1Smanu199 UNIMPL sys_pciconfig_write 3591.1Smanu200 UNIMPL sys_pciconfig_iobase 3601.1Smanu201 UNIMPL /* Unused (MacOnLinux project) */ 3611.1Smanu202 UNIMPL sys_getdents64 3621.4Sjdolecek203 UNIMPL pivot_root 3631.4Sjdolecek204 UNIMPL fcntl64 3641.4Sjdolecek205 UNIMPL madvise 3651.4Sjdolecek206 UNIMPL mincore 366