Handle the HDIO_GETGEO ioctl. Secondary problem found from bug #109780.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4290
This commit is contained in:
Tom Hughes 2005-07-28 16:13:42 +00:00
parent e7a2d4c9cd
commit 1dc053205f
2 changed files with 14 additions and 0 deletions

View File

@ -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;

View File

@ -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