]> Zhao Yanbai Git Server - minix.git/commitdiff
Fixed a bug in do_sdevio() that broke I/O size computations.
authorKees van Reeuwijk <reeuwijk@few.vu.nl>
Thu, 14 Jan 2010 14:51:23 +0000 (14:51 +0000)
committerKees van Reeuwijk <reeuwijk@few.vu.nl>
Thu, 14 Jan 2010 14:51:23 +0000 (14:51 +0000)
Removed redundant size computations.
Cleaned up code.

kernel/arch/i386/do_sdevio.c
kernel/system/do_devio.c

index 63b152aff9ed1ed5b6045703b161211b8accd522..338899af7305e61b72e392c3fd64b58c7a777b99 100644 (file)
@@ -21,8 +21,9 @@
 /*===========================================================================*
  *                             do_sdevio                                    *
  *===========================================================================*/
-PUBLIC int do_sdevio(m_ptr)
-register message *m_ptr;       /* pointer to request message */
+PUBLIC int do_sdevio(
+  register message *m_ptr      /* pointer to request message */
+)
 {
   vir_bytes newoffset;
   endpoint_t newep;
@@ -30,7 +31,7 @@ register message *m_ptr;      /* pointer to request message */
   int count = m_ptr->DIO_VEC_SIZE;
   long port = m_ptr->DIO_PORT;
   phys_bytes phys_buf;
-  int i, req_type, req_dir, io_type, size, nr_io_range;
+  int i, req_type, req_dir, size, nr_io_range;
   struct proc *rp;
   struct priv *privp;
   struct io_range *iorp;
@@ -103,25 +104,18 @@ register message *m_ptr;  /* pointer to request message */
 
   vm_set_cr3(destproc);
 
-       switch (io_type)
-       {
+  switch (req_type)
+  {
        case _DIO_BYTE: size= 1; break;
        case _DIO_WORD: size= 2; break;
        case _DIO_LONG: size= 4; break;
        default: size= 4; break;        /* Be conservative */
-       }
+  }
 
   rp= proc_addr(who_p);
   privp= priv(rp);
   if (privp && privp->s_flags & CHECK_IO_PORT)
   {
-       switch (io_type)
-       {
-       case _DIO_BYTE: size= 1; break;
-       case _DIO_WORD: size= 2; break;
-       case _DIO_LONG: size= 4; break;
-       default: size= 4; break;        /* Be conservative */
-       }
        port= m_ptr->DIO_PORT;
        nr_io_range= privp->s_nr_io_range;
        for (i= 0, iorp= privp->s_io_tab; i<nr_io_range; i++, iorp++)
index 65834be388e9c472848e4fc09f0618790fd7e079..210d7618c67530233b47821f9c89f3e4bf99a1b9 100644 (file)
@@ -17,8 +17,9 @@
 /*===========================================================================*
  *                             do_devio                                     *
  *===========================================================================*/
-PUBLIC int do_devio(m_ptr)
-register message *m_ptr;       /* pointer to request message */
+PUBLIC int do_devio(
+    register message *m_ptr    /* pointer to request message */
+)
 {
     struct proc *rp;
     struct priv *privp;
@@ -30,13 +31,13 @@ register message *m_ptr;    /* pointer to request message */
     io_type = m_ptr->DIO_REQUEST & _DIO_TYPEMASK;
     io_dir  = m_ptr->DIO_REQUEST & _DIO_DIRMASK;
 
-       switch (io_type)
-       {
+    switch (io_type)
+    {
        case _DIO_BYTE: size= 1; break;
        case _DIO_WORD: size= 2; break;
        case _DIO_LONG: size= 4; break;
        default: size= 4; break;        /* Be conservative */
-       }
+    }
 
     rp= proc_addr(who_p);
     privp= priv(rp);
@@ -47,13 +48,6 @@ register message *m_ptr;     /* pointer to request message */
     }
     if (privp->s_flags & CHECK_IO_PORT)
     {
-       switch (io_type)
-       {
-       case _DIO_BYTE: size= 1; break;
-       case _DIO_WORD: size= 2; break;
-       case _DIO_LONG: size= 4; break;
-       default: size= 4; break;        /* Be conservative */
-       }
        port= m_ptr->DIO_PORT;
        nr_io_range= privp->s_nr_io_range;
        for (i= 0, iorp= privp->s_io_tab; i<nr_io_range; i++, iorp++)