1 $NetBSD: syscalls.master,v 1.44 2009/11/24 10:42:44 njoly Exp $ 2 3; @(#)syscalls.master 8.1 (Berkeley) 7/19/93 4 5; Derived from NetBSD's sys/compat/linux/arch/i386/syscalls.master 6; sys/compat/linux/arch/m68k/syscalls.master 7; and from Linux's arch/ppc/kernel/misc.S 8; 9; We have problems for a few syscalls, specially: 10; 142 ppc_select -> sys_new_select -> sys_select (Conflicts with 82 ???). 11; 12; Expect problems with the following, which have an architecture dependent 13; implementation in Linux/powerpc: 14; 29 pause 15; 42 pipe tested. no problem. 16; 59 olduname 17; 101 ioperm 18; 109 uname 19; 117 ipc 20; 21; Most of syscalls after 182 that were introduced in Linux-2.4 are UNIMPL. 22; 23; The following are UNIMPL here. The Linux kernel implements them but just logs 24; a kernel error and returns -ENOSYS. 25; 110 iopl 26; 113 vm86 27; 123 modify_ldt 28; 198 sys_pciconfig_read 29; 199 sys_pciconfig_write 30; 200 sys_pciconfig_iobase 31; 32; Emmanuel Dreyfus <p99dreyf@criens.u-psud.fr> 33 34; NetBSD powerpc COMPAT_LINUX system call name/number "master" file. 35; (See syscalls.conf to see what it is processed into.) 36; 37; Fields: number type [type-dependent ...] 38; number system call number, must be in order 39; type one of STD, OBSOL, UNIMPL, NODEF, NOARGS, or one of 40; the compatibility options defined in syscalls.conf. 41; 42; types: 43; STD always included 44; OBSOL obsolete, not included in system 45; UNIMPL unimplemented, not included in system 46; NODEF included, but don't define the syscall number 47; NOARGS included, but don't define the syscall args structure 48; INDIR included, but don't define the syscall args structure 49; and allow it to be "really" varargs. 50; 51; The compat options are defined in the syscalls.conf file, and the 52; compat option name is prefixed to the syscall name. Other than 53; that, they're like NODEF (for 'compat' options), or STD (for 54; 'libcompat' options). 55; 56; The type-dependent arguments are as follows: 57; For STD, NODEF, NOARGS, and compat syscalls: 58; { pseudo-proto } [alias] 59; For other syscalls: 60; [comment] 61; 62; #ifdef's, etc. may be included, and are copied to the output files. 63; #include's are copied to the syscall names and switch definition files only. 64 65#include <sys/param.h> 66#include <sys/poll.h> 67#include <sys/systm.h> 68#include <sys/signal.h> 69#include <sys/mount.h> 70#include <sys/syscallargs.h> 71 72#include <compat/linux/common/linux_types.h> 73#include <compat/linux/common/linux_signal.h> 74#include <compat/linux/common/linux_siginfo.h> 75#include <compat/linux/common/linux_machdep.h> 76#include <compat/linux/common/linux_mmap.h> 77 78#include <compat/linux/linux_syscallargs.h> 79 80%% 81 820 NOARGS { int|linux_sys||nosys(void); } syscall 831 NOARGS { int|sys||exit(int rval); } 842 NOARGS { int|sys||fork(void); } 853 NOARGS { int|sys||read(int fd, char *buf, u_int nbyte); } 864 NOARGS { int|sys||write(int fd, char *buf, u_int nbyte); } 875 STD { int|linux_sys||open(const char *path, int flags, \ 88 int mode); } 896 NOARGS { int|sys||close(int fd); } 907 STD { int|linux_sys||waitpid(int pid, int *status, \ 91 int options);} 928 STD { int|linux_sys||creat(const char *path, int mode); } 939 NOARGS { int|sys||link(const char *path, const char *link); } 9410 STD { int|linux_sys||unlink(const char *path); } 9511 NOARGS { int|sys||execve(const char *path, char **argp, \ 96 char **envp); } 9712 NOARGS { int|sys||chdir(const char *path); } 9813 STD { int|linux_sys||time(linux_time_t *t); } 9914 STD { int|linux_sys||mknod(const char *path, int mode, \ 100 int dev); } 10115 NOARGS { int|sys||chmod(const char *path, int mode); } 10216 NOARGS { int|sys||__posix_lchown(const char *path, int uid, \ 103 int gid); } 10417 OBSOL break 10518 OBSOL ostat 10619 NOARGS { long|compat_43_sys||lseek(int fd, long offset, \ 107 int whence); } 10820 NOARGS { pid_t|sys||getpid(void); } 10921 UNIMPL mount 11022 OBSOL umount 11123 NOARGS { int|sys||setuid(uid_t uid); } 11224 NOARGS { uid_t|sys||getuid(void); } 11325 STD { int|linux_sys||stime(linux_time_t *t); } 11426 STD { int|linux_sys||ptrace(int request, int pid, \ 115 int addr, int data); } 11627 STD { int|linux_sys||alarm(unsigned int secs); } 11728 OBSOL ofstat 11829 STD { int|linux_sys||pause(void); } 11930 STD { int|linux_sys||utime(const char *path, \ 120 struct linux_utimbuf *times); } 12131 OBSOL stty 12232 OBSOL gtty 12333 NOARGS { int|sys||access(const char *path, int flags); } 12434 STD { int|linux_sys||nice(int incr); } 12535 OBSOL ftime 12636 NOARGS { int|sys||sync(void); } 12737 STD { int|linux_sys||kill(int pid, int signum); } 12838 NOARGS { int|sys||__posix_rename(const char *from, \ 129 const char *to); } 13039 NOARGS { int|sys||mkdir(const char *path, int mode); } 13140 NOARGS { int|sys||rmdir(const char *path); } 13241 NOARGS { int|sys||dup(u_int fd); } 13342 STD { int|linux_sys||pipe(int *pfds); } 13443 STD { int|linux_sys||times(struct times *tms); } 13544 OBSOL prof 13645 STD { int|linux_sys||brk(char *nsize); } 13746 NOARGS { int|sys||setgid(gid_t gid); } 13847 NOARGS { gid_t|sys||getgid(void); } 13948 STD { int|linux_sys||signal(int signum, \ 140 linux_handler_t handler); } 14149 NOARGS { uid_t|sys||geteuid(void); } 14250 NOARGS { gid_t|sys||getegid(void); } 14351 NOARGS { int|sys||acct(char *path); } 14452 UNIMPL umount 14553 OBSOL lock 14654 STD { int|linux_sys||ioctl(int fd, u_long com, \ 147 void *data); } 14855 STD { int|linux_sys||fcntl(int fd, int cmd, void *arg); } 14956 OBSOL mpx 15057 NOARGS { int|sys||setpgid(int pid, int pgid); } 15158 OBSOL ulimit 15259 STD { int|linux_sys||olduname(struct linux_old_utsname \ 153 *up); } 15460 NOARGS { int|sys||umask(int newmask); } 15561 NOARGS { int|sys||chroot(char *path); } 15662 UNIMPL ustat 15763 NOARGS { int|sys||dup2(u_int from, u_int to); } 15864 NOARGS { pid_t|sys||getppid(void); } 15965 NOARGS { int|sys||getpgrp(void); } 16066 NOARGS { int|sys||setsid(void); } 16167 STD { int|linux_sys||sigaction(int signum, \ 162 const struct linux_old_sigaction *nsa, \ 163 struct linux_old_sigaction *osa); } 16468 STD { int|linux_sys||siggetmask(void); } 16569 STD { int|linux_sys||sigsetmask(linux_old_sigset_t mask); } 16670 NOARGS { int|sys||setreuid(uid_t ruid, uid_t euid); } 16771 NOARGS { int|sys||setregid(gid_t rgid, gid_t egid); } 16872 STD { int|linux_sys||sigsuspend(void *restart, \ 169 int oldmask, int mask); } 17073 STD { int|linux_sys||sigpending(linux_old_sigset_t *set); } 17174 NOARGS { int|compat_43_sys||sethostname(char *hostname, \ 172 u_int len);} 17375 STD { int|linux_sys||setrlimit(u_int which, \ 174 struct orlimit *rlp); } 17576 STD { int|linux_sys||getrlimit(u_int which, \ 176 struct orlimit *rlp); } 17777 NOARGS { int|compat_50_sys||getrusage(int who, \ 178 struct rusage50 *rusage); } 17978 STD { int|linux_sys||gettimeofday(struct timeval50 *tp, \ 180 struct timezone *tzp); } 18179 STD { int|linux_sys||settimeofday(struct timeval50 *tp, \ 182 struct timezone *tzp); } 18380 NOARGS { int|sys||getgroups(u_int gidsetsize, gid_t *gidset); } 18481 NOARGS { int|sys||setgroups(u_int gidsetsize, gid_t *gidset); } 18582 STD { int|linux_sys||select(int nfds, fd_set* readfds, \ 186 fd_set* writefds, fd_set* exceptfds, \ 187 struct timeval50 *timeout); } 18883 NOARGS { int|sys||symlink(const char *path, const char *to); } 18984 NOARGS { int|compat_43_sys||lstat(const char *path, \ 190 struct stat43 *up); } oolstat 19185 NOARGS { int|sys||readlink(const char *name, char *buf, \ 192 int count); } 193#ifdef EXEC_AOUT 19486 STD { int|linux_sys||uselib(const char *path); } 195#else 19686 UNIMPL sys_uselib 197#endif 19887 STD { int|linux_sys||swapon(char *name); } 19988 STD { int|linux_sys||reboot(int magic1, int magic2, \ 200 int cmd, void *arg); } 20189 STD { int|linux_sys||readdir(int fd, void *dent, \ 202 unsigned int count); } 20390 NOARGS { int|linux_sys||mmap(unsigned long addr, size_t len, \ 204 int prot, int flags, int fd, linux_off_t offset); } 20591 NOARGS { int|sys||munmap(void *addr, int len); } 20692 NOARGS { int|compat_43_sys||truncate(const char *path, \ 207 long length); } 20893 NOARGS { int|compat_43_sys||ftruncate(int fd, long length); } 20994 NOARGS { int|sys||fchmod(int fd, int mode); } 21095 NOARGS { int|sys||__posix_fchown(int fd, int uid, int gid); } 21196 STD { int|linux_sys||getpriority(int which, int who); } 21297 NOARGS { int|sys||setpriority(int which, int who, int prio); } 21398 NOARGS { int|sys||profil(void *samples, u_int size, \ 214 u_int offset, u_int scale); } 21599 STD { int|linux_sys||statfs(const char *path, \ 216 struct linux_statfs *sp); } 217100 STD { int|linux_sys||fstatfs(int fd, \ 218 struct linux_statfs *sp); } 219101 STD { int|linux_sys||ioperm(unsigned int lo, \ 220 unsigned int hi, int val); } 221102 STD { int|linux_sys||socketcall(int what, void *args); } 222103 UNIMPL syslog 223104 NOARGS { int|compat_50_sys||setitimer(u_int which, \ 224 struct itimerval50 *itv, \ 225 struct itimerval50 *oitv); } 226105 NOARGS { int|compat_50_sys||getitimer(u_int which, \ 227 struct itimerval50 *itv); } 228106 STD { int|linux_sys||stat(const char *path, \ 229 struct linux_stat *sp); } 230107 STD { int|linux_sys||lstat(const char *path, \ 231 struct linux_stat *sp); } 232108 STD { int|linux_sys||fstat(int fd, struct linux_stat *sp); } 233109 STD { int|linux_sys||uname(struct linux_utsname *up); } 234110 UNIMPL iopl 235111 UNIMPL vhangup 236112 UNIMPL idle 237113 UNIMPL vm86old 238114 STD { int|linux_sys||wait4(int pid, int *status, \ 239 int options, struct rusage50 *rusage); } 240115 STD { int|linux_sys||swapoff(const char *path); } 241116 STD { int|linux_sys||sysinfo(struct linux_sysinfo *arg); } 242117 STD { int|linux_sys||ipc(int what, int a1, int a2, int a3, \ 243 void *ptr); } 244118 NOARGS { int|sys||fsync(int fd); } 245119 STD { int|linux_sys||sigreturn(struct linux_sigcontext *scp); } 246120 STD { int|linux_sys||clone(int flags, void *stack); } 247121 STD { int|linux_sys||setdomainname(char *domainname, \ 248 int len); } 249122 STD { int|linux_sys||new_uname(struct linux_utsname *up); } 250123 UNIMPL modify_ldt 251124 UNIMPL adjtimex 252125 STD { int|linux_sys||mprotect(const void *start, \ 253 unsigned long len, int prot); } 254126 STD { int|linux_sys||sigprocmask(int how, \ 255 const linux_old_sigset_t *set, \ 256 linux_old_sigset_t *oset); } 257127 UNIMPL create_module 258128 UNIMPL init_module 259129 UNIMPL delete_module 260130 UNIMPL get_kernel_syms 261131 UNIMPL quotactl 262132 NOARGS { pid_t|sys||getpgid(pid_t pid); } 263133 NOARGS { int|sys||fchdir(int fd); } 264134 UNIMPL bdflush 265135 UNIMPL sysfs 266136 STD { int|linux_sys||personality(unsigned long per); } 267137 UNIMPL afs_syscall 268138 STD { int|linux_sys||setfsuid(uid_t uid); } 269139 STD { int|linux_sys||setfsgid(gid_t gid); } 270140 STD { int|linux_sys||llseek(int fd, u_int32_t ohigh, \ 271 u_int32_t olow, void *res, int whence); } 272141 STD { int|linux_sys||getdents(int fd, \ 273 struct linux_dirent *dent, unsigned int count); } 274142 STD { int|linux_sys||new_select(int nfds, fd_set *readfds, \ 275 fd_set *writefds, fd_set *exceptfds, \ 276 struct timeval50 *timeout); } 277143 NOARGS { int|sys||flock(int fd, int how); } 278144 NOARGS { int|sys|13|msync(void *addr, size_t len, int flags); } 279145 NOARGS { int|sys||readv(int fd, struct iovec *iovp, \ 280 u_int iovcnt); } 281146 NOARGS { int|sys||writev(int fd, struct iovec *iovp, \ 282 u_int iovcnt); } 283147 NOARGS { pid_t|sys||getsid(pid_t pid); } 284148 STD { int|linux_sys||fdatasync(int fd); } 285149 STD { int|linux_sys||__sysctl(struct linux___sysctl *lsp); } 286150 NOARGS { int|sys||mlock(void *addr, size_t len); } 287151 NOARGS { int|sys||munlock(void *addr, size_t len); } 288152 NOARGS { int|sys||mlockall(int flags); } 289153 NOARGS { int|sys||munlockall(void); } 290154 STD { int|linux_sys||sched_setparam(pid_t pid, \ 291 const struct linux_sched_param *sp); } 292155 STD { int|linux_sys||sched_getparam(pid_t pid, \ 293 struct linux_sched_param *sp); } 294156 STD { int|linux_sys||sched_setscheduler(pid_t pid, \ 295 int policy, const struct linux_sched_param *sp); } 296157 STD { int|linux_sys||sched_getscheduler(pid_t pid); } 297158 STD { int|linux_sys||sched_yield(void); } 298159 STD { int|linux_sys||sched_get_priority_max(int policy); } 299160 STD { int|linux_sys||sched_get_priority_min(int policy); } 300161 UNIMPL sched_rr_get_interval 301162 STD { int|linux_sys||nanosleep( \ 302 const struct linux_timespec *rqtp, \ 303 struct linux_timespec *rmtp); } 304163 STD { void *|linux_sys||mremap(void *old_address, \ 305 size_t old_size, size_t new_size, u_long flags); } 306164 STD { int|linux_sys||setresuid(uid_t ruid, uid_t euid, \ 307 uid_t suid); } 308165 STD { int|linux_sys||getresuid(uid_t *ruid, uid_t *euid, \ 309 uid_t *suid); } 310166 UNIMPL query_module 311167 NOARGS { int|sys||poll(struct pollfd *fds, u_int nfds, \ 312 int timeout); } 313168 UNIMPL nfsservctl 314169 STD { int|linux_sys||setresgid(gid_t rgid, gid_t egid, \ 315 gid_t sgid); } 316170 STD { int|linux_sys||getresgid(gid_t *rgid, gid_t *egid, \ 317 gid_t *sgid); } 318171 UNIMPL prctl 319172 STD { int|linux_sys||rt_sigreturn( \ 320 struct linux_rt_sigframe *sfp); } 321173 STD { int|linux_sys||rt_sigaction(int signum, \ 322 const struct linux_sigaction *nsa, \ 323 struct linux_sigaction *osa, \ 324 size_t sigsetsize); } 325174 STD { int|linux_sys||rt_sigprocmask(int how, \ 326 const linux_sigset_t *set, \ 327 linux_sigset_t *oset, \ 328 size_t sigsetsize); } 329175 STD { int|linux_sys||rt_sigpending( \ 330 linux_sigset_t *set, \ 331 size_t sigsetsize); } 332176 UNIMPL rt_sigtimedwait 333177 STD { int|linux_sys||rt_queueinfo(int pid, int signum, \ 334 linux_siginfo_t *uinfo); } 335178 STD { int|linux_sys||rt_sigsuspend(linux_sigset_t *unewset, \ 336 size_t sigsetsize); } 337179 STD { int|linux_sys||pread(int fd, char *buf, \ 338 size_t nbyte, linux_off_t offset); } 339180 STD { int|linux_sys||pwrite(int fd, char *buf, \ 340 size_t nbyte, linux_off_t offset); } 341181 NOARGS { int|sys||__posix_chown(const char *path, \ 342 int uid, int gid); } 343182 NOARGS { int|sys||__getcwd(char *bufp, size_t length); } 344183 UNIMPL capget 345184 UNIMPL capset 346185 STD { int|linux_sys||sigaltstack( \ 347 const struct linux_sigaltstack *ss, \ 348 struct linux_sigaltstack *oss); } 349186 UNIMPL sendfile 350187 UNIMPL getpmsg 351188 UNIMPL putpmsg 352189 NOARGS { int|sys|14|vfork(void); } 353190 STD { int|linux_sys||ugetrlimit(int which, \ 354 struct rlimit *rlp); } 355191 UNIMPL /* unused */ 356#define linux_sys_mmap2_args linux_sys_mmap_args 357192 NOARGS { linux_off_t|linux_sys||mmap2(unsigned long addr, \ 358 size_t len, int prot, int flags, int fd, \ 359 linux_off_t offset); } 360193 STD { int|linux_sys||truncate64(const char *path, \ 361 off_t length); } 362194 STD { int|linux_sys||ftruncate64(unsigned int fd, \ 363 off_t length); } 364195 STD { int|linux_sys||stat64(const char *path, \ 365 struct linux_stat64 *sp); } 366196 STD { int|linux_sys||lstat64(const char *path, \ 367 struct linux_stat64 *sp); } 368197 STD { int|linux_sys||fstat64(int fd, \ 369 struct linux_stat64 *sp); } 370198 UNIMPL sys_pciconfig_read 371199 UNIMPL sys_pciconfig_write 372200 UNIMPL sys_pciconfig_iobase 373201 UNIMPL /* Unused (MacOnLinux project) */ 374202 STD { int|linux_sys||getdents64(int fd, \ 375 struct linux_dirent64 *dent, unsigned int count); } 376203 UNIMPL pivot_root 377204 STD { int|linux_sys||fcntl64(int fd, int cmd, void *arg); } 378205 NOARGS { int|sys||mincore(void *addr, size_t len, char *vec); } 379206 NOARGS { int|sys||madvise(void *addr, size_t len, int behav); } 380207 UNIMPL gettid 381208 UNIMPL tkill 382209 STD { int|linux_sys||setxattr(char *path, char *name, \ 383 void *value, size_t size, int flags); } 384210 STD { int|linux_sys||lsetxattr(char *path, char *name, \ 385 void *value, size_t size, int flags); } 386211 STD { int|linux_sys||fsetxattr(int fd, char *name, \ 387 void *value, size_t size, int flags); } 388212 STD { ssize_t|linux_sys||getxattr(char *path, char *name, \ 389 void *value, size_t size); } 390213 STD { ssize_t|linux_sys||lgetxattr(char *path, char *name, \ 391 void *value, size_t size); } 392214 STD { ssize_t|linux_sys||fgetxattr(int fd, char *name, \ 393 void *value, size_t size); } 394215 STD { ssize_t|linux_sys||listxattr(char *path, char *list, \ 395 size_t size); } 396216 STD { ssize_t|linux_sys||llistxattr(char *path, char *list, \ 397 size_t size); } 398217 STD { ssize_t|linux_sys||flistxattr(int fd, char *list, \ 399 size_t size); } 400218 STD { int|linux_sys||removexattr(char *path, char *name); } 401219 STD { int|linux_sys||lremovexattr(char *path, char *name); } 402220 STD { int|linux_sys||fremovexattr(int fd, char *name); } 403221 UNIMPL futex 404222 UNIMPL sched_setaffinity 405223 UNIMPL sched_getaffinity 406224 UNIMPL /* unused */ 407225 UNIMPL tuxcall 408226 UNIMPL sendfile64 409227 UNIMPL io_setup 410228 UNIMPL io_destroy 411229 UNIMPL io_getevents 412230 UNIMPL io_submit 413231 UNIMPL io_cancel 414232 UNIMPL set_tid_address 415233 UNIMPL fadvise64 416234 STD { int|linux_sys||exit_group(int error_code); } 417235 UNIMPL lookup_dcookie 418236 UNIMPL epoll_create 419237 UNIMPL epoll_ctl 420238 UNIMPL epoll_wait 421239 UNIMPL remap_file_pages 422240 UNIMPL timer_create 423241 UNIMPL timer_settime 424242 UNIMPL timer_gettime 425243 UNIMPL timer_getoverrun 426244 UNIMPL timer_delete 427245 STD { int|linux_sys||clock_settime(clockid_t which, \ 428 struct linux_timespec *tp); } 429246 STD { int|linux_sys||clock_gettime(clockid_t which, \ 430 struct linux_timespec *tp); } 431247 STD { int|linux_sys||clock_getres(clockid_t which, \ 432 struct linux_timespec *tp); } 433248 STD { int|linux_sys||clock_nanosleep(clockid_t which, \ 434 int flags, struct linux_timespec *rqtp, \ 435 struct linux_timespec *rmtp); } 436249 UNIMPL swapcontext 437250 UNIMPL tgkill 438251 UNIMPL utimes 439252 STD { int|linux_sys||statfs64(const char *path, \ 440 size_t sz, struct linux_statfs64 *sp); } 441253 STD { int|linux_sys||fstatfs64(int fd, \ 442 size_t sz, struct linux_statfs64 *sp); } 443254 UNIMPL fadvise64_64 444255 UNIMPL rtas 445256 UNIMPL /* reserved for sys_debug_setcontext */ 446257 UNIMPL /* reserved for vserver */ 447258 UNIMPL /* reserved for new sys_remap_file_pages */ 448259 UNIMPL /* reserved for new sys_mbind */ 449260 UNIMPL /* reserved for new sys_get_mempolicy */ 450261 UNIMPL /* reserved for new sys_set_mempolicy */ 451262 UNIMPL mq_open 452263 UNIMPL mq_unlink 453264 UNIMPL mq_timedsend 454265 UNIMPL mq_timedreceive 455266 UNIMPL mq_notify 456267 UNIMPL mq_getsetattr 457268 UNIMPL kexec_load 458