From e4e75cba40505276eea496de7b93aefc9aa4c780 Mon Sep 17 00:00:00 2001 From: Julian Seward Date: Wed, 8 Jun 2005 00:02:49 +0000 Subject: [PATCH] Cleanup after m_syscalls changes: fix some NPTL ish syscalls (x86) git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3850 --- coregrind/m_syscalls/priv_syscalls-generic.h | 366 +++++++++---------- coregrind/m_syscalls/priv_syscalls-linux.h | 84 ++--- coregrind/m_syscalls/syscalls-generic.c | 6 - coregrind/m_syscalls/syscalls-linux.c | 205 ++++++----- coregrind/m_syscalls/syscalls-x86-linux.c | 29 +- 5 files changed, 346 insertions(+), 344 deletions(-) diff --git a/coregrind/m_syscalls/priv_syscalls-generic.h b/coregrind/m_syscalls/priv_syscalls-generic.h index e695cf481..9562dffe9 100644 --- a/coregrind/m_syscalls/priv_syscalls-generic.h +++ b/coregrind/m_syscalls/priv_syscalls-generic.h @@ -58,204 +58,202 @@ void VG_(mmap_segment) ( Addr a, SizeT len, UInt prot, UInt mm_flags, Int fd, ULong offset ); -DECL_TEMPLATE(generic,sys_ni_syscall); // * P -- unimplemented -DECL_TEMPLATE(generic,sys_exit); -DECL_TEMPLATE(generic,sys_fork); -DECL_TEMPLATE(generic,sys_read); -DECL_TEMPLATE(generic,sys_write); -DECL_TEMPLATE(generic,sys_open); -DECL_TEMPLATE(generic,sys_close); -DECL_TEMPLATE(generic,sys_waitpid); -DECL_TEMPLATE(generic,sys_creat); -DECL_TEMPLATE(generic,sys_link); -DECL_TEMPLATE(generic,sys_unlink); -DECL_TEMPLATE(generic,sys_execve); // (*??) P -DECL_TEMPLATE(generic,sys_chdir); -DECL_TEMPLATE(generic,sys_time); -DECL_TEMPLATE(generic,sys_mknod); -DECL_TEMPLATE(generic,sys_chmod); -DECL_TEMPLATE(generic,sys_lseek); -DECL_TEMPLATE(generic,sys_getpid); -DECL_TEMPLATE(generic,sys_alarm); -DECL_TEMPLATE(generic,sys_pause); -DECL_TEMPLATE(generic,sys_utime); -DECL_TEMPLATE(generic,sys_access); -DECL_TEMPLATE(generic,sys_kill); -DECL_TEMPLATE(generic,sys_rename); -DECL_TEMPLATE(generic,sys_mkdir); -DECL_TEMPLATE(generic,sys_rmdir); -DECL_TEMPLATE(generic,sys_dup); -DECL_TEMPLATE(generic,sys_times); -DECL_TEMPLATE(generic,sys_fcntl); // POSIX (but complicated) -DECL_TEMPLATE(generic,sys_setpgid); -DECL_TEMPLATE(generic,sys_umask); -DECL_TEMPLATE(generic,sys_dup2); -DECL_TEMPLATE(generic,sys_getppid); -DECL_TEMPLATE(generic,sys_getpgrp); -DECL_TEMPLATE(generic,sys_setsid); -DECL_TEMPLATE(generic,sys_munmap); -DECL_TEMPLATE(generic,sys_truncate); -DECL_TEMPLATE(generic,sys_ftruncate); -DECL_TEMPLATE(generic,sys_fchmod); -DECL_TEMPLATE(generic,sys_msync); -DECL_TEMPLATE(generic,sys_readv); -DECL_TEMPLATE(generic,sys_writev); -DECL_TEMPLATE(generic,sys_getsid); -DECL_TEMPLATE(generic,sys_fdatasync); -DECL_TEMPLATE(generic,sys_mlock); -DECL_TEMPLATE(generic,sys_munlock); -DECL_TEMPLATE(generic,sys_mlockall); -DECL_TEMPLATE(generic,sys_munlockall); -DECL_TEMPLATE(generic,sys_sched_setparam); -DECL_TEMPLATE(generic,sys_sched_getparam); -DECL_TEMPLATE(generic,sys_sched_rr_get_interval); -DECL_TEMPLATE(generic,sys_sched_setscheduler); -DECL_TEMPLATE(generic,sys_sched_getscheduler); -DECL_TEMPLATE(generic,sys_sched_yield); -DECL_TEMPLATE(generic,sys_sched_get_priority_max); -DECL_TEMPLATE(generic,sys_sched_get_priority_min); -DECL_TEMPLATE(generic,sys_nanosleep); -DECL_TEMPLATE(generic,sys_mremap); // POSIX, but Linux arg order may be odd -DECL_TEMPLATE(generic,sys_getuid); -DECL_TEMPLATE(generic,sys_getgid); -DECL_TEMPLATE(generic,sys_geteuid); -DECL_TEMPLATE(generic,sys_getegid); -DECL_TEMPLATE(generic,sys_getpgid); -DECL_TEMPLATE(generic,sys_fsync); -DECL_TEMPLATE(generic,sys_wait4); -DECL_TEMPLATE(generic,sys_mprotect); -DECL_TEMPLATE(generic,sys_sigprocmask); -DECL_TEMPLATE(generic,sys_timer_create); // Linux: varies across archs? -DECL_TEMPLATE(generic,sys_timer_settime); -DECL_TEMPLATE(generic,sys_timer_gettime); -DECL_TEMPLATE(generic,sys_timer_getoverrun); -DECL_TEMPLATE(generic,sys_timer_delete); -DECL_TEMPLATE(generic,sys_clock_settime); -DECL_TEMPLATE(generic,sys_clock_gettime); -DECL_TEMPLATE(generic,sys_clock_getres); -DECL_TEMPLATE(generic,sys_clock_nanosleep); -DECL_TEMPLATE(generic,sys_getcwd); -DECL_TEMPLATE(generic,sys_symlink); -DECL_TEMPLATE(generic,sys_getgroups); -DECL_TEMPLATE(generic,sys_setgroups); // SVr4, SVID, X/OPEN, 4.3BSD -DECL_TEMPLATE(generic,sys_chown); -DECL_TEMPLATE(generic,sys_setuid); -DECL_TEMPLATE(generic,sys_gettimeofday); -DECL_TEMPLATE(generic,sys_madvise); -DECL_TEMPLATE(generic,sys_sigpending); +DECL_TEMPLATE(generic, sys_ni_syscall); // * P -- unimplemented +DECL_TEMPLATE(generic, sys_exit); +DECL_TEMPLATE(generic, sys_fork); +DECL_TEMPLATE(generic, sys_read); +DECL_TEMPLATE(generic, sys_write); +DECL_TEMPLATE(generic, sys_open); +DECL_TEMPLATE(generic, sys_close); +DECL_TEMPLATE(generic, sys_waitpid); +DECL_TEMPLATE(generic, sys_creat); +DECL_TEMPLATE(generic, sys_link); +DECL_TEMPLATE(generic, sys_unlink); +DECL_TEMPLATE(generic, sys_execve); // (*??) P +DECL_TEMPLATE(generic, sys_chdir); +DECL_TEMPLATE(generic, sys_time); +DECL_TEMPLATE(generic, sys_mknod); +DECL_TEMPLATE(generic, sys_chmod); +DECL_TEMPLATE(generic, sys_lseek); +DECL_TEMPLATE(generic, sys_getpid); +DECL_TEMPLATE(generic, sys_alarm); +DECL_TEMPLATE(generic, sys_pause); +DECL_TEMPLATE(generic, sys_utime); +DECL_TEMPLATE(generic, sys_access); +DECL_TEMPLATE(generic, sys_kill); +DECL_TEMPLATE(generic, sys_rename); +DECL_TEMPLATE(generic, sys_mkdir); +DECL_TEMPLATE(generic, sys_rmdir); +DECL_TEMPLATE(generic, sys_dup); +DECL_TEMPLATE(generic, sys_times); +DECL_TEMPLATE(generic, sys_fcntl); // POSIX (but complicated) +DECL_TEMPLATE(generic, sys_setpgid); +DECL_TEMPLATE(generic, sys_umask); +DECL_TEMPLATE(generic, sys_dup2); +DECL_TEMPLATE(generic, sys_getppid); +DECL_TEMPLATE(generic, sys_getpgrp); +DECL_TEMPLATE(generic, sys_setsid); +DECL_TEMPLATE(generic, sys_munmap); +DECL_TEMPLATE(generic, sys_truncate); +DECL_TEMPLATE(generic, sys_ftruncate); +DECL_TEMPLATE(generic, sys_fchmod); +DECL_TEMPLATE(generic, sys_msync); +DECL_TEMPLATE(generic, sys_readv); +DECL_TEMPLATE(generic, sys_writev); +DECL_TEMPLATE(generic, sys_getsid); +DECL_TEMPLATE(generic, sys_fdatasync); +DECL_TEMPLATE(generic, sys_mlock); +DECL_TEMPLATE(generic, sys_munlock); +DECL_TEMPLATE(generic, sys_mlockall); +DECL_TEMPLATE(generic, sys_munlockall); +DECL_TEMPLATE(generic, sys_sched_setparam); +DECL_TEMPLATE(generic, sys_sched_getparam); +DECL_TEMPLATE(generic, sys_sched_rr_get_interval); +DECL_TEMPLATE(generic, sys_sched_setscheduler); +DECL_TEMPLATE(generic, sys_sched_getscheduler); +DECL_TEMPLATE(generic, sys_sched_yield); +DECL_TEMPLATE(generic, sys_sched_get_priority_max); +DECL_TEMPLATE(generic, sys_sched_get_priority_min); +DECL_TEMPLATE(generic, sys_nanosleep); +DECL_TEMPLATE(generic, sys_mremap); // POSIX, but Linux arg order may be odd +DECL_TEMPLATE(generic, sys_getuid); +DECL_TEMPLATE(generic, sys_getgid); +DECL_TEMPLATE(generic, sys_geteuid); +DECL_TEMPLATE(generic, sys_getegid); +DECL_TEMPLATE(generic, sys_getpgid); +DECL_TEMPLATE(generic, sys_fsync); +DECL_TEMPLATE(generic, sys_wait4); +DECL_TEMPLATE(generic, sys_mprotect); +DECL_TEMPLATE(generic, sys_sigprocmask); +DECL_TEMPLATE(generic, sys_timer_create); // Linux: varies across archs? +DECL_TEMPLATE(generic, sys_timer_settime); +DECL_TEMPLATE(generic, sys_timer_gettime); +DECL_TEMPLATE(generic, sys_timer_getoverrun); +DECL_TEMPLATE(generic, sys_timer_delete); +DECL_TEMPLATE(generic, sys_clock_settime); +DECL_TEMPLATE(generic, sys_clock_gettime); +DECL_TEMPLATE(generic, sys_clock_getres); +DECL_TEMPLATE(generic, sys_clock_nanosleep); +DECL_TEMPLATE(generic, sys_getcwd); +DECL_TEMPLATE(generic, sys_symlink); +DECL_TEMPLATE(generic, sys_getgroups); +DECL_TEMPLATE(generic, sys_setgroups); // SVr4, SVID, X/OPEN, 4.3BSD +DECL_TEMPLATE(generic, sys_chown); +DECL_TEMPLATE(generic, sys_setuid); +DECL_TEMPLATE(generic, sys_gettimeofday); +DECL_TEMPLATE(generic, sys_madvise); +DECL_TEMPLATE(generic, sys_sigpending); // These ones aren't POSIX, but are in some standard and look reasonably -// generic, and are the same for all architectures under Linux. -DECL_TEMPLATE(generic,sys_nice); // SVr4, SVID EXT, AT&T, X/OPEN, BSD 4.3 -DECL_TEMPLATE(generic,sys_sync); // SVr4, SVID, X/OPEN, BSD 4.3 -DECL_TEMPLATE(generic,sys_brk); // 4.3BSD -DECL_TEMPLATE(generic,sys_acct); // SVR4, non-POSIX -DECL_TEMPLATE(generic,sys_chroot); // SVr4, SVID, 4.4BSD, X/OPEN -DECL_TEMPLATE(generic,sys_readlink); // X/OPEN, 4.4BSD -DECL_TEMPLATE(generic,sys_fchdir); // SVr4, SVID, POSIX, X/OPEN, 4.4BSD -DECL_TEMPLATE(generic,sys_getdents); // SVr4,SVID -DECL_TEMPLATE(generic,sys_select); // 4.4BSD -DECL_TEMPLATE(generic,sys_flock); // 4.4BSD -DECL_TEMPLATE(generic,sys_poll); // XPG4-UNIX -DECL_TEMPLATE(generic,sys_getrusage); // SVr4, 4.3BSD -DECL_TEMPLATE(generic,sys_stime); // SVr4, SVID, X/OPEN -DECL_TEMPLATE(generic,sys_settimeofday); // SVr4, 4.3BSD (non-POSIX) -DECL_TEMPLATE(generic,sys_getpriority); // SVr4, 4.4BSD -DECL_TEMPLATE(generic,sys_setpriority); // SVr4, 4.4BSD -DECL_TEMPLATE(generic,sys_setitimer); // SVr4, 4.4BSD -DECL_TEMPLATE(generic,sys_getitimer); // SVr4, 4.4BSD -DECL_TEMPLATE(generic,sys_setreuid); // 4.3BSD -DECL_TEMPLATE(generic,sys_setregid); // 4.3BSD -DECL_TEMPLATE(generic,sys_fchown); // SVr4,4.3BSD -DECL_TEMPLATE(generic,sys_setgid); // SVr4,SVID -DECL_TEMPLATE(generic,sys_utimes); // 4.3BSD +// generic, and are the same for all architectures under Linux. +DECL_TEMPLATE(generic, sys_nice); // SVr4, SVID EXT, AT&T, X/OPEN, BSD 4.3 +DECL_TEMPLATE(generic, sys_sync); // SVr4, SVID, X/OPEN, BSD 4.3 +DECL_TEMPLATE(generic, sys_brk); // 4.3BSD +DECL_TEMPLATE(generic, sys_acct); // SVR4, non-POSIX +DECL_TEMPLATE(generic, sys_chroot); // SVr4, SVID, 4.4BSD, X/OPEN +DECL_TEMPLATE(generic, sys_readlink); // X/OPEN, 4.4BSD +DECL_TEMPLATE(generic, sys_fchdir); // SVr4, SVID, POSIX, X/OPEN, 4.4BSD +DECL_TEMPLATE(generic, sys_getdents); // SVr4,SVID +DECL_TEMPLATE(generic, sys_select); // 4.4BSD +DECL_TEMPLATE(generic, sys_flock); // 4.4BSD +DECL_TEMPLATE(generic, sys_poll); // XPG4-UNIX +DECL_TEMPLATE(generic, sys_getrusage); // SVr4, 4.3BSD +DECL_TEMPLATE(generic, sys_stime); // SVr4, SVID, X/OPEN +DECL_TEMPLATE(generic, sys_settimeofday); // SVr4, 4.3BSD (non-POSIX) +DECL_TEMPLATE(generic, sys_getpriority); // SVr4, 4.4BSD +DECL_TEMPLATE(generic, sys_setpriority); // SVr4, 4.4BSD +DECL_TEMPLATE(generic, sys_setitimer); // SVr4, 4.4BSD +DECL_TEMPLATE(generic, sys_getitimer); // SVr4, 4.4BSD +DECL_TEMPLATE(generic, sys_setreuid); // 4.3BSD +DECL_TEMPLATE(generic, sys_setregid); // 4.3BSD +DECL_TEMPLATE(generic, sys_fchown); // SVr4,4.3BSD +DECL_TEMPLATE(generic, sys_setgid); // SVr4,SVID +DECL_TEMPLATE(generic, sys_utimes); // 4.3BSD // These ones may be Linux specific... not sure. They use 16-bit gid_t and // uid_t types. The similarly named (minus the "16" suffix) ones below use // 32-bit versions of these types. -DECL_TEMPLATE(generic,sys_setuid16); // ## P -DECL_TEMPLATE(generic,sys_getuid16); // ## P -DECL_TEMPLATE(generic,sys_setgid16); // ## SVr4,SVID -DECL_TEMPLATE(generic,sys_getgid16); // ## P -DECL_TEMPLATE(generic,sys_geteuid16); // ## P -DECL_TEMPLATE(generic,sys_getegid16); // ## P -DECL_TEMPLATE(generic,sys_setreuid16); // ## BSD4.3 -DECL_TEMPLATE(generic,sys_setregid16); // ## BSD4.3 -DECL_TEMPLATE(generic,sys_getgroups16); // ## P -DECL_TEMPLATE(generic,sys_setgroups16); // ## SVr4, SVID, X/OPEN, 4.3BSD -DECL_TEMPLATE(generic,sys_fchown16); // ## SVr4,BSD4.3 -DECL_TEMPLATE(generic,sys_chown16); // ## P +DECL_TEMPLATE(generic, sys_setuid16); // ## P +DECL_TEMPLATE(generic, sys_getuid16); // ## P +DECL_TEMPLATE(generic, sys_setgid16); // ## SVr4,SVID +DECL_TEMPLATE(generic, sys_getgid16); // ## P +DECL_TEMPLATE(generic, sys_geteuid16); // ## P +DECL_TEMPLATE(generic, sys_getegid16); // ## P +DECL_TEMPLATE(generic, sys_setreuid16); // ## BSD4.3 +DECL_TEMPLATE(generic, sys_setregid16); // ## BSD4.3 +DECL_TEMPLATE(generic, sys_getgroups16); // ## P +DECL_TEMPLATE(generic, sys_setgroups16); // ## SVr4, SVID, X/OPEN, 4.3BSD +DECL_TEMPLATE(generic, sys_fchown16); // ## SVr4,BSD4.3 +DECL_TEMPLATE(generic, sys_chown16); // ## P // Some archs on Linux do not match the generic wrapper for sys_pipe(). -DECL_TEMPLATE(generic,sys_pipe); +DECL_TEMPLATE(generic, sys_pipe); // May not be generic for every architecture under Linux. -DECL_TEMPLATE(generic,sys_sigaction); // (x86) P +DECL_TEMPLATE(generic, sys_sigaction); // (x86) P // Funny names, not sure... -DECL_TEMPLATE(generic,sys_newstat); // * P -DECL_TEMPLATE(generic,sys_newlstat); // * -DECL_TEMPLATE(generic,sys_newfstat); // * P (SVr4,BSD4.3) +DECL_TEMPLATE(generic, sys_newstat); // * P +DECL_TEMPLATE(generic, sys_newlstat); // * +DECL_TEMPLATE(generic, sys_newfstat); // * P (SVr4,BSD4.3) // For the remainder, not really sure yet -DECL_TEMPLATE(generic,sys_ptrace); // (x86?) (almost-P) -DECL_TEMPLATE(generic,sys_sigsuspend); // POSIX, but L (proto varies across archs) -DECL_TEMPLATE(generic,sys_setrlimit); // SVr4, 4.3BSD -DECL_TEMPLATE(generic,sys_ioctl); // x86? (various) -DECL_TEMPLATE(generic,sys_old_getrlimit); // SVr4, 4.3BSD L? -DECL_TEMPLATE(generic,sys_statfs); // * L? -DECL_TEMPLATE(generic,sys_fstatfs); // * L? -DECL_TEMPLATE(generic,sys_iopl); // (x86/amd64) L -DECL_TEMPLATE(generic,sys_ipc); // (x86) L -DECL_TEMPLATE(generic,sys_newuname); // * P -DECL_TEMPLATE(generic,sys_init_module); // * L? -DECL_TEMPLATE(generic,sys_quotactl); // * (?) -DECL_TEMPLATE(generic,sys_rt_sigaction); // (x86) () -DECL_TEMPLATE(generic,sys_rt_sigprocmask); // * ? -DECL_TEMPLATE(generic,sys_rt_sigpending); // * ? -DECL_TEMPLATE(generic,sys_rt_sigtimedwait); // * ? -DECL_TEMPLATE(generic,sys_rt_sigqueueinfo); // * ? -DECL_TEMPLATE(generic,sys_rt_sigsuspend); // () () -DECL_TEMPLATE(generic,sys_pread64); // * (Unix98?) -DECL_TEMPLATE(generic,sys_pwrite64); // * (Unix98?) -DECL_TEMPLATE(generic,sys_capget); // * L? -DECL_TEMPLATE(generic,sys_capset); // * L? -DECL_TEMPLATE(generic,sys_sigaltstack); // (x86) (XPG4-UNIX) -DECL_TEMPLATE(generic,sys_getpmsg); // (?) (?) -DECL_TEMPLATE(generic,sys_putpmsg); // (?) (?) -DECL_TEMPLATE(generic,sys_getrlimit); // * (?) -DECL_TEMPLATE(generic,sys_mmap2); // (x86?) P? -DECL_TEMPLATE(generic,sys_truncate64); // %% (P?) -DECL_TEMPLATE(generic,sys_ftruncate64); // %% (P?) -DECL_TEMPLATE(generic,sys_lchown); // * (L?) -DECL_TEMPLATE(generic,sys_mincore); // * L? -DECL_TEMPLATE(generic,sys_getdents64); // * (SVr4,SVID?) -DECL_TEMPLATE(generic,sys_fcntl64); // * P? -DECL_TEMPLATE(generic,sys_setxattr); // * L? -DECL_TEMPLATE(generic,sys_lsetxattr); // * L? -DECL_TEMPLATE(generic,sys_fsetxattr); // * L? -DECL_TEMPLATE(generic,sys_getxattr); // * L? -DECL_TEMPLATE(generic,sys_lgetxattr); // * L? -DECL_TEMPLATE(generic,sys_fgetxattr); // * L? -DECL_TEMPLATE(generic,sys_listxattr); // * L? -DECL_TEMPLATE(generic,sys_llistxattr); // * L? -DECL_TEMPLATE(generic,sys_flistxattr); // * L? -DECL_TEMPLATE(generic,sys_removexattr); // * L? -DECL_TEMPLATE(generic,sys_lremovexattr); // * L? -DECL_TEMPLATE(generic,sys_fremovexattr); // * L? -DECL_TEMPLATE(generic,sys_sched_setaffinity); // * L? -DECL_TEMPLATE(generic,sys_sched_getaffinity); // * L? -DECL_TEMPLATE(generic,sys_lookup_dcookie); // (*/32/64) L -DECL_TEMPLATE(generic,sys_set_tid_address); // * ? -DECL_TEMPLATE(generic,sys_statfs64); // * (?) -DECL_TEMPLATE(generic,sys_fstatfs64); // * (?) -DECL_TEMPLATE(generic,sys_mq_open); // * P? -DECL_TEMPLATE(generic,sys_mq_unlink); // * P? -DECL_TEMPLATE(generic,sys_mq_timedsend); // * P? -DECL_TEMPLATE(generic,sys_mq_timedreceive); // * P? -DECL_TEMPLATE(generic,sys_mq_notify); // * P? -DECL_TEMPLATE(generic,sys_mq_getsetattr); // * P? - +DECL_TEMPLATE(generic, sys_ptrace); // (x86?) (almost-P) +DECL_TEMPLATE(generic, sys_sigsuspend); // POSIX, but L (proto varies across archs) +DECL_TEMPLATE(generic, sys_setrlimit); // SVr4, 4.3BSD +DECL_TEMPLATE(generic, sys_ioctl); // x86? (various) +DECL_TEMPLATE(generic, sys_old_getrlimit); // SVr4, 4.3BSD L? +DECL_TEMPLATE(generic, sys_statfs); // * L? +DECL_TEMPLATE(generic, sys_fstatfs); // * L? +DECL_TEMPLATE(generic, sys_iopl); // (x86/amd64) L +DECL_TEMPLATE(generic, sys_ipc); // (x86) L +DECL_TEMPLATE(generic, sys_newuname); // * P +DECL_TEMPLATE(generic, sys_init_module); // * L? +DECL_TEMPLATE(generic, sys_quotactl); // * (?) +DECL_TEMPLATE(generic, sys_rt_sigaction); // (x86) () +DECL_TEMPLATE(generic, sys_rt_sigprocmask); // * ? +DECL_TEMPLATE(generic, sys_rt_sigpending); // * ? +DECL_TEMPLATE(generic, sys_rt_sigtimedwait); // * ? +DECL_TEMPLATE(generic, sys_rt_sigqueueinfo); // * ? +DECL_TEMPLATE(generic, sys_rt_sigsuspend); // () () +DECL_TEMPLATE(generic, sys_pread64); // * (Unix98?) +DECL_TEMPLATE(generic, sys_pwrite64); // * (Unix98?) +DECL_TEMPLATE(generic, sys_capget); // * L? +DECL_TEMPLATE(generic, sys_capset); // * L? +DECL_TEMPLATE(generic, sys_sigaltstack); // (x86) (XPG4-UNIX) +DECL_TEMPLATE(generic, sys_getpmsg); // (?) (?) +DECL_TEMPLATE(generic, sys_putpmsg); // (?) (?) +DECL_TEMPLATE(generic, sys_getrlimit); // * (?) +DECL_TEMPLATE(generic, sys_mmap2); // (x86?) P? +DECL_TEMPLATE(generic, sys_truncate64); // %% (P?) +DECL_TEMPLATE(generic, sys_ftruncate64); // %% (P?) +DECL_TEMPLATE(generic, sys_lchown); // * (L?) +DECL_TEMPLATE(generic, sys_mincore); // * L? +DECL_TEMPLATE(generic, sys_getdents64); // * (SVr4,SVID?) +DECL_TEMPLATE(generic, sys_fcntl64); // * P? +DECL_TEMPLATE(generic, sys_setxattr); // * L? +DECL_TEMPLATE(generic, sys_lsetxattr); // * L? +DECL_TEMPLATE(generic, sys_fsetxattr); // * L? +DECL_TEMPLATE(generic, sys_getxattr); // * L? +DECL_TEMPLATE(generic, sys_lgetxattr); // * L? +DECL_TEMPLATE(generic, sys_fgetxattr); // * L? +DECL_TEMPLATE(generic, sys_listxattr); // * L? +DECL_TEMPLATE(generic, sys_llistxattr); // * L? +DECL_TEMPLATE(generic, sys_flistxattr); // * L? +DECL_TEMPLATE(generic, sys_removexattr); // * L? +DECL_TEMPLATE(generic, sys_lremovexattr); // * L? +DECL_TEMPLATE(generic, sys_fremovexattr); // * L? +DECL_TEMPLATE(generic, sys_sched_setaffinity); // * L? +DECL_TEMPLATE(generic, sys_sched_getaffinity); // * L? +DECL_TEMPLATE(generic, sys_lookup_dcookie); // (*/32/64) L +DECL_TEMPLATE(generic, sys_statfs64); // * (?) +DECL_TEMPLATE(generic, sys_fstatfs64); // * (?) +DECL_TEMPLATE(generic, sys_mq_open); // * P? +DECL_TEMPLATE(generic, sys_mq_unlink); // * P? +DECL_TEMPLATE(generic, sys_mq_timedsend); // * P? +DECL_TEMPLATE(generic, sys_mq_timedreceive); // * P? +DECL_TEMPLATE(generic, sys_mq_notify); // * P? +DECL_TEMPLATE(generic, sys_mq_getsetattr); // * P? /* --------------------------------------------------------------------- diff --git a/coregrind/m_syscalls/priv_syscalls-linux.h b/coregrind/m_syscalls/priv_syscalls-linux.h index 7747196b3..dc65d9171 100644 --- a/coregrind/m_syscalls/priv_syscalls-linux.h +++ b/coregrind/m_syscalls/priv_syscalls-linux.h @@ -33,58 +33,58 @@ /* requires #include "priv_types_n_macros.h" */ +DECL_TEMPLATE(linux, sys_exit_group); -DECL_TEMPLATE(linux,sys_exit_group); +DECL_TEMPLATE(linux, sys_mount); +DECL_TEMPLATE(linux, sys_oldumount); +DECL_TEMPLATE(linux, sys_umount); -DECL_TEMPLATE(linux,sys_mount); -DECL_TEMPLATE(linux,sys_oldumount); -DECL_TEMPLATE(linux,sys_umount); +DECL_TEMPLATE(linux, sys_llseek); +DECL_TEMPLATE(linux, sys_adjtimex); -DECL_TEMPLATE(linux,sys_llseek); -DECL_TEMPLATE(linux,sys_adjtimex); +DECL_TEMPLATE(linux, sys_setfsuid16); +DECL_TEMPLATE(linux, sys_setfsgid16); +DECL_TEMPLATE(linux, sys_setresuid16); // man page says "non-standard"; +DECL_TEMPLATE(linux, sys_getresuid16); +DECL_TEMPLATE(linux, sys_setresgid16); // man page says "non-standard" +DECL_TEMPLATE(linux, sys_getresgid16); -DECL_TEMPLATE(linux,sys_setfsuid16); -DECL_TEMPLATE(linux,sys_setfsgid16); -DECL_TEMPLATE(linux,sys_setresuid16); // man page says "non-standard"; -DECL_TEMPLATE(linux,sys_getresuid16); -DECL_TEMPLATE(linux,sys_setresgid16); // man page says "non-standard" -DECL_TEMPLATE(linux,sys_getresgid16); +DECL_TEMPLATE(linux, sys_setfsuid); +DECL_TEMPLATE(linux, sys_setfsgid); +DECL_TEMPLATE(linux, sys_setresuid); // man page says "non-standard" +DECL_TEMPLATE(linux, sys_getresuid); +DECL_TEMPLATE(linux, sys_setresgid); // man page says "non-standard" +DECL_TEMPLATE(linux, sys_getresgid); -DECL_TEMPLATE(linux,sys_setfsuid); -DECL_TEMPLATE(linux,sys_setfsgid); -DECL_TEMPLATE(linux,sys_setresuid); // man page says "non-standard" -DECL_TEMPLATE(linux,sys_getresuid); -DECL_TEMPLATE(linux,sys_setresgid); // man page says "non-standard" -DECL_TEMPLATE(linux,sys_getresgid); +DECL_TEMPLATE(linux, sys_ioperm); +DECL_TEMPLATE(linux, sys_syslog); +DECL_TEMPLATE(linux, sys_vhangup); +DECL_TEMPLATE(linux, sys_sysinfo); +DECL_TEMPLATE(linux, sys_personality); +DECL_TEMPLATE(linux, sys_sysctl); +DECL_TEMPLATE(linux, sys_prctl); -DECL_TEMPLATE(linux,sys_ioperm); -DECL_TEMPLATE(linux,sys_syslog); -DECL_TEMPLATE(linux,sys_vhangup); -DECL_TEMPLATE(linux,sys_sysinfo); -DECL_TEMPLATE(linux,sys_personality); -DECL_TEMPLATE(linux,sys_sysctl); -DECL_TEMPLATE(linux,sys_prctl); +DECL_TEMPLATE(linux, sys_sendfile); +DECL_TEMPLATE(linux, sys_sendfile64); +DECL_TEMPLATE(linux, sys_futex); -DECL_TEMPLATE(linux,sys_sendfile); -DECL_TEMPLATE(linux,sys_sendfile64); -DECL_TEMPLATE(linux,sys_futex); +DECL_TEMPLATE(linux, sys_epoll_create); +DECL_TEMPLATE(linux, sys_epoll_ctl); +DECL_TEMPLATE(linux, sys_epoll_wait); -DECL_TEMPLATE(linux,sys_epoll_create); -DECL_TEMPLATE(linux,sys_epoll_ctl); -DECL_TEMPLATE(linux,sys_epoll_wait); +DECL_TEMPLATE(linux, sys_gettid); +DECL_TEMPLATE(linux, sys_set_tid_address); +DECL_TEMPLATE(linux, sys_tkill); +DECL_TEMPLATE(linux, sys_tgkill); -DECL_TEMPLATE(linux,sys_gettid); -DECL_TEMPLATE(linux,sys_tkill); -DECL_TEMPLATE(linux,sys_tgkill); +DECL_TEMPLATE(linux, sys_fadvise64); +DECL_TEMPLATE(linux, sys_fadvise64_64); -DECL_TEMPLATE(linux,sys_fadvise64); -DECL_TEMPLATE(linux,sys_fadvise64_64); - -DECL_TEMPLATE(linux,sys_io_setup); -DECL_TEMPLATE(linux,sys_io_destroy); -DECL_TEMPLATE(linux,sys_io_getevents); -DECL_TEMPLATE(linux,sys_io_submit); -DECL_TEMPLATE(linux,sys_io_cancel); +DECL_TEMPLATE(linux, sys_io_setup); +DECL_TEMPLATE(linux, sys_io_destroy); +DECL_TEMPLATE(linux, sys_io_getevents); +DECL_TEMPLATE(linux, sys_io_submit); +DECL_TEMPLATE(linux, sys_io_cancel); #endif // __PRIV_SYSCALLS_LINUX_H diff --git a/coregrind/m_syscalls/syscalls-generic.c b/coregrind/m_syscalls/syscalls-generic.c index e473ed94b..910c4c215 100644 --- a/coregrind/m_syscalls/syscalls-generic.c +++ b/coregrind/m_syscalls/syscalls-generic.c @@ -1683,12 +1683,6 @@ PRE(sys_ni_syscall) SET_STATUS_Failure( VKI_ENOSYS ); } -//zz PRE(sys_set_tid_address, 0) -//zz { -//zz PRINT("sys_set_tid_address ( %p )", ARG1); -//zz PRE_REG_READ1(long, "set_tid_address", int *, tidptr); -//zz } -//zz //zz PRE(sys_iopl, 0) //zz { //zz PRINT("sys_iopl ( %d )", ARG1); diff --git a/coregrind/m_syscalls/syscalls-linux.c b/coregrind/m_syscalls/syscalls-linux.c index c8f3bfcec..5018d8210 100644 --- a/coregrind/m_syscalls/syscalls-linux.c +++ b/coregrind/m_syscalls/syscalls-linux.c @@ -30,16 +30,18 @@ #include "core.h" #include "pub_core_aspacemgr.h" +#include "pub_core_libcbase.h" #include "pub_core_libcassert.h" #include "pub_core_libcfile.h" #include "pub_core_libcprint.h" #include "pub_core_tooliface.h" #include "pub_core_options.h" +#include "pub_core_signals.h" #include "priv_types_n_macros.h" +#include "priv_syscalls-generic.h" #include "priv_syscalls-linux.h" - /* --------------------------------------------------------------------- PRE/POST wrappers for arch-generic, Linux-specific syscalls ------------------------------------------------------------------ */ @@ -50,6 +52,12 @@ #define PRE(name) DEFN_PRE_TEMPLATE(linux, name) #define POST(name) DEFN_POST_TEMPLATE(linux, name) +PRE(sys_set_tid_address) +{ + PRINT("sys_set_tid_address ( %p )", ARG1); + PRE_REG_READ1(long, "set_tid_address", int *, tidptr); +} + PRE(sys_exit_group) { ThreadId t; @@ -416,62 +424,65 @@ POST(sys_sysctl) //zz POST_MEM_WRITE( ARG3, sizeof(vki_loff_t) ); //zz } //zz } -//zz -//zz PRE(sys_futex, MayBlock) -//zz { -//zz /* -//zz arg param used by ops -//zz -//zz ARG1 - u32 *futex all -//zz ARG2 - int op -//zz ARG3 - int val WAIT,WAKE,FD,REQUEUE,CMP_REQUEUE -//zz ARG4 - struct timespec *utime WAIT:time* REQUEUE,CMP_REQUEUE:val2 -//zz ARG5 - u32 *uaddr2 REQUEUE,CMP_REQUEUE -//zz ARG6 - int val3 CMP_REQUEUE -//zz */ -//zz PRINT("sys_futex ( %p, %d, %d, %p, %p )", ARG1,ARG2,ARG3,ARG4,ARG5); -//zz PRE_REG_READ6(long, "futex", -//zz vki_u32 *, futex, int, op, int, val, -//zz struct timespec *, utime, vki_u32 *, uaddr2, int, val3); -//zz -//zz PRE_MEM_READ( "futex(futex)", ARG1, sizeof(Int) ); -//zz -//zz switch(ARG2) { -//zz case VKI_FUTEX_WAIT: -//zz if (ARG4 != 0) -//zz PRE_MEM_READ( "futex(timeout)", ARG4, sizeof(struct vki_timespec) ); -//zz break; -//zz -//zz case VKI_FUTEX_REQUEUE: -//zz case VKI_FUTEX_CMP_REQUEUE: -//zz PRE_MEM_READ( "futex(futex2)", ARG5, sizeof(Int) ); -//zz break; -//zz -//zz case VKI_FUTEX_WAKE: -//zz case VKI_FUTEX_FD: -//zz /* no additional pointers */ -//zz break; -//zz -//zz default: -//zz SET_RESULT(-VKI_ENOSYS); // some futex function we don't understand -//zz break; -//zz } -//zz } -//zz -//zz POST(sys_futex) -//zz { -//zz POST_MEM_WRITE( ARG1, sizeof(int) ); -//zz if (ARG2 == VKI_FUTEX_FD) { -//zz if (!VG_(fd_allowed)(RES, "futex", tid, True)) { -//zz VG_(close)(RES); -//zz SET_RESULT( -VKI_EMFILE ); -//zz } else { -//zz if (VG_(clo_track_fds)) -//zz VG_(record_fd_open)(tid, RES, VG_(arena_strdup)(VG_AR_CORE, (Char*)ARG1)); -//zz } -//zz } -//zz } -//zz + +PRE(sys_futex) +{ + /* + arg param used by ops + + ARG1 - u32 *futex all + ARG2 - int op + ARG3 - int val WAIT,WAKE,FD,REQUEUE,CMP_REQUEUE + ARG4 - struct timespec *utime WAIT:time* REQUEUE,CMP_REQUEUE:val2 + ARG5 - u32 *uaddr2 REQUEUE,CMP_REQUEUE + ARG6 - int val3 CMP_REQUEUE + */ + PRINT("sys_futex ( %p, %d, %d, %p, %p )", ARG1,ARG2,ARG3,ARG4,ARG5); + PRE_REG_READ6(long, "futex", + vki_u32 *, futex, int, op, int, val, + struct timespec *, utime, vki_u32 *, uaddr2, int, val3); + + PRE_MEM_READ( "futex(futex)", ARG1, sizeof(Int) ); + + *flags |= SfMayBlock; + + switch(ARG2) { + case VKI_FUTEX_WAIT: + if (ARG4 != 0) + PRE_MEM_READ( "futex(timeout)", ARG4, sizeof(struct vki_timespec) ); + break; + + case VKI_FUTEX_REQUEUE: + case VKI_FUTEX_CMP_REQUEUE: + PRE_MEM_READ( "futex(futex2)", ARG5, sizeof(Int) ); + break; + + case VKI_FUTEX_WAKE: + case VKI_FUTEX_FD: + /* no additional pointers */ + break; + + default: + SET_STATUS_Failure( VKI_ENOSYS ); // some futex function we don't understand + break; + } +} + +POST(sys_futex) +{ + vg_assert(SUCCESS); + POST_MEM_WRITE( ARG1, sizeof(int) ); + if (ARG2 == VKI_FUTEX_FD) { + if (!VG_(fd_allowed)(RES, "futex", tid, True)) { + VG_(close)(RES); + SET_STATUS_Failure( VKI_EMFILE ); + } else { + if (VG_(clo_track_fds)) + VG_(record_fd_open)(tid, RES, VG_(arena_strdup)(VG_AR_CORE, (Char*)ARG1)); + } + } +} + //zz PRE(sys_epoll_create, 0) //zz { //zz PRINT("sys_epoll_create ( %d )", ARG1); @@ -482,7 +493,7 @@ POST(sys_sysctl) //zz { //zz if (!VG_(fd_allowed)(RES, "epoll_create", tid, True)) { //zz VG_(close)(RES); -//zz SET_RESULT( -VKI_EMFILE ); +//zz SET_STATUS_( -VKI_EMFILE ); //zz } else { //zz if (VG_(clo_track_fds)) //zz VG_(record_fd_open) (tid, RES, NULL); @@ -530,16 +541,16 @@ POST(sys_sysctl) //zz PRINT("sys_tkill ( %d, %d )", ARG1,ARG2); //zz PRE_REG_READ2(long, "tkill", int, tid, int, sig); //zz if (!VG_(client_signal_OK)(ARG2)) { -//zz SET_RESULT( -VKI_EINVAL ); +//zz SET_STATUS_( -VKI_EINVAL ); //zz return; //zz } //zz //zz /* If we're sending SIGKILL, check to see if the target is one of //zz our threads and handle it specially. */ //zz if (ARG2 == VKI_SIGKILL && VG_(do_sigkill)(ARG1, -1)) -//zz SET_RESULT(0); +//zz SET_STATUS_(0); //zz else -//zz SET_RESULT(VG_(do_syscall2)(SYSNO, ARG1, ARG2)); +//zz SET_STATUS_(VG_(do_syscall2)(SYSNO, ARG1, ARG2)); //zz //zz if (VG_(clo_trace_signals)) //zz VG_(message)(Vg_DebugMsg, "tkill: sent signal %d to pid %d", @@ -547,40 +558,38 @@ POST(sys_sysctl) //zz // Check to see if this kill gave us a pending signal //zz XXX FIXME VG_(poll_signals)(tid); //zz } -//zz -//zz PRE(sys_tgkill, Special) -//zz { -//zz /* int tgkill(pid_t tgid, pid_t tid, int sig); */ -//zz PRINT("sys_tgkill ( %d, %d, %d )", ARG1,ARG2,ARG3); -//zz PRE_REG_READ3(long, "tgkill", int, tgid, int, tid, int, sig); -//zz if (!VG_(client_signal_OK)(ARG3)) { -//zz SET_RESULT( -VKI_EINVAL ); -//zz return; -//zz } -//zz -//zz /* If we're sending SIGKILL, check to see if the target is one of -//zz our threads and handle it specially. */ -//zz if (ARG3 == VKI_SIGKILL && VG_(do_sigkill)(ARG2, ARG1)) -//zz SET_RESULT(0); -//zz else -//zz SET_RESULT(VG_(do_syscall3)(SYSNO, ARG1, ARG2, ARG3)); -//zz -//zz if (VG_(clo_trace_signals)) -//zz VG_(message)(Vg_DebugMsg, "tgkill: sent signal %d to pid %d/%d", -//zz ARG3, ARG1, ARG2); -//zz // Check to see if this kill gave us a pending signal -//zz XXX FIXME VG_(poll_signals)(tid); -//zz } -//zz -//zz POST(sys_tgkill) -//zz { -//zz if (VG_(clo_trace_signals)) -//zz VG_(message)(Vg_DebugMsg, "tgkill: sent signal %d to pid %d/%d", -//zz ARG3, ARG1, ARG2); -//zz // Check to see if this kill gave us a pending signal -//zz XXX FIXME VG_(poll_signals)(tid); -//zz } -//zz + +PRE(sys_tgkill) +{ + /* int tgkill(pid_t tgid, pid_t tid, int sig); */ + PRINT("sys_tgkill ( %d, %d, %d )", ARG1,ARG2,ARG3); + PRE_REG_READ3(long, "tgkill", int, tgid, int, tid, int, sig); + if (!VG_(client_signal_OK)(ARG3)) { + SET_STATUS_Failure( VKI_EINVAL ); + return; + } + + /* If we're sending SIGKILL, check to see if the target is one of + our threads and handle it specially. */ + if (ARG3 == VKI_SIGKILL && VG_(do_sigkill)(ARG2, ARG1)) + SET_STATUS_Success(0); + else + SET_STATUS_from_SysRes(VG_(do_syscall3)(SYSNO, ARG1, ARG2, ARG3)); + + if (VG_(clo_trace_signals)) + VG_(message)(Vg_DebugMsg, "tgkill: sent signal %d to pid %d/%d", + ARG3, ARG1, ARG2); + /* Check to see if this kill gave us a pending signal */ + *flags |= SfPollAfter; +} + +POST(sys_tgkill) +{ + if (VG_(clo_trace_signals)) + VG_(message)(Vg_DebugMsg, "tgkill: sent signal %d to pid %d/%d", + ARG3, ARG1, ARG2); +} + //zz PRE(sys_fadvise64, 0) //zz { //zz PRINT("sys_fadvise64 ( %d, %lld, %lu, %d )", ARG1,ARG2,ARG3); @@ -613,14 +622,14 @@ POST(sys_sysctl) //zz addr = VG_(find_map_space)(0, size, True); //zz //zz if (addr == 0) { -//zz SET_RESULT( -VKI_ENOMEM ); +//zz SET_STATUS_( -VKI_ENOMEM ); //zz return; //zz } //zz //zz VG_(map_segment)(addr, size, VKI_PROT_READ|VKI_PROT_WRITE, SF_FIXED); //zz //zz VG_(pad_address_space)(0); -//zz SET_RESULT( VG_(do_syscall2)(SYSNO, ARG1, ARG2) ); +//zz SET_STATUS_( VG_(do_syscall2)(SYSNO, ARG1, ARG2) ); //zz VG_(unpad_address_space)(0); //zz //zz if (RES == 0) { @@ -660,7 +669,7 @@ POST(sys_sysctl) //zz size = VG_PGROUNDUP(sizeof(struct vki_aio_ring) + //zz r->nr*sizeof(struct vki_io_event)); //zz -//zz SET_RESULT( VG_(do_syscall1)(SYSNO, ARG1) ); +//zz SET_STATUS_( VG_(do_syscall1)(SYSNO, ARG1) ); //zz //zz if (RES == 0 && s != NULL) { //zz VG_TRACK( die_mem_munmap, ARG1, size ); diff --git a/coregrind/m_syscalls/syscalls-x86-linux.c b/coregrind/m_syscalls/syscalls-x86-linux.c index 74f9bb135..fd7fd3b58 100644 --- a/coregrind/m_syscalls/syscalls-x86-linux.c +++ b/coregrind/m_syscalls/syscalls-x86-linux.c @@ -949,6 +949,7 @@ DECL_TEMPLATE(x86_linux, sys_sigreturn); DECL_TEMPLATE(x86_linux, sys_ipc); DECL_TEMPLATE(x86_linux, sys_rt_sigreturn); DECL_TEMPLATE(x86_linux, sys_modify_ldt); +DECL_TEMPLATE(x86_linux, sys_set_thread_area); //zz PRE(old_select, MayBlock) //zz { @@ -1192,16 +1193,16 @@ PRE(sys_modify_ldt) } } -//zz PRE(sys_set_thread_area, Special) -//zz { -//zz PRINT("sys_set_thread_area ( %p )", ARG1); -//zz PRE_REG_READ1(int, "set_thread_area", struct user_desc *, u_info) -//zz PRE_MEM_READ( "set_thread_area(u_info)", ARG1, sizeof(vki_modify_ldt_t) ); -//zz -//zz /* "do" the syscall ourselves; the kernel never sees it */ -//zz SET_STATUS_( sys_set_thread_area( tid, (void *)ARG1 ) ); -//zz } -//zz +PRE(sys_set_thread_area) +{ + PRINT("sys_set_thread_area ( %p )", ARG1); + PRE_REG_READ1(int, "set_thread_area", struct user_desc *, u_info) + PRE_MEM_READ( "set_thread_area(u_info)", ARG1, sizeof(vki_modify_ldt_t) ); + + /* "do" the syscall ourselves; the kernel never sees it */ + SET_STATUS_from_SysRes( sys_set_thread_area( tid, (void *)ARG1 ) ); +} + //zz PRE(sys_get_thread_area, Special) //zz { //zz PRINT("sys_get_thread_area ( %p )", ARG1); @@ -2204,10 +2205,10 @@ const SyscallTableEntry VGP_(syscall_table)[] = { //zz LINX_(__NR_tkill, sys_tkill), // 238 */Linux //zz LINXY(__NR_sendfile64, sys_sendfile64), // 239 //zz -//zz LINXY(__NR_futex, sys_futex), // 240 + LINXY(__NR_futex, sys_futex), // 240 //zz GENX_(__NR_sched_setaffinity, sys_sched_setaffinity), // 241 //zz GENXY(__NR_sched_getaffinity, sys_sched_getaffinity), // 242 -//zz PLAX_(__NR_set_thread_area, sys_set_thread_area), // 243 + PLAX_(__NR_set_thread_area, sys_set_thread_area), // 243 //zz PLAX_(__NR_get_thread_area, sys_get_thread_area), // 244 //zz //zz LINX_(__NR_io_setup, sys_io_setup), // 245 @@ -2225,7 +2226,7 @@ const SyscallTableEntry VGP_(syscall_table)[] = { //zz LINX_(__NR_epoll_ctl, sys_epoll_ctl), // 255 //zz LINXY(__NR_epoll_wait, sys_epoll_wait), // 256 //zz // (__NR_remap_file_pages, sys_remap_file_pages), // 257 */Linux -//zz GENX_(__NR_set_tid_address, sys_set_tid_address), // 258 + LINX_(__NR_set_tid_address, sys_set_tid_address), // 258 //zz GENXY(__NR_timer_create, sys_timer_create), // 259 //zz //zz GENXY(__NR_timer_settime, sys_timer_settime), // (timer_create+1) @@ -2240,7 +2241,7 @@ const SyscallTableEntry VGP_(syscall_table)[] = { //zz GENXY(__NR_statfs64, sys_statfs64), // 268 //zz GENXY(__NR_fstatfs64, sys_fstatfs64), // 269 //zz -//zz LINX_(__NR_tgkill, sys_tgkill), // 270 */Linux + LINX_(__NR_tgkill, sys_tgkill), // 270 */Linux //zz GENX_(__NR_utimes, sys_utimes), // 271 //zz LINX_(__NR_fadvise64_64, sys_fadvise64_64), // 272 */(Linux?) GENX_(__NR_vserver, sys_ni_syscall), // 273