polling loops: change exit condition to
Subsystems (4)
PATCH 4/21 polling loops: change exit condition to
there were bug in drivers/char/sx.c - loop might took 50s instead of 5 seconds as comment say! who is responsible for those files?
Signed-off-by Marcin Slusarz <[email protected]>
drivers/char/dsp56k.c +8 -6
@@ -60,11 +60,13 @@#define handshake (count, maxio, timeout,ENABLE , f) \ { \ - long i, t, m; \ + long i, m; \ + unsigned long end_time; \ while (count > 0) { \ m = min_t(unsigned long, count, maxio); \ for (i = 0; i < m; i++) { \ - for (t = 0; t < timeout && !ENABLE; t++) \ + end_time = jiffies + msecs_to_jiffies((timeout) * 20); \ + while (time_before(jiffies, end_time) && !ENABLE) { \ msleep(20); \ if(!ENABLE) \ return -EIO; \
@@ -77,8 +79,8 @@#define tx_wait (n) \ { \ - int t; \ - for(t = 0; t < n && !DSP56K_TRANSMIT; t++) \ + unsigned long end_time = jiffies + msecs_to_jiffies((n) * 10); \ + while (time_before(jiffies, end_time) && !DSP56K_TRANSMIT) \ msleep(10); \ if(!DSP56K_TRANSMIT) { \ return -EIO; \
@@ -87,8 +89,8 @@#define rx_wait (n) \ { \ - int t; \ - for(t = 0; t < n && !DSP56K_RECEIVE; t++) \ + unsigned long end_time = jiffies + msecs_to_jiffies((n) * 10); \ + while (time_before(jiffies, end_time) && !DSP56K_RECEIVE) \ msleep(10); \ if(!DSP56K_RECEIVE) { \ return -EIO; \
drivers/char/pcmcia/synclink_cs.c +2 -2
@@ -4100,8 +4100,8 @@ BOOLEAN irq_test(MGSLPC_INFO *info)spin_unlock_irqrestore (&info->lock,flags); - end_time0; -while (end_time-- && !info->irq_occurred) { + end_time = jiffies +msecs_to_jiffies (1000 ); +while (time_before (jiffies, end_time) && !info->irq_occurred) {msleep_interruptible (10 ); }
SONY VAIO CONTROL DEVICE DRIVER
P: Stelian Pop
M: [email protected]
drivers/char/sonypi.c +5 -3
@@ -720,7 +720,8 @@ static void sonypi_camera_off(void)/* Turns the camera on */ static void sonypi_camera_on (void ) { -int i, j; +int j; +unsigned long end_time;if (sonypi_device.camera_power)return ;
@@ -731,12 +732,13 @@ static void sonypi_camera_on(void)msleep (10 );sonypi_call1 (0x93 ); -for (i =400 ; i >0 ; i--) { + end_time = jiffies +msecs_to_jiffies (4000 ); +while (time_before (jiffies, end_time)) {if (sonypi_camera_ready ())break ;msleep (10 ); } -if (i) +if (time_before (jiffies, end_time))break ; }
P: Roger Wolff
M: [email protected]
drivers/char/sx.c +8 -5
@@ -1515,8 +1515,7 @@ static int sx_open (struct tty_struct *static void sx_close (void *ptr) {struct sx_port *port = ptr; -/* Give the port 5 seconds to close down. */ -int to =5 *HZ ; +unsigned long start_time, end_time;func_enter ();
@@ -1524,9 +1523,13 @@ static void sx_close (void *ptr)sx_reconfigure_port (port);sx_send_command (port,HS_CLOSE ,0 ,0 ); -while (to-- && (sx_read_channel_byte (port, hi_hstat) !=HS_IDLE_CLOSED )) +/* Give the port 5 seconds to close down. */ + start_time = jiffies; + end_time = start_time +msecs_to_jiffies (5000 ); +while (time_before (jiffies, end_time) && (sx_read_channel_byte (port, hi_hstat) !=HS_IDLE_CLOSED ))if (msleep_interruptible (10 ))break ; + end_time = jiffies;if (sx_read_channel_byte (port, hi_hstat) !=HS_IDLE_CLOSED ) {if (sx_send_command (port,HS_FORCE_CLOSED ,-1 ,HS_IDLE_CLOSED ) !=1 ) { printk (KERN_ERR
@@ -1535,8 +1538,8 @@ static void sx_close (void *ptr)sx_dprintk (SX_DEBUG_CLOSE ,"sent the force_close command.\n" ); } -sx_dprintk (SX_DEBUG_CLOSE ,"waited %d jiffies for close. count=%d\n" , -5 *HZ - to -1 , port->gs.count); +sx_dprintk (SX_DEBUG_CLOSE ,"waited %ld jiffies for close. count=%d\n" , + end_time - start_time, port->gs.count);if (port->gs.count) {sx_dprintk (SX_DEBUG_CLOSE ,"WARNING port count:%d\n" , port->gs.count);
drivers/char/synclink.c +3 -3
@@ -7112,8 +7112,8 @@ static BOOLEAN mgsl_register_test( struc*/ static BOOLEAN mgsl_irq_test (struct mgsl_struct *info ) { -unsigned long EndTime;unsigned long flags; +unsigned long end_time;spin_lock_irqsave (&info->irq_spinlock,flags);usc_reset (info);
@@ -7140,8 +7140,8 @@ static BOOLEAN mgsl_irq_test( struct mgsspin_unlock_irqrestore (&info->irq_spinlock,flags); - EndTime0; -while ( EndTime-- && !info->irq_occurred ) { + end_time = jiffies +msecs_to_jiffies (1000 ); +while (time_before (jiffies, end_time) && !info->irq_occurred) {msleep_interruptible (10 ); }
drivers/char/synclinkmp.c +3 -3
@@ -5142,8 +5142,8 @@ int register_test(SLMP_INFO *info)int irq_test (SLMP_INFO *info) { -unsigned long timeout;unsigned long flags; +unsigned long end_time;unsigned char timer = (info->port_num &1 ) ?TIMER2 :TIMER0 ;
@@ -5177,8 +5177,8 @@ int irq_test(SLMP_INFO *info)spin_unlock_irqrestore (&info->lock,flags); - timeout0; -while ( timeout-- && !info->irq_occurred ) { + end_time = jiffies +msecs_to_jiffies (1000 ); +while (time_before (jiffies, end_time) && !info->irq_occurred) {msleep_interruptible (10 ); }
TPM DEVICE DRIVER
P: Kylene Hall
M: [email protected]
drivers/char/tpm/tpm_infineon.c +5 -3
@@ -135,15 +135,17 @@ static int empty_fifo(struct tpm_chip *cstatic int wait (struct tpm_chip *chip,int wait_for_bit) {int status; -int i; -for (i =0 ; i <TPM_MAX_TRIES ; i++) { +unsigned long end_time; + + end_time = jiffies +msecs_to_jiffies (TPM_MAX_TRIES *TPM_MSLEEP_TIME ); +while (time_before (jiffies, end_time)) { status =inb (chip->vendor->base +STAT );/* check the status-register if wait_for_bit is set */ if (status &1 << wait_for_bit)break ;msleep (TPM_MSLEEP_TIME ); } -if (i =TPM_MAX_TRIES ) {/* timeout occurs */ +if (time_after_eq (jiffies, end_time)) {/* timeout occurs */ if (wait_for_bit =STAT_XFE )dev_err (chip->dev,"Timeout in wait(STAT_XFE)\n" );if (wait_for_bit =STAT_RDA )
_______________________________________________
Kernel-janitors mailing list
[email protected]
https://lists.osdl.org/mailman/listinfo/kernel-janitors