From 2e84ea3a13ee7e03c6acadf79b6c6f8bf2b7f7bf Mon Sep 17 00:00:00 2001 From: Julian Seward Date: Sun, 13 Oct 2002 12:41:50 +0000 Subject: [PATCH] Add ever more new ioctls and syscalls. MERGE TO HEAD git-svn-id: svn://svn.valgrind.org/valgrind/branches/VALGRIND_1_0_BRANCH@1219 --- vg_syscall_mem.c | 108 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 107 insertions(+), 1 deletion(-) diff --git a/vg_syscall_mem.c b/vg_syscall_mem.c index 1a09d4d8ff..632ca5bcc0 100644 --- a/vg_syscall_mem.c +++ b/vg_syscall_mem.c @@ -552,10 +552,43 @@ void VG_(perform_assumed_nonblocking_syscall) ( ThreadId tid ) break; # endif +# if defined(__NR_setxattr) + case __NR_setxattr: /* syscall 226 */ + /* int setxattr (const char *path, const char *name, + const void *value, size_t size, int flags); */ + case __NR_lsetxattr: /* syscall 227 */ + /* int lsetxattr (const char *path, const char *name, + const void *value, size_t size, int flags); */ + if (VG_(clo_trace_syscalls)) + VG_(printf)("setxattr ( %p, %p, %p, %d, %d )\n", + arg1, arg2, arg3, arg4, arg5); + must_be_readable_asciiz( tst, "setxattr(path)", arg1 ); + must_be_readable_asciiz( tst, "setxattr(name)", arg2 ); + must_be_readable( tst, "setxattr(value)", arg3, arg4 ); + KERNEL_DO_SYSCALL(tid,res); + break; +# endif + +# if defined(__NR_fsetxattr) + case __NR_fsetxattr: /* syscall 228 */ + /* int fsetxattr (int filedes, const char *name, + const void *value, size_t size, int flags); */ + if (VG_(clo_trace_syscalls)) + VG_(printf)("fsetxattr ( %d, %p, %p, %d, %d )\n", + arg1, arg2, arg3, arg4, arg5); + must_be_readable_asciiz( tst, "fsetxattr(name)", arg2 ); + must_be_readable( tst, "fsetxattr(value)", arg3, arg4 ); + KERNEL_DO_SYSCALL(tid,res); + break; +# endif + # if defined(__NR_getxattr) case __NR_getxattr: /* syscall 229 */ /* ssize_t getxattr (const char *path, const char* name, void* value, size_t size); */ + case __NR_lgetxattr: /* syscall 230 */ + /* ssize_t lgetxattr (const char *path, const char *name, + void *value, size_t size); */ if (VG_(clo_trace_syscalls)) VG_(printf)("getxattr ( %p, %p, %p, %d )\n", arg1,arg2,arg3, arg4); @@ -569,7 +602,72 @@ void VG_(perform_assumed_nonblocking_syscall) ( ThreadId tid ) } break; # endif - + +# if defined(__NR_fgetxattr) + case __NR_fgetxattr: /* syscall 231 */ + /* ssize_t fgetxattr (int filedes, const char *name, + void *value, size_t size); */ + if (VG_(clo_trace_syscalls)) + VG_(printf)("fgetxattr ( %d, %p, %p, %d )\n", + arg1, arg2, arg3, arg4); + must_be_readable_asciiz( tst, "fgetxattr(name)", arg2 ); + must_be_writable( tst, "fgetxattr(value)", arg3, arg4 ); + KERNEL_DO_SYSCALL(tid,res); + if (!VG_(is_kerror)(res) && res > 0 && arg3 != (Addr)NULL) + make_readable( arg3, res ); + break; +# endif + +# if defined(__NR_listxattr) + case __NR_listxattr: /* syscall 232 */ + /* ssize_t listxattr (const char *path, char *list, size_t size); */ + case __NR_llistxattr: /* syscall 233 */ + /* ssize_t llistxattr (const char *path, char *list, size_t size); */ + if (VG_(clo_trace_syscalls)) + VG_(printf)("listxattr ( %p, %p, %d )\n", arg1, arg2, arg3); + must_be_readable_asciiz( tst, "listxattr(path)", arg1 ); + must_be_writable( tst, "listxattr(list)", arg2, arg3 ); + KERNEL_DO_SYSCALL(tid,res); + if (!VG_(is_kerror)(res) && res > 0 && arg2 != (Addr)NULL) + make_readable( arg2, res ); + break; +# endif + +# if defined(__NR_flistxattr) + case __NR_flistxattr: /* syscall 234 */ + /* ssize_t flistxattr (int filedes, char *list, size_t size); */ + if (VG_(clo_trace_syscalls)) + VG_(printf)("flistxattr ( %d, %p, %d )\n", arg1, arg2, arg3); + must_be_writable( tst, "listxattr(list)", arg2, arg3 ); + KERNEL_DO_SYSCALL(tid,res); + if (!VG_(is_kerror)(res) && res > 0 && arg2 != (Addr)NULL) + make_readable( arg2, res ); + break; +# endif + +# if defined(__NR_removexattr) + case __NR_removexattr: /* syscall 235 */ + /* int removexattr (const char *path, const char *name); */ + case __NR_lremovexattr: /* syscall 236 */ + /* int lremovexattr (const char *path, const char *name); */ + if (VG_(clo_trace_syscalls)) + VG_(printf)("removexattr ( %p, %p )\n", arg1, arg2); + must_be_readable_asciiz( tst, "listxattr(path)", arg1 ); + must_be_readable_asciiz( tst, "listxattr(name)", arg2 ); + KERNEL_DO_SYSCALL(tid,res); + break; +# endif + +# if defined(__NR_fremovexattr) + case __NR_fremovexattr: /* syscall 237 */ + /* int fremovexattr (int filedes, const char *name); */ + if (VG_(clo_trace_syscalls)) + VG_(printf)("removexattr ( %d, %p )\n", arg1, arg2); + must_be_readable_asciiz( tst, "listxattr(name)", arg2 ); + KERNEL_DO_SYSCALL(tid,res); + break; +# endif + # if defined(__NR_quotactl) case __NR_quotactl: /* syscall 131 */ /* int quotactl(int cmd, char *special, int uid, caddr_t addr); */ @@ -2138,6 +2236,14 @@ void VG_(perform_assumed_nonblocking_syscall) ( ThreadId tid ) KERNEL_DO_SYSCALL(tid,res); break; + case SNDCTL_DSP_POST: + case SNDCTL_DSP_RESET: + case SNDCTL_DSP_SYNC: + case SNDCTL_DSP_SETSYNCRO: + case SNDCTL_DSP_SETDUPLEX: + KERNEL_DO_SYSCALL(tid,res); + break; + /* Real Time Clock (/dev/rtc) ioctls */ # ifndef GLIBC_2_1 case RTC_UIE_ON: -- 2.47.2