From: Nicholas Nethercote Date: Wed, 10 Nov 2004 17:43:43 +0000 (+0000) Subject: Arch-abstraction: syscall overhauling. X-Git-Tag: svn/VALGRIND_3_0_0~1357 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=29fccd1d396eadaebf1768f4cab2cf895b3bed9a;p=thirdparty%2Fvalgrind.git Arch-abstraction: syscall overhauling. - Reordered the table according to the __NR_xxx numbering order, which is the order the final versions (there will be one per architecture) will be in. This shows clearly which syscalls we don't have wrappers for. - Annotated each entry with its number and the sys_foo() function that it calls. This will be useful as I convert them all to the new regime. For the same reason, I marked the ones that are generic across all Linux's architectures. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2955 --- diff --git a/coregrind/vg_syscalls.c b/coregrind/vg_syscalls.c index bab8b2c782..ba080f5eaf 100644 --- a/coregrind/vg_syscalls.c +++ b/coregrind/vg_syscalls.c @@ -5761,267 +5761,402 @@ static void bad_after(ThreadId tid, ThreadState *tst) static const struct sys_info bad_sys = { False, bad_before, bad_after }; -static const struct sys_info special_sys[] = { - /* special */ - SYSB_(exit_group, 0), - SYSB_(exit, 0), - SYSB_(clone, 0), - SYSB_(modify_ldt, 0), - SYSB_(set_thread_area, 0), - SYSB_(get_thread_area, 0), - SYSB_(set_tid_address, 0), - SYSB_(execve, 0), - SYSB_(brk, 0), - SYSB_(mmap, 0), - SYSB_(mremap, 0), +// XXX: temporary: I've started labelled each entry with the target of its +// __NR_foo-->sys_foo() mapping, and the __NR_foo number (for x86), and +// marked those that are generic (ie. present in +// linux-2.6.8.1/include/linux/syscalls.h) with a '*', and non-generic ones +// with an indication of which architecture they are specific to. +// Those with "##" are generic, but within a "#ifdef CONFIG_UID16". +// Those with "%%" are generic, but within a "#if BITS_PER_LONG == 32" - SYSB_(io_setup, 0), - SYSB_(io_destroy, 0), +// XXX: this does duplicate the vki_unistd.h file somewhat -- could make +// this table replace that somehow... + +static const struct sys_info special_sys[] = { + /* special */ + SYSB_(exit, 0), // 1 sys_exit * + SYSB_(execve, 0), // 11 sys_execve + SYSB_(brk, 0), // 45 sys_brk * + SYSB_(mmap, 0), // 90 old_mmap + SYSB_(clone, 0), // 120 sys_clone (very non-gen) + + SYSB_(modify_ldt, 0), // 123 sys_modify_ldt (x86,amd64) + SYSB_(mremap, 0), // 163 sys_mremap * + SYSB_(set_thread_area, 0), // 243 sys_set_thread_area + SYSB_(get_thread_area, 0), // 244 sys_get_thread_area + SYSB_(io_setup, 0), // 245 sys_io_setup * + + SYSB_(io_destroy, 0), // 246 sys_io_destroy * + SYSB_(exit_group, 0), // 252 sys_exit_group * + SYSB_(set_tid_address, 0), // 258 sys_set_tid_address * #if SIGNAL_SIMULATION - SYSBA(sigaltstack, 0), - SYSBA(rt_sigaction, 0), - SYSBA(sigaction, 0), - SYSBA(rt_sigprocmask, 0), - SYSBA(sigprocmask, 0), + SYSBA(sigaction, 0), // 67 sys_sigaction + SYSBA(sigprocmask, 0), // 126 sys_sigprocmask * + SYSBA(rt_sigaction, 0), // 174 sys_rt_sigaction + SYSBA(rt_sigprocmask, 0), // 175 sys_rt_sigprocmask * + SYSBA(sigaltstack, 0), // 186 sys_sigaltstack #endif /* SIGNAL_SIMULATION */ }; #define MAX_SPECIAL_SYS (sizeof(special_sys)/sizeof(special_sys[0])) +// This table maps from __NR_xxx syscall numbers to the appropriate +// PRE/POST sys_foo() wrappers on x86. static const struct sys_info sys_info[] = { - SYSBA(ptrace, 0), - SYSX_(__NR_mount, sys_mount, MayBlock), - SYSB_(umount, 0), - - SYSB_(setresgid, 0), - SYSB_(vhangup, 0), - SYSB_(iopl, 0), - - SYSB_(setxattr, MayBlock), - SYSB_(lsetxattr, MayBlock), - SYSB_(fsetxattr, MayBlock), - SYSBA(getxattr, MayBlock), - SYSBA(lgetxattr, MayBlock), - SYSBA(fgetxattr, MayBlock), - SYSBA(listxattr, MayBlock), - SYSBA(llistxattr, MayBlock), - SYSBA(flistxattr, MayBlock), - SYSB_(removexattr, MayBlock), - SYSB_(lremovexattr, MayBlock), - SYSB_(fremovexattr, MayBlock), - - SYSB_(quotactl, 0), - SYSBA(lookup_dcookie, 0), - - SYSB_(truncate64, MayBlock), - SYSB_(fdatasync, MayBlock), - SYSB_(msync, MayBlock), - - SYSBA(getpmsg, MayBlock), - SYSB_(putpmsg, MayBlock), - - SYSBA(syslog, MayBlock), - SYSB_(personality, 0), - SYSB_(chroot, 0), - SYSB_(madvise, MayBlock), - SYSB_(nice, 0), - SYSB_(setresgid32, 0), - SYSB_(setfsuid32, 0), - SYSBA(_sysctl, 0), - - SYSB_(sched_getscheduler, 0), /* ??? */ - SYSB_(sched_setscheduler, 0), /* ??? */ - - SYSB_(mlock, MayBlock), - SYSB_(munlock, MayBlock), - SYSB_(mlockall, MayBlock), - SYSB_(munlockall, MayBlock), - - SYSB_(sched_get_priority_max, 0), /* ??? */ - SYSB_(sched_get_priority_min, 0), /* ??? */ - - SYSB_(setpriority, 0), - SYSB_(getpriority, 0), - - SYSB_(setfsgid, 0), - SYSB_(setregid, 0), - SYSB_(setresuid, 0), - SYSB_(setfsuid, 0), - - SYSBA(sendfile, MayBlock), - SYSBA(sendfile64, MayBlock), - SYSB_(pwrite64, MayBlock), - SYSB_(sync, MayBlock), - SYSBA(fstatfs, 0), - SYSBA(fstatfs64, 0), - SYSB_(getsid, 0), - SYSBA(pread64, MayBlock), - SYSB_(mknod, 0), - SYSB_(flock, MayBlock), - SYSB_(init_module, MayBlock), - SYSB_(ioperm, 0), - SYSBA(capget, 0), - SYSB_(capset, 0), - SYSB_(access, 0), - SYSB_(chdir, 0), - SYSB_(chmod, 0), - SYSB_(chown32, 0), - SYSB_(lchown32, 0), - SYSB_(chown, 0), - SYSBA(close, 0), - SYSBA(dup, 0), - SYSBA(dup2, 0), - SYSBA(fcntl, 0), - SYSB_(fchdir, 0), - SYSB_(fchown32, 0), - SYSB_(fchown, 0), - SYSB_(fchmod, 0), - SYSBA(fcntl64, 0), - SYSBA(fstat, 0), - SYSBA(fork, 0), - SYSB_(fsync, MayBlock), - SYSB_(ftruncate, MayBlock), - SYSB_(ftruncate64, MayBlock), - SYSBA(getdents, MayBlock), - SYSBA(getdents64, MayBlock), - SYSBA(getgroups32, 0), - SYSBA(getgroups, 0), - SYSBA(getcwd, 0), - SYSB_(geteuid, 0), - SYSB_(geteuid32, 0), - SYSB_(getegid, 0), - SYSB_(getegid32, 0), - SYSB_(getgid, 0), - SYSB_(getgid32, 0), - SYSX_(__NR_getpid, sys_getpid, 0), - SYSB_(getpgid, 0), - SYSB_(getpgrp, 0), - SYSX_(__NR_getppid, sys_getppid, 0), - SYSBA(getresgid, 0), - SYSBA(getresgid32, 0), - SYSBA(getresuid, 0), - SYSBA(getresuid32, 0), - SYSBA(ugetrlimit, 0), - SYSBA(getrlimit, 0), - SYSBA(getrusage, 0), - SYSBA(gettimeofday, 0), - SYSB_(getuid, 0), - SYSB_(getuid32, 0), - SYSBA(ipc, 0), - SYSBA(ioctl, MayBlock), - SYSBA(kill, 0), - SYSB_(link, MayBlock), - SYSB_(lseek, 0), - SYSBA(_llseek, 0), - SYSBA(lstat, 0), - SYSBA(lstat64, 0), - SYSB_(mkdir, MayBlock), - SYSBA(mprotect, 0), - SYSBA(munmap, 0), - SYSBA(mincore, 0), - SYSBA(nanosleep, MayBlock|PostOnFail), - SYSB_(_newselect, MayBlock), - SYSXY(__NR_open, sys_open, MayBlock), - SYSXY(__NR_read, sys_read, MayBlock), - SYSX_(__NR_write, sys_write, MayBlock), - SYSBA(creat, MayBlock), - SYSBA(pipe, 0), - SYSBA(poll, MayBlock), - SYSBA(epoll_create, 0), - SYSB_(epoll_ctl, 0), - SYSBA(epoll_wait, MayBlock), - SYSBA(readlink, 0), - SYSBA(readv, MayBlock), - SYSB_(rename, 0), - SYSB_(rmdir, MayBlock), - SYSBA(sched_setparam, 0), /* ??? */ - SYSBA(sched_getparam, 0), /* ??? */ - SYSB_(sched_yield, 0), /* ??? */ - SYSB_(select, MayBlock), - SYSB_(setfsgid32, 0), - SYSB_(setgid32, 0), - SYSB_(setgid, 0), - SYSB_(setsid, 0), - SYSB_(setgroups32, 0), - SYSB_(setgroups, 0), - SYSBA(setpgid, 0), - SYSB_(setregid32, 0), - SYSB_(setresuid32, 0), - SYSB_(setreuid32, 0), - SYSB_(setreuid, 0), - SYSB_(setrlimit, 0), - SYSB_(settimeofday, 0), - SYSB_(setuid32, 0), - SYSB_(setuid, 0), - SYSBA(socketcall, MayBlock), - SYSBA(stat, 0), - SYSBA(statfs, 0), - SYSBA(statfs64, 0), - SYSB_(symlink, MayBlock), - SYSBA(stat64, 0), - SYSBA(fstat64, 0), - SYSBA(sysinfo, 0), - SYSBA(time, 0), - SYSBA(times, 0), - SYSB_(truncate, MayBlock), - SYSB_(umask, 0), - SYSB_(unlink, MayBlock), - SYSBA(uname, 0), - SYSB_(utime, MayBlock), - SYSB_(utimes, 0), - SYSBA(waitpid, MayBlock), - SYSBA(wait4, MayBlock), - SYSB_(writev, MayBlock), - SYSB_(prctl, MayBlock), - SYSBA(adjtimex, 0), - SYSBA(mmap2, 0), - SYSBA(futex, MayBlock), - SYSB_(sched_setaffinity, 0), - SYSBA(sched_getaffinity, 0), - SYSB_(acct, 0), - - /* new signal handling makes these normal blocking syscalls */ - SYSB_(pause, MayBlock), - SYSB_(sigsuspend, MayBlock), - SYSB_(rt_sigsuspend, MayBlock), - SYSBA(rt_sigtimedwait, MayBlock), - SYSBA(rt_sigqueueinfo, 0), - - SYSBA(sigpending, MayBlock), /* not blocking, but must run in LWP context */ - SYSBA(rt_sigpending, MayBlock), /* not blocking, but must run in LWP context */ - SYSB_(alarm, MayBlock), /* not blocking, but must run in LWP context */ - SYSBA(setitimer, MayBlock), /* not blocking, but must run in LWP context */ - SYSBA(getitimer, MayBlock), /* not blocking, but must run in LWP context */ - - SYSBA(io_getevents, MayBlock), - SYSB_(io_submit, 0), - SYSBA(io_cancel, 0), - - SYSBA(mq_open, 0), - SYSB_(mq_unlink, 0), - SYSB_(mq_timedsend, MayBlock), - SYSBA(mq_timedreceive, MayBlock), - SYSB_(mq_notify, 0), - SYSBA(mq_getsetattr, 0), - - SYSBA(timer_create, 0), - SYSBA(timer_settime, 0), - SYSBA(timer_gettime, 0), - SYSB_(timer_getoverrun, 0), - SYSB_(timer_delete, 0), - - SYSB_(clock_settime, 0), - SYSBA(clock_gettime, 0), - SYSBA(clock_getres, 0), + // 0 is restart_syscall + // 1 exit special + SYSBA(fork, 0), // 2 sys_fork + SYSXY(__NR_read, sys_read, MayBlock), // 3 * + SYSX_(__NR_write, sys_write, MayBlock), // 4 * + + SYSXY(__NR_open, sys_open, MayBlock), // 5 * + SYSBA(close, 0), // 6 sys_close * + SYSBA(waitpid, MayBlock), // 7 sys_waitpid * + SYSBA(creat, MayBlock), // 8 sys_creat * + SYSB_(link, MayBlock), // 9 sys_link * + + SYSB_(unlink, MayBlock), // 10 sys_unlink * + // 11 execve special + SYSB_(chdir, 0), // 12 sys_chdir * + SYSBA(time, 0), // 13 sys_time * + SYSB_(mknod, 0), // 14 sys_mknod * + + SYSB_(chmod, 0), // 15 sys_chmod * + // lchown 16 sys_lchown16 ## + // break 17 sys_ni_syscall + // oldstat 18 sys_stat * + SYSB_(lseek, 0), // 19 sys_lseek * + + SYSX_(__NR_getpid, sys_getpid, 0), // 20 sys_getpid * + SYSX_(__NR_mount, sys_mount, MayBlock), // 21 sys_mount * + SYSB_(umount, 0), // 22 sys_oldumount * + SYSB_(setuid, 0), // 23 sys_setuid16 ## + SYSB_(getuid, 0), // 24 sys_getuid16 ## + + // stime 25 sys_stime * + SYSBA(ptrace, 0), // 26 sys_ptrace + SYSB_(alarm, MayBlock), /* not blocking, but must run in LWP context */ // 27 sys_alarm * + // oldfstat 28 sys_fstat * + SYSB_(pause, MayBlock), // 29 sys_pause * + + SYSB_(utime, MayBlock), // 30 sys_utime * + // stty 31 sys_ni_syscall + // gtty 32 sys_ni_syscall + SYSB_(access, 0), // 33 sys_access * + SYSB_(nice, 0), // 34 sys_nice * + // ftime 35 sys_ni_syscall + + SYSB_(sync, MayBlock), // 36 sys_sync * + SYSBA(kill, 0), // 37 sys_kill * + SYSB_(rename, 0), // 38 sys_rename * + SYSB_(mkdir, MayBlock), // 39 sys_mkdir * + + SYSB_(rmdir, MayBlock), // 40 sys_rmdir * + SYSBA(dup, 0), // 41 sys_dup * + SYSBA(pipe, 0), // 42 sys_pipe + SYSBA(times, 0), // 43 sys_times * + // prof 44 sys_ni_syscall + // 45 brk special + + SYSB_(setgid, 0), // 46 sys_setgid16 ## + SYSB_(getgid, 0), // 47 sys_getgid16 ## + // signal 48 sys_signal * + SYSB_(geteuid, 0), // 49 sys_geteuid16 ## + + SYSB_(getegid, 0), // 50 sys_getegid16 ## + SYSB_(acct, 0), // 51 sys_acct * + // umount2 52 sys_umount + // lock 53 sys_ni_syscall + SYSBA(ioctl, MayBlock), // 54 sys_ioctl * + + SYSBA(fcntl, 0), // 55 sys_fcntl * + // mpx 56 sys_ni_syscall + SYSBA(setpgid, 0), // 57 sys_setpgid * + // ulimit 58 // sys_ni_syscall + // oldolduname 59 sys_olduname + + SYSB_(umask, 0), // 60 sys_umask * + SYSB_(chroot, 0), // 61 sys_chroot * + // ustat 62 sys_ustat * + SYSBA(dup2, 0), // 63 sys_dup2 * + SYSX_(__NR_getppid, sys_getppid, 0), // 64 sys_getppid * + + SYSB_(getpgrp, 0), // 65 sys_getpgrp * + SYSB_(setsid, 0), // 66 sys_setsid * + // 67 sigaction SIG + // sgetmask 68 sys_sgetmask * + // ssetmask 69 sys_ssetmask * + + SYSB_(setreuid, 0), // 70 sys_setreuid16 ## + SYSB_(setregid, 0), // 71 sys_setregid16 ## + SYSB_(sigsuspend, MayBlock), // 72 sys_sigsuspend + SYSBA(sigpending, MayBlock), /* not blocking, but must run in LWP context */ // 73 sys_sigpending * + // sethostname 74 sys_sethostname * + + SYSB_(setrlimit, 0), // 75 sys_setrlimit * + SYSBA(getrlimit, 0), // 76 sys_old_getrlimit * + SYSBA(getrusage, 0), // 77 sys_getrusage * + SYSBA(gettimeofday, 0), // 78 sys_gettimeofday * + SYSB_(settimeofday, 0), // 79 sys_settimeofday * + + SYSBA(getgroups, 0), // 80 sys_getgroups16 ## + SYSB_(setgroups, 0), // 81 sys_setgroups16 ## + SYSB_(select, MayBlock), // 82 old_select + SYSB_(symlink, MayBlock), // 83 sys_symlink * + // oldlstat 84 sys_lstat * + + SYSBA(readlink, 0), // 85 sys_readlink * + // uselib 86 sys_uselib * + // swapon 87 sys_swapon * + // reboot 88 sys_reboot * + // readdir 89 old_readdir + + // mmap 90 special + SYSBA(munmap, 0), // 91 sys_munmap * + SYSB_(truncate, MayBlock), // 92 sys_truncate * + SYSB_(ftruncate, MayBlock), // 93 sys_ftruncate * + SYSB_(fchmod, 0), // 94 sys_fchmod * + + SYSB_(fchown, 0), // 95 sys_fchown16 ## + SYSB_(getpriority, 0), // 96 sys_getpriority * + SYSB_(setpriority, 0), // 97 sys_setpriority * + // profil 98 + SYSBA(statfs, 0), // 99 sys_statfs * + + SYSBA(fstatfs, 0), // 100 sys_fstatfs * + SYSB_(ioperm, 0), // 101 sys_ioperm * + SYSBA(socketcall, MayBlock), // 102 sys_socketcall * + SYSBA(syslog, MayBlock), // 103 sys_syslog * + SYSBA(setitimer, MayBlock), /* not blocking, but must run in LWP context */ // 104 sys_setitimer * + + SYSBA(getitimer, MayBlock), /* not blocking, but must run in LWP context */ // 105 sys_getitimer * + SYSBA(stat, 0), // 106 sys_newstat * + SYSBA(lstat, 0), // 107 sys_newlstat * + SYSBA(fstat, 0), // 108 sys_newfstat * + // olduname 109 sys_uname + + SYSB_(iopl, 0), // 110 sys_iopl + SYSB_(vhangup, 0), // 111 sys_vhangup * + // idle 112 sys_ni_syscall + // vm86old 113 sys_vm86old + SYSBA(wait4, MayBlock), // 114 sys_wait4 * + + // swapoff 115 sys_swapoff * + SYSBA(sysinfo, 0), // 116 sys_sysinfo * + SYSBA(ipc, 0), // 117 sys_ipc + SYSB_(fsync, MayBlock), // 118 sys_fsync * + // sigreturn 119 sys_sigreturn + + // 120 clone special + // setdomainname 121 sys_setdomainname * + SYSBA(uname, 0), // 122 sys_newuname * + // 123 modify_ldt special + SYSBA(adjtimex, 0), // 124 sys_adjtimex * + SYSBA(mprotect, 0), // 125 sys_mprotect * + + // 126 sigprocmask SIG + // XXX: create_module was removed 2.4-->2.6 + // create_module 127 sys_ni_syscall + SYSB_(init_module, MayBlock), // 128 sys_init_module * + // delete_module 129 sys_delete_module * + // XXX: get_kernel_syms was removed 2.4-->2.6 + // get_kernel_syms 130 sys_ni_syscall + + SYSB_(quotactl, 0), // 131 sys_quotactl * + SYSB_(getpgid, 0), // 132 sys_getpgid * + SYSB_(fchdir, 0), // 133 sys_fchdir * + // bdflush 134 sys_bdflush * + // sysfs 135 sys_sysfs * + SYSB_(personality, 0), // 136 sys_personality * + + // afs_syscall 137 sys_ni_syscall + SYSB_(setfsuid, 0), // 138 sys_setfsuid16 ## + SYSB_(setfsgid, 0), // 139 sys_setfsgid16 ## + + SYSBA(_llseek, 0), // 140 sys_llseek * + SYSBA(getdents, MayBlock), // 141 sys_getdents * + SYSB_(_newselect, MayBlock), // 142 sys_select * + SYSB_(flock, MayBlock), // 143 sys_flock * + SYSB_(msync, MayBlock), // 144 sys_msync * + + SYSBA(readv, MayBlock), // 145 sys_readv * + SYSB_(writev, MayBlock), // 146 sys_writev * + SYSB_(getsid, 0), // 147 sys_getsid * + SYSB_(fdatasync, MayBlock), // 148 sys_fdatasync * + SYSBA(_sysctl, 0), // 149 sys_sysctl * + + SYSB_(mlock, MayBlock), // 150 sys_mlock * + SYSB_(munlock, MayBlock), // 151 sys_unlock * + SYSB_(mlockall, MayBlock), // 152 sys_mlockall * + SYSB_(munlockall, MayBlock), // 153 sys_munlockall * + SYSBA(sched_setparam, 0), /* ??? */ // 154 sys_sched_setparam * + + SYSBA(sched_getparam, 0), /* ??? */ // 155 sys_sched_getparam * + SYSB_(sched_setscheduler, 0), /* ??? */ // 156 sys_sched_setscheduler * + SYSB_(sched_getscheduler, 0), /* ??? */ // 157 sys_sched_getscheduler * + SYSB_(sched_yield, 0), /* ??? */ // 158 sys_sched_yield * + SYSB_(sched_get_priority_max, 0), /* ??? */ // 159 sys_sched_get_priority_max * + + SYSB_(sched_get_priority_min, 0), /* ??? */ // 160 sys_sched_get_priority_min * + // sched_rr_get_interval 161 sys_sched_rr_get_interval * + SYSBA(nanosleep, MayBlock|PostOnFail), // 162 sys_nanosleep * + // 163 mremap special + SYSB_(setresuid, 0), // 164 sys_setresuid16 ## + + SYSBA(getresuid, 0), // 165 sys_getresuid16 ## + // vm86 166 sys_vm86 + // query_module 167 sys_ni_syscall + SYSBA(poll, MayBlock), // 168 sys_poll * + // nfsservctl 169 sys_nfsservctl * + + SYSB_(setresgid, 0), // 170 sys_setresgid16 ## + SYSBA(getresgid, 0), // 171 sys_getresgid16 ## + SYSB_(prctl, MayBlock), // 172 sys_prctl * + // rt_sigreturn 173 sys_rt_sigreturn + // 174 SIG + + // 175 SIG + SYSBA(rt_sigpending, MayBlock), /* not blocking, but must run in LWP context */ // 176 sys_rt_sigpending * + SYSBA(rt_sigtimedwait, MayBlock), // 177 sys_rt_sigtimedwait * + SYSBA(rt_sigqueueinfo, 0), // 178 sys_rt_sigqueueinfo * + SYSB_(rt_sigsuspend, MayBlock), // 179 sys_sigsuspend + SYSBA(pread64, MayBlock), // 180 sys_pread64 * + + SYSB_(pwrite64, MayBlock), // 181 sys_pwrite64 * + SYSB_(chown, 0), // 182 sys_chown16 + SYSBA(getcwd, 0), // 183 sys_getcwd * + SYSBA(capget, 0), // 184 sys_capget * + + SYSB_(capset, 0), // 185 sys_capset * + // 186 SIG + SYSBA(sendfile, MayBlock), // 187 sys_sendfile * + SYSBA(getpmsg, MayBlock), // 188 sys_ni_syscall ... + SYSB_(putpmsg, MayBlock), // 189 sys_ni_syscall ... + + // vfork 190 sys_vfork + SYSBA(ugetrlimit, 0), // 191 sys_getrlimit * + SYSBA(mmap2, 0), // 192 sys_mmap2 + SYSB_(truncate64, MayBlock), // 193 sys_truncate64 %% + SYSB_(ftruncate64, MayBlock), // 194 sys_ftruncate64 %% + + SYSBA(stat64, 0), // 195 sys_stat64 %% + SYSBA(lstat64, 0), // 196 sys_lstat64 %% + SYSBA(fstat64, 0), // 197 sys_fstat64 %% + SYSB_(lchown32, 0), // 198 sys_lchown * + SYSB_(getuid32, 0), // 199 sys_getuid * + + SYSB_(getgid32, 0), // 200 sys_getgid * + SYSB_(geteuid32, 0), // 201 sys_geteuid * + SYSB_(getegid32, 0), // 202 sys_getegid * + SYSB_(setreuid32, 0), // 203 sys_setreuid * + SYSB_(setregid32, 0), // 204 sys_setregid * + + SYSBA(getgroups32, 0), // 205 sys_getgroups * + SYSB_(setgroups32, 0), // 206 sys_setgroups * + SYSB_(fchown32, 0), // 207 sys_fchown * + SYSB_(setresuid32, 0), // 208 sys_setresuid * + SYSBA(getresuid32, 0), // 209 sys_getresuid * + + SYSB_(setresgid32, 0), // 210 sys_setresgid * + SYSBA(getresgid32, 0), // 211 sys_getresgid * + SYSB_(chown32, 0), // 212 sys_chown * + SYSB_(setuid32, 0), // 213 sys_setuid * + SYSB_(setgid32, 0), // 214 sys_setgid * + + SYSB_(setfsuid32, 0), // 215 sys_setfsuid * + SYSB_(setfsgid32, 0), // 216 sys_setfsgid * + // pivot_root 217 sys_pivot_root * + SYSBA(mincore, 0), // 218 sys_mincore * + SYSB_(madvise, MayBlock), // 219 /* Also called __NR_madvise1 */ sys_madvise * + + SYSBA(getdents64, MayBlock), // 220 sys_getdents64 * + + // XXX: This wrapped in a "#if BITS_PER_LONG == 32" in + // include/linux/syscalls.h... + SYSBA(fcntl64, 0), // 221 sys_fcntl64 * + + // 222 reserved for TUX sys_ni_syscall + /* 223 is unused */ // sys_ni_syscall + // gettid 224 sys_gettid * + + // readahead 225 sys_readahead * + SYSB_(setxattr, MayBlock), // 226 sys_setxattr * + SYSB_(lsetxattr, MayBlock), // 227 sys_lsetxattr * + SYSB_(fsetxattr, MayBlock), // 228 sys_fsetxattr * + SYSBA(getxattr, MayBlock), // 229 sys_getxattr * + + SYSBA(lgetxattr, MayBlock), // 230 sys_lgetxattr * + SYSBA(fgetxattr, MayBlock), // 231 sys_fgetxattr * + SYSBA(listxattr, MayBlock), // 232 sys_listxattr * + SYSBA(llistxattr, MayBlock), // 233 sys_llistxattr * + SYSBA(flistxattr, MayBlock), // 234 sys_flistxattr * + + SYSB_(removexattr, MayBlock), // 235 sys_removexattr * + SYSB_(lremovexattr, MayBlock), // 236 sys_lremovexattr * + SYSB_(fremovexattr, MayBlock), // 237 sys_fremovexattr * + // tkill 238 sys_tkill * + SYSBA(sendfile64, MayBlock), // 239 sys_sendfile64 * + + SYSBA(futex, MayBlock), // 240 sys_futex * + SYSB_(sched_setaffinity, 0), // 241 sys_sched_setaffinity * + SYSBA(sched_getaffinity, 0), // 242 sys_sched_getaffinity * + // 243, 244 special + + // 245, 246 special + SYSBA(io_getevents, MayBlock), // 247 sys_io_getevents * + SYSB_(io_submit, 0), // 248 sys_io_submit * + SYSBA(io_cancel, 0), // 249 sys_io_cancel * + + // fadvise64 250 sys_fadvise64 * + // 251 is empty... // sys_ni_syscall + // 252 exit_group special + SYSBA(lookup_dcookie, 0), // 253 sys_lookup_dcookie * + SYSBA(epoll_create, 0), // 254 sys_epoll_create * + + SYSB_(epoll_ctl, 0), // 255 sys_epoll_ctl * + SYSBA(epoll_wait, MayBlock), // 256 sys_epoll_wait * + // remap_file_pages 257 sys_remap_file_pages * + // 258 set_tid_address special + SYSBA(timer_create, 0), // 259 sys_timer_create + + SYSBA(timer_settime, 0), // (timer_create+1) sys_timer_settime * + SYSBA(timer_gettime, 0), // (timer_create+2) sys_timer_gettime * + SYSB_(timer_getoverrun, 0), // (timer_create+3) sys_timer_getoverrun * + SYSB_(timer_delete, 0), // (timer_create+4) sys_timer_delete * + SYSB_(clock_settime, 0), // (timer_create+5) sys_clock_settime * + + SYSBA(clock_gettime, 0), // (timer_create+6) sys_clock_gettime * + SYSBA(clock_getres, 0), // (timer_create+7) sys_clock_getres * + // clock_nanosleep (timer_create+8) sys_clock_nanosleep * + SYSBA(statfs64, 0), // 268 sys_statfs64 * + SYSBA(fstatfs64, 0), // 269 sys_fstatfs64 * + + // tgkill 270 sys_tgkill * + SYSB_(utimes, 0), // 271 sys_utimes * + + // fadvise64_64 272 sys_fadvise64_64 * + // vserver 273 sys_ni_syscall + // mbind 274 sys_mbind + + // get_mempolicy 275 sys_get_mempolicy + // set_mempolicy 276 sys_set_mempolicy + SYSBA(mq_open, 0), // 277 sys_mq_open * + SYSB_(mq_unlink, 0), // (mq_open+1) sys_mq_unlink * + SYSB_(mq_timedsend, MayBlock), // (mq_open+2) sys_mq_timedsend * + + SYSBA(mq_timedreceive, MayBlock), // (mq_open+3) sys_mq_timedreceive * + SYSB_(mq_notify, 0), // (mq_open+4) sys_mq_notify * + SYSBA(mq_getsetattr, 0), // (mq_open+5) sys_mq_getsetarr * + // sys_kexec_load 283 sys_ni_syscall * #if !SIGNAL_SIMULATION - SYSBA(sigaltstack, 0), - SYSBA(rt_sigaction, 0), - SYSBA(sigaction, 0), - SYSBA(rt_sigprocmask, 0), - SYSBA(sigprocmask, 0), + SYSBA(sigaction, 0), // 67 + SYSBA(sigprocmask, 0), // 126 + SYSBA(rt_sigaction, 0), // 174 + SYSBA(rt_sigprocmask, 0), // 175 + SYSBA(sigaltstack, 0), // 186 #endif /* !SIGNAL_SIMULATION */ }; #define MAX_SYS_INFO (sizeof(sys_info)/sizeof(sys_info[0])) @@ -6029,6 +6164,9 @@ static const struct sys_info sys_info[] = { #undef SYSB_ #undef SYSBA +#undef SYSX_ +#undef SYSXY + /* --------------------------------------------------------------------- Executing the syscalls