Skip to contentSkip to conversation

serial/crisv10: replace schedule_timeout() with msleep()

PATCH In review [email protected] 2 participants 2 messages Mar 6, 2005 – Mar 7, 2005

lore
Share & tools
lore
#0 lore raw

PATCH 10/14 serial/crisv10: replace schedule_timeout() with msleep()

Use msleep() instead of schedule_timeout() to guarantee the task delays as expected. The current code uses TASK_INTERRUPTIBLE, but does not care about signals, so I believe msleep() should be ok.

---

 kj-domen/drivers/serial/crisv10.c |    6 ++----
 1 files changed, 2 insertions(+), 4 deletions(-)
drivers/serial/crisv10.c renamed from drivers/serial/crisv10.c~msleep-drivers_serial_crisv10 +2 -4
diff -puN drivers/serial/crisv10.c~msleep-drivers_serial_crisv10 drivers/serial/crisv10.c
@@ -3757,10 +3757,8 @@ rs_write(struct tty_struct * tty, int fr
 		e100_enable_rx_irq(info);
 #endif
 
-		if (info->rs485.delay_rts_before_send > 0) {
-			set_current_state(TASK_INTERRUPTIBLE);
-			schedule_timeout((info->rs485.delay_rts_before_send * HZ)/1000);
-		}
+		if (info->rs485.delay_rts_before_send > 0)
+			msleep(info->rs485.delay_rts_before_send);
 	}
 #endif /* CONFIG_ETRAX_RS485 */
 

_

#1 lore raw
Quoted 20 lines · [email protected] wrote:

Use msleep() instead of schedule_timeout() to guarantee the task
delays as expected. The current code uses TASK_INTERRUPTIBLE, but does not care about signals, so I believe msleep() should be ok.

---

  kj-domen/drivers/serial/crisv10.c |    6 ++----
  1 files changed, 2 insertions(+), 4 deletions(-)

diff -puN drivers/serial/crisv10.c~msleep-drivers_serial_crisv10 drivers/serial/crisv10.c
--- kj/drivers/serial/crisv10.c~msleep-drivers_serial_crisv10 2005-03-05 16:10:52.000000000 +0100
+++ kj-domen/drivers/serial/crisv10.c 2005-03-05 16:10:52.000000000 +0100
@@ -3757,10 +3757,8 @@ rs_write(struct tty_struct * tty, int fr
e100_enable_rx_irq(info);
#endif

Quoted 6 lines

- if (info->rs485.delay_rts_before_send > 0) {
- set_current_state(TASK_INTERRUPTIBLE);
- schedule_timeout((info->rs485.delay_rts_before_send * HZ)/1000);
- }
+ if (info->rs485.delay_rts_before_send > 0)
+ msleep(info->rs485.delay_rts_before_send);

Behavioural change: we'll no longer break out of the sleep if a signal is pending. Which probably means you fixed a bug ;)

Please work it with Mikael.