From: Tom Hughes Date: Thu, 28 Jul 2005 16:13:42 +0000 (+0000) Subject: Handle the HDIO_GETGEO ioctl. Secondary problem found from bug #109780. X-Git-Tag: svn/VALGRIND_3_0_0~28 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1dc053205f7e671ee37bc321aa27c0e18cf4c34b;p=thirdparty%2Fvalgrind.git Handle the HDIO_GETGEO ioctl. Secondary problem found from bug #109780. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4290 --- diff --git a/coregrind/m_syswrap/syswrap-generic.c b/coregrind/m_syswrap/syswrap-generic.c index 7984f30039..94b5c71b72 100644 --- a/coregrind/m_syswrap/syswrap-generic.c +++ b/coregrind/m_syswrap/syswrap-generic.c @@ -3495,6 +3495,9 @@ PRE(sys_ioctl) break; /* Hard disks */ + case VKI_HDIO_GETGEO: /* 0x0301 */ + PRE_MEM_WRITE( "ioctl(HDIO_GETGEO)", ARG3, sizeof(struct vki_hd_geometry)); + break; case VKI_HDIO_GET_IDENTITY: /* 0x030d */ PRE_MEM_WRITE( "ioctl(HDIO_GET_IDENTITY)", ARG3, VKI_SIZEOF_STRUCT_HD_DRIVEID ); @@ -4167,6 +4170,9 @@ POST(sys_ioctl) break; /* Hard disks */ + case VKI_HDIO_GETGEO: /* 0x0301 */ + POST_MEM_WRITE(ARG3, sizeof(struct vki_hd_geometry)); + break; case VKI_HDIO_GET_IDENTITY: /* 0x030d */ POST_MEM_WRITE(ARG3, VKI_SIZEOF_STRUCT_HD_DRIVEID ); break; diff --git a/include/vki-linux.h b/include/vki-linux.h index e4c859c0c9..a7010f837a 100644 --- a/include/vki-linux.h +++ b/include/vki-linux.h @@ -1721,6 +1721,14 @@ typedef struct vki_audio_buf_info { // From linux-2.6.8.1/include/linux/hdreg.h //---------------------------------------------------------------------- +struct vki_hd_geometry { + unsigned char heads; + unsigned char sectors; + unsigned short cylinders; + unsigned long start; +}; + +#define VKI_HDIO_GETGEO 0x0301 /* get device geometry */ #define VKI_HDIO_GET_IDENTITY 0x030d /* get IDE identification info */ // [[Nb: done like this because the original type is a huge struct that will