From: Dirk Mueller Date: Wed, 22 Feb 2006 13:20:17 +0000 (+0000) Subject: backport TIOCSERGETLSR, TIOCGICOUNT, HDIO_GET_DMA ioctls (v5633) X-Git-Tag: svn/VALGRIND_3_1_1~28 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6d676afc8657c62d25f3b2d4c9c3af1a3f4181a6;p=thirdparty%2Fvalgrind.git backport TIOCSERGETLSR, TIOCGICOUNT, HDIO_GET_DMA ioctls (v5633) git-svn-id: svn://svn.valgrind.org/valgrind/branches/VALGRIND_3_1_BRANCH@5675 --- diff --git a/coregrind/m_syswrap/syswrap-generic.c b/coregrind/m_syswrap/syswrap-generic.c index fbaaba9c86..ffb1debfaf 100644 --- a/coregrind/m_syswrap/syswrap-generic.c +++ b/coregrind/m_syswrap/syswrap-generic.c @@ -3163,6 +3163,14 @@ PRE(sys_ioctl) PRE_MEM_WRITE( "ioctl(FIONREAD)", ARG3, sizeof(int) ); break; + case VKI_TIOCSERGETLSR: + PRE_MEM_WRITE( "ioctl(TIOCSERGETLSR)", ARG3, sizeof(int) ); + break; + case VKI_TIOCGICOUNT: + PRE_MEM_WRITE( "ioctl(TIOCGICOUNT)", ARG3, + sizeof(struct vki_serial_icounter_struct) ); + break; + case VKI_SG_SET_COMMAND_Q: PRE_MEM_READ( "ioctl(SG_SET_COMMAND_Q)", ARG3, sizeof(int) ); break; @@ -3549,6 +3557,9 @@ PRE(sys_ioctl) case VKI_HDIO_GETGEO: /* 0x0301 */ PRE_MEM_WRITE( "ioctl(HDIO_GETGEO)", ARG3, sizeof(struct vki_hd_geometry)); break; + case VKI_HDIO_GET_DMA: /* 0x030b */ + PRE_MEM_WRITE( "ioctl(HDIO_GET_DMA)", ARG3, sizeof(long)); + break; case VKI_HDIO_GET_IDENTITY: /* 0x030d */ PRE_MEM_WRITE( "ioctl(HDIO_GET_IDENTITY)", ARG3, VKI_SIZEOF_STRUCT_HD_DRIVEID ); @@ -3968,6 +3979,13 @@ POST(sys_ioctl) POST_MEM_WRITE( ARG3, sizeof(int) ); break; + case VKI_TIOCSERGETLSR: + POST_MEM_WRITE( ARG3, sizeof(int) ); + break; + case VKI_TIOCGICOUNT: + POST_MEM_WRITE( ARG3, sizeof(struct vki_serial_icounter_struct) ); + break; + case VKI_SG_SET_COMMAND_Q: break; case VKI_SG_IO: @@ -4244,6 +4262,9 @@ POST(sys_ioctl) case VKI_HDIO_GETGEO: /* 0x0301 */ POST_MEM_WRITE(ARG3, sizeof(struct vki_hd_geometry)); break; + case VKI_HDIO_GET_DMA: /* 0x030b */ + POST_MEM_WRITE(ARG3, sizeof(long)); + break; case VKI_HDIO_GET_IDENTITY: /* 0x030d */ POST_MEM_WRITE(ARG3, VKI_SIZEOF_STRUCT_HD_DRIVEID ); break; diff --git a/include/vki-amd64-linux.h b/include/vki-amd64-linux.h index 79f96a432d..8905529d34 100644 --- a/include/vki-amd64-linux.h +++ b/include/vki-amd64-linux.h @@ -433,6 +433,9 @@ struct vki_termios { #define VKI_TIOCSPTLCK _VKI_IOW('T',0x31, int) /* Lock/unlock Pty */ #define VKI_FIOASYNC 0x5452 +#define TIOCSERGETLSR 0x5459 /* Get line status register */ + +#define TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */ //---------------------------------------------------------------------- // From linux-2.6.9/include/asm-x86_64/poll.h diff --git a/include/vki-linux.h b/include/vki-linux.h index 1eb61d690e..babea066ba 100644 --- a/include/vki-linux.h +++ b/include/vki-linux.h @@ -1816,6 +1816,7 @@ struct vki_hd_geometry { }; #define VKI_HDIO_GETGEO 0x0301 /* get device geometry */ +#define VKI_HDIO_GET_DMA 0x030b /* get use-dma flag */ #define VKI_HDIO_GET_IDENTITY 0x030d /* get IDE identification info */ // [[Nb: done like this because the original type is a huge struct that will @@ -2038,6 +2039,18 @@ enum { VKI_SNDRV_TIMER_IOCTL_PAUSE = _VKI_IO('T', 0xa3), }; +//---------------------------------------------------------------------- +// From linux-2.6.15.4/include/linux/serial.h +//---------------------------------------------------------------------- + +struct vki_serial_icounter_struct { + int cts, dsr, rng, dcd; + int rx, tx; + int frame, overrun, parity, brk; + int buf_overrun; + int reserved[9]; +}; + #endif // __VKI_LINUX_H /*--------------------------------------------------------------------*/ diff --git a/include/vki-ppc32-linux.h b/include/vki-ppc32-linux.h index 150340e385..6fc2fbe88f 100644 --- a/include/vki-ppc32-linux.h +++ b/include/vki-ppc32-linux.h @@ -606,14 +606,14 @@ extern unsigned int __VKI_invalid_size_argument_for_IOC; //#define VKI_TIOCGLCKTRMIOS 0x5456 //#define VKI_TIOCSLCKTRMIOS 0x5457 //#define VKI_TIOCSERGSTRUCT 0x5458 /* For debugging only */ -//#define VKI_TIOCSERGETLSR 0x5459 /* Get line status register */ -// /* ioctl (fd, VKI_TIOCSERGETLSR, &result) where result may be as below */ +#define VKI_TIOCSERGETLSR 0x5459 /* Get line status register */ + /* ioctl (fd, VKI_TIOCSERGETLSR, &result) where result may be as below */ //# define VKI_TIOCSER_TEMT 0x01 /* Transmitter physically empty */ //#define VKI_TIOCSERGETMULTI 0x545A /* Get multiport config */ //#define VKI_TIOCSERSETMULTI 0x545B /* Set multiport config */ //#define VKI_TIOCMIWAIT 0x545C /* wait for a change on serial input line(s) */ -//#define VKI_TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */ +#define VKI_TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */ //---------------------------------------------------------------------- // From linux-2.6.9/include/asm-ppc/poll.h diff --git a/include/vki-x86-linux.h b/include/vki-x86-linux.h index 582f2b6d2a..eb1c99edac 100644 --- a/include/vki-x86-linux.h +++ b/include/vki-x86-linux.h @@ -515,6 +515,9 @@ extern unsigned int __vki_invalid_size_argument_for_IOC; #define VKI_TIOCSPTLCK _VKI_IOW('T',0x31, int) /* Lock/unlock Pty */ #define VKI_FIOASYNC 0x5452 +#define VKI_TIOCSERGETLSR 0x5459 /* Get line status register */ + +#define VKI_TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */ //---------------------------------------------------------------------- // From linux-2.6.8.1/include/asm-i386/poll.h