--- valgrind/coregrind/m_syswrap/syswrap-amd64-linux.c.orig	2006-08-02 16:51:51.000000000 -0600
+++ valgrind/coregrind/m_syswrap/syswrap-amd64-linux.c	2006-08-02 16:53:19.000000000 -0600
@@ -1124,7 +1124,7 @@
    GENXY(__NR_times,             sys_times),          // 100 
    PLAXY(__NR_ptrace,            sys_ptrace),         // 101 
    GENX_(__NR_getuid,            sys_getuid),         // 102 
-   //   (__NR_syslog,            sys_syslog),         // 103 
+   LINXY(__NR_syslog,            sys_syslog),         // 103 
    GENX_(__NR_getgid,            sys_getgid),         // 104 
 
    GENX_(__NR_setuid,            sys_setuid),         // 105 
--- valgrind/include/vki-linux.h.orig	2006-08-02 18:22:21.000000000 -0600
+++ valgrind/include/vki-linux.h	2006-08-02 18:38:02.000000000 -0600
@@ -1556,7 +1556,9 @@
 
 #define VKI_BLKROSET   _VKI_IO(0x12,93)	/* set device read-only (0 = read-write) */
 #define VKI_BLKROGET   _VKI_IO(0x12,94)	/* get read-only status (0 = read_write) */
+#define VKI_BLKRRPART  _VKI_IO(0x12,95) /* re-read partition table */
 #define VKI_BLKGETSIZE _VKI_IO(0x12,96) /* return device size /512 (long *arg) */
+#define VKI_BLKFLSBUF  _VKI_IO(0x12,97) /* flush buffer cache */
 #define VKI_BLKRASET   _VKI_IO(0x12,98)	/* set read ahead for block device */
 #define VKI_BLKRAGET   _VKI_IO(0x12,99)	/* get current read ahead setting */
 #define VKI_BLKFRASET  _VKI_IO(0x12,100)/* set filesystem (mm/filemap.c) read-ahead */
@@ -1631,6 +1633,54 @@
 //#define SG_GET_COMMAND_Q 0x2270   /* Yields 0 (queuing off) or 1 (on) */
 #define VKI_SG_SET_COMMAND_Q 0x2271   /* Change queuing state with 0 or 1 */
 
+
+typedef struct vki_scsi_idlun
+{
+    int mux4;
+    int host_unique_id;
+
+} vki_scsi_idlun_t;
+#define VKI_SCSI_IOCTL_GET_IDLUN 0x5382		/* Gets a struct vki_scsi_idlun */
+#define VKI_SCSI_IOCTL_PROBE_HOST 0x5385	/* Gets an arrary describing the SCSI host */
+#define VKI_SCSI_IOCTL_GET_BUS_NUMBER 0x5386	/* Get the bus number for a device */
+
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/linux/fd.h
+//----------------------------------------------------------------------
+#define VKI_FDRESET 0x254		/* Takes an int by value */
+#define VKI_FDGETDRVTYP 0x20f	/* Returns char floppy_drive_name[16] */
+typedef struct vki_floppy_drive_struct {
+	unsigned long flags;
+	unsigned long spinup_date;
+	unsigned long select_date;
+	unsigned long first_read_date;
+	short probed_format;
+	short track;
+	short maxblock;
+	short maxtrack;
+	int generation;
+	int keep_data;
+	int fd_ref;
+	int fd_device;
+	unsigned long last_checked;
+	char *dmabuf;
+	int bufblocks;
+} vki_floppy_drive_struct_t;
+#define VKI_FDPOLLDRVSTAT 0x213	    /* returns a struct floppy_drive_struct */
+typedef struct vki_floppy_struct {
+	unsigned int	size;
+	unsigned int	sect;
+	unsigned int	head;
+	unsigned int	track;
+	unsigned int	stretch;
+	unsigned char	gap;
+	unsigned char	rate;
+	unsigned char	spec1;
+	unsigned char	fmt_gap;
+	const char	* name;
+} vki_floppy_struct_t;
+#define VKI_FDGETPRM 0x204	    /* returns a struct floppy_struct */
+
 //----------------------------------------------------------------------
 // From linux-2.6.8.1/include/linux/cdrom.h
 //----------------------------------------------------------------------
@@ -1640,6 +1690,7 @@
                                            (struct cdrom_tochdr) */
 #define VKI_CDROMREADTOCENTRY	0x5306 /* Read TOC entry 
                                            (struct cdrom_tocentry) */
+#define VKI_CDROMEJECT		0x5309 /* Eject cdrom media */
 #define VKI_CDROMSUBCHNL	0x530b /* Read subchannel data 
                                            (struct cdrom_subchnl) */
 #define VKI_CDROMREADMODE2	0x530c /* Read CDROM mode 2 data (2336 Bytes) 
--- valgrind/coregrind/m_syswrap/syswrap-generic.c.orig	2006-08-02 18:22:13.000000000 -0600
+++ valgrind/coregrind/m_syswrap/syswrap-generic.c	2006-08-02 18:43:49.000000000 -0600
@@ -3227,6 +3227,33 @@
    case VKI_SG_GET_SG_TABLESIZE: /* 0x227f */
       PRE_MEM_WRITE( "ioctl(SG_GET_SG_TABLESIZE)", ARG3, sizeof(int) );
       break;
+   case VKI_SCSI_IOCTL_GET_IDLUN:
+      PRE_MEM_WRITE( "ioctl(SCSI_IOCTL_GET_IDLUN)", ARG3, sizeof(vki_scsi_idlun_t) );
+      break;
+   case VKI_SCSI_IOCTL_PROBE_HOST:
+      {
+	  int arraylen;
+	  char *array = (char*)ARG3;
+	  PRE_MEM_READ("ioctl(SCSI_IOCTL_PROBE_HOST)",  ARG3, sizeof(char)*4 );
+	  arraylen = array[0] + (array[1]<<8) + (array[2]<<16) + (array[3]<<24);
+	  PRE_MEM_WRITE( "ioctl(SCSI_IOCTL_PROBE_HOST)", ARG3, sizeof(char)*arraylen );
+      }
+      break;
+   case VKI_SCSI_IOCTL_GET_BUS_NUMBER:
+      PRE_MEM_WRITE( "ioctl(SCSI_IOCTL_GET_BUS_NUMBER)", ARG3, sizeof(int) );
+      break;
+
+   case VKI_FDRESET:
+      break;
+   case VKI_FDGETDRVTYP:
+      PRE_MEM_WRITE( "ioctl(FDGETDRVTYP)", ARG3, sizeof(char)*16 );
+      break;
+   case VKI_FDPOLLDRVSTAT:
+      PRE_MEM_WRITE( "ioctl(FDPOLLDRVSTAT)", ARG3, sizeof(vki_floppy_drive_struct_t) );
+      break;
+   case VKI_FDGETPRM:
+      PRE_MEM_WRITE( "ioctl(FDGETPRM)", ARG3, sizeof(vki_floppy_struct_t) );
+      break;
 
    case VKI_IIOCGETCPS:
       PRE_MEM_WRITE( "ioctl(IIOCGETCPS)", ARG3,
@@ -3550,6 +3578,8 @@
    case VKI_BLKROGET:
       PRE_MEM_WRITE( "ioctl(BLKROGET)", ARG3, sizeof(int));
       break;
+   case VKI_BLKRRPART:
+      break;
    case VKI_BLKGETSIZE:
       PRE_MEM_WRITE( "ioctl(BLKGETSIZE)", ARG3, sizeof(unsigned long));
       break;
@@ -3558,6 +3588,8 @@
    case VKI_BLKRAGET:
       PRE_MEM_WRITE( "ioctl(BLKRAGET)", ARG3, sizeof(long));
       break;
+   case VKI_BLKFLSBUF:
+      break;
    case VKI_BLKFRASET:
       break;
    case VKI_BLKFRAGET:
@@ -3624,6 +3656,8 @@
       PRE_MEM_WRITE( "ioctl(CDROMREADTOCENTRY)", ARG3, 
 		     sizeof(struct vki_cdrom_tocentry));
       break;
+   case VKI_CDROMEJECT:
+      break;
    case VKI_CDROMMULTISESSION: /* 0x5310 */
       PRE_MEM_WRITE( "ioctl(CDROMMULTISESSION)", ARG3,
 		     sizeof(struct vki_cdrom_multisession));
@@ -4042,6 +4076,28 @@
    case VKI_SG_GET_SG_TABLESIZE:
       POST_MEM_WRITE(ARG3, sizeof(int));
       break;      
+   case VKI_SCSI_IOCTL_GET_IDLUN:
+      POST_MEM_WRITE(ARG3, sizeof(vki_scsi_idlun_t));
+      break;
+   case VKI_SCSI_IOCTL_PROBE_HOST:
+      if (RES > 0 && ARG3 )
+	  POST_MEM_WRITE(ARG3, sizeof(char)*RES);
+      break;
+   case VKI_SCSI_IOCTL_GET_BUS_NUMBER:
+      POST_MEM_WRITE(ARG3, sizeof(int));
+      break;
+
+   case VKI_FDRESET:
+      break;
+   case VKI_FDGETDRVTYP:
+      POST_MEM_WRITE( ARG3, sizeof(char)*16 );
+      break;
+   case VKI_FDPOLLDRVSTAT:
+      POST_MEM_WRITE( ARG3, sizeof(vki_floppy_drive_struct_t) );
+      break;
+   case VKI_FDGETPRM:
+      POST_MEM_WRITE( ARG3, sizeof(vki_floppy_struct_t) );
+      break;
 
    case VKI_IIOCGETCPS:
       POST_MEM_WRITE( ARG3, VKI_ISDN_MAX_CHANNELS * 2 * sizeof(unsigned long) );
@@ -4260,6 +4317,8 @@
    case VKI_BLKROGET:
       POST_MEM_WRITE(ARG3, sizeof(int));
       break;
+   case VKI_BLKRRPART:
+      break;
    case VKI_BLKGETSIZE:
       POST_MEM_WRITE(ARG3, sizeof(unsigned long));
       break;
@@ -4268,6 +4327,8 @@
    case VKI_BLKRAGET:
       POST_MEM_WRITE(ARG3, sizeof(long));
       break;
+   case VKI_BLKFLSBUF:
+      break;
    case VKI_BLKFRASET:
       break;
    case VKI_BLKFRAGET:
@@ -4309,6 +4370,8 @@
    case VKI_CDROMREADTOCENTRY:
       POST_MEM_WRITE(ARG3, sizeof(struct vki_cdrom_tocentry));
       break;
+   case VKI_CDROMEJECT:
+      break;
    case VKI_CDROMMULTISESSION:
       POST_MEM_WRITE(ARG3, sizeof(struct vki_cdrom_multisession));
       break;
