Any comments would be appreciated.
Description: Use msleep_interruptible() instead of schedule_timeout() to
guarantee the task delays as expected.
Signed-off-by: Nishanth Aravamudan <[email protected]>
Signed-off-by: Maximilian Attems <[email protected]>
---
linux-2.6.9-rc2-bk7-max/drivers/char/generic_serial.c | 7 +++----
1 files changed, 3 insertions(+), 4 deletions(-)
diff -puN drivers/char/generic_serial.c~msleep_interruptible-drivers_char_generic_serial drivers/char/generic_serial.c
--- linux-2.6.9-rc2-bk7/drivers/char/generic_serial.c~msleep_interruptible-drivers_char_generic_serial 2004-09-21 21:08:06.000000000 +0200
+++ linux-2.6.9-rc2-bk7-max/drivers/char/generic_serial.c 2004-09-21 21:08:06.000000000 +0200
@@ -26,6 +26,7 @@
#include <linux/mm.h>
#include <linux/generic_serial.h>
#include <linux/interrupt.h>
+#include <linux/delay.h>
#include <asm/semaphore.h>
#include <asm/uaccess.h>
@@ -399,8 +400,7 @@ static int gs_wait_tx_flushed (void * pt
gs_dprintk (GS_DEBUG_FLUSH, "Expect to finish in %d jiffies "
"(%d chars).\n", jiffies_to_transmit, charsleft);
- set_current_state (TASK_INTERRUPTIBLE);
- schedule_timeout(jiffies_to_transmit);
+ msleep_interruptible(jiffies_to_msecs(jiffies_to_transmit));
if (signal_pending (current)) {
gs_dprintk (GS_DEBUG_FLUSH, "Signal pending. Bombing out: ");
rv = -EINTR;
@@ -771,8 +771,7 @@ void gs_close(struct tty_struct * tty, s
if (port->blocked_open) {
if (port->close_delay) {
- set_current_state (TASK_INTERRUPTIBLE);
- schedule_timeout(port->close_delay);
+ msleep_interruptible(jiffies_to_msecs(port->close_delay));
}
wake_up_interruptible(&port->open_wait);
}
_