From: Tom Hughes Date: Mon, 16 Aug 2004 19:46:55 +0000 (+0000) Subject: Add support for the parallel port ioctls. X-Git-Tag: svn/VALGRIND_2_2_0~48 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1e3b61b6cfd5d8d3884b8b738f97bef113c72d76;p=thirdparty%2Fvalgrind.git Add support for the parallel port ioctls. CCMAIL: 86407-done@bugs.kde.org git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2588 --- diff --git a/coregrind/vg_syscalls.c b/coregrind/vg_syscalls.c index 15246e3b74..016d99e3e1 100644 --- a/coregrind/vg_syscalls.c +++ b/coregrind/vg_syscalls.c @@ -3423,6 +3423,88 @@ PRE(ioctl) break; #endif + case PPCLAIM: + case PPEXCL: + case PPYIELD: + case PPRELEASE: + break; + case PPSETMODE: + SYSCALL_TRACK( pre_mem_read, tid, "ioctl(PPSETMODE)", arg3, + sizeof(int) ); + break; + case PPGETMODE: + SYSCALL_TRACK( pre_mem_write, tid, "ioctl(PPGETMODE)", arg3, + sizeof(int) ); + break; + case PPSETPHASE: + SYSCALL_TRACK( pre_mem_read, tid, "ioctl(PPSETPHASE)", arg3, + sizeof(int) ); + break; + case PPGETPHASE: + SYSCALL_TRACK( pre_mem_write, tid, "ioctl(PPGETPHASE)", arg3, + sizeof(int) ); + break; + case PPGETMODES: + SYSCALL_TRACK( pre_mem_write, tid, "ioctl(PPGETMODES)", arg3, + sizeof(unsigned int) ); + break; + case PPSETFLAGS: + SYSCALL_TRACK( pre_mem_read, tid, "ioctl(PPSETFLAGS)", arg3, + sizeof(int) ); + break; + case PPGETFLAGS: + SYSCALL_TRACK( pre_mem_write, tid, "ioctl(PPGETFLAGS)", arg3, + sizeof(int) ); + break; + case PPRSTATUS: + SYSCALL_TRACK( pre_mem_write, tid, "ioctl(PPRSTATUS)", arg3, + sizeof(unsigned char) ); + break; + case PPRDATA: + SYSCALL_TRACK( pre_mem_write, tid, "ioctl(PPRDATA)", arg3, + sizeof(unsigned char) ); + break; + case PPRCONTROL: + SYSCALL_TRACK( pre_mem_write, tid, "ioctl(PPRCONTROL)", arg3, + sizeof(unsigned char) ); + break; + case PPWDATA: + SYSCALL_TRACK( pre_mem_read, tid, "ioctl(PPWDATA)", arg3, + sizeof(unsigned char) ); + break; + case PPWCONTROL: + SYSCALL_TRACK( pre_mem_read, tid, "ioctl(PPWCONTROL)", arg3, + sizeof(unsigned char) ); + break; + case PPFCONTROL: + SYSCALL_TRACK( pre_mem_read, tid, "ioctl(PPFCONTROL)", arg3, + 2 * sizeof(unsigned char) ); + break; + case PPDATADIR: + SYSCALL_TRACK( pre_mem_read, tid, "ioctl(PPDATADIR)", arg3, + sizeof(int) ); + break; + case PPNEGOT: + SYSCALL_TRACK( pre_mem_read, tid, "ioctl(PPNEGOT)", arg3, + sizeof(int) ); + break; + case PPWCTLONIRQ: + SYSCALL_TRACK( pre_mem_read, tid, "ioctl(PPWCTLONIRQ)", arg3, + sizeof(unsigned char) ); + break; + case PPCLRIRQ: + SYSCALL_TRACK( pre_mem_write, tid, "ioctl(PPCLRIRQ)", arg3, + sizeof(int) ); + break; + case PPSETTIME: + SYSCALL_TRACK( pre_mem_read, tid, "ioctl(PPSETTIME)", arg3, + sizeof(struct timeval) ); + break; + case PPGETTIME: + SYSCALL_TRACK( pre_mem_write, tid, "ioctl(PPGETTIME)", arg3, + sizeof(struct timeval) ); + break; + /* We don't have any specific information on it, so try to do something reasonable based on direction and size bits. The encoding scheme is described in @@ -3862,6 +3944,49 @@ POST(ioctl) break; #endif + case PPCLAIM: + case PPEXCL: + case PPYIELD: + case PPRELEASE: + case PPSETMODE: + case PPSETPHASE: + case PPSETFLAGS: + case PPWDATA: + case PPWCONTROL: + case PPFCONTROL: + case PPDATADIR: + case PPNEGOT: + case PPWCTLONIRQ: + case PPSETTIME: + break; + case PPGETMODE: + VG_TRACK( post_mem_write, arg3, sizeof(int) ); + break; + case PPGETPHASE: + VG_TRACK( post_mem_write, arg3, sizeof(int) ); + break; + case PPGETMODES: + VG_TRACK( post_mem_write, arg3, sizeof(unsigned int) ); + break; + case PPGETFLAGS: + VG_TRACK( post_mem_write, arg3, sizeof(int) ); + break; + case PPRSTATUS: + VG_TRACK( post_mem_write, arg3, sizeof(unsigned char) ); + break; + case PPRDATA: + VG_TRACK( post_mem_write, arg3, sizeof(unsigned char) ); + break; + case PPRCONTROL: + VG_TRACK( post_mem_write, arg3, sizeof(unsigned char) ); + break; + case PPCLRIRQ: + VG_TRACK( post_mem_write, arg3, sizeof(int) ); + break; + case PPGETTIME: + VG_TRACK( post_mem_write, arg3, sizeof(struct timeval) ); + break; + /* We don't have any specific information on it, so try to do something reasonable based on direction and size bits. The encoding scheme is described in diff --git a/coregrind/vg_unsafe.h b/coregrind/vg_unsafe.h index b9d65d99da..263e7fa0c6 100644 --- a/coregrind/vg_unsafe.h +++ b/coregrind/vg_unsafe.h @@ -75,6 +75,7 @@ typedef unsigned short u16; #endif #include /* for mii_* structs */ #endif +#include /* for PP* ioctls */ #define __USE_LARGEFILE64 #include /* for struct stat */