Commit da4cd8df authored by Nishanth Aravamudan's avatar Nishanth Aravamudan Committed by Linus Torvalds

[PATCH] drivers/char: fix-up schedule_timeout() usage

Use schedule_timeout_interruptible() instead of
set_current_state()/schedule_timeout() to reduce kernel size.
Signed-off-by: default avatarNishanth Aravamudan <nacc@us.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 2ddee1b7
...@@ -387,10 +387,8 @@ int fdc_interrupt_wait(unsigned int time) ...@@ -387,10 +387,8 @@ int fdc_interrupt_wait(unsigned int time)
set_current_state(TASK_INTERRUPTIBLE); set_current_state(TASK_INTERRUPTIBLE);
add_wait_queue(&ftape_wait_intr, &wait); add_wait_queue(&ftape_wait_intr, &wait);
while (!ft_interrupt_seen && timeout) { while (!ft_interrupt_seen && timeout)
set_current_state(TASK_INTERRUPTIBLE); timeout = schedule_timeout_interruptible(timeout);
timeout = schedule_timeout(timeout);
}
spin_lock_irq(&current->sighand->siglock); spin_lock_irq(&current->sighand->siglock);
current->blocked = old_sigmask; current->blocked = old_sigmask;
......
...@@ -513,10 +513,7 @@ static ssize_t rng_dev_read (struct file *filp, char __user *buf, size_t size, ...@@ -513,10 +513,7 @@ static ssize_t rng_dev_read (struct file *filp, char __user *buf, size_t size,
return ret ? : -EAGAIN; return ret ? : -EAGAIN;
if(need_resched()) if(need_resched())
{ schedule_timeout_interruptible(1);
current->state = TASK_INTERRUPTIBLE;
schedule_timeout(1);
}
else else
udelay(200); /* FIXME: We could poll for 250uS ?? */ udelay(200); /* FIXME: We could poll for 250uS ?? */
......
...@@ -655,8 +655,7 @@ i2QueueCommands(int type, i2ChanStrPtr pCh, int timeout, int nCommands, ...@@ -655,8 +655,7 @@ i2QueueCommands(int type, i2ChanStrPtr pCh, int timeout, int nCommands,
timeout--; // So negative values == forever timeout--; // So negative values == forever
if (!in_interrupt()) { if (!in_interrupt()) {
current->state = TASK_INTERRUPTIBLE; schedule_timeout_interruptible(1); // short nap
schedule_timeout(1); // short nap
} else { } else {
// we cannot sched/sleep in interrrupt silly // we cannot sched/sleep in interrrupt silly
return 0; return 0;
...@@ -1132,8 +1131,7 @@ i2Output(i2ChanStrPtr pCh, const char *pSource, int count, int user ) ...@@ -1132,8 +1131,7 @@ i2Output(i2ChanStrPtr pCh, const char *pSource, int count, int user )
ip2trace (CHANN, ITRC_OUTPUT, 61, 0 ); ip2trace (CHANN, ITRC_OUTPUT, 61, 0 );
current->state = TASK_INTERRUPTIBLE; schedule_timeout_interruptible(2);
schedule_timeout(2);
if (signal_pending(current)) { if (signal_pending(current)) {
break; break;
} }
......
...@@ -1920,8 +1920,7 @@ static int try_get_dev_id(struct smi_info *smi_info) ...@@ -1920,8 +1920,7 @@ static int try_get_dev_id(struct smi_info *smi_info)
for (;;) for (;;)
{ {
if (smi_result == SI_SM_CALL_WITH_DELAY) { if (smi_result == SI_SM_CALL_WITH_DELAY) {
set_current_state(TASK_UNINTERRUPTIBLE); schedule_timeout_uninterruptible(1);
schedule_timeout(1);
smi_result = smi_info->handlers->event( smi_result = smi_info->handlers->event(
smi_info->si_sm, 100); smi_info->si_sm, 100);
} }
...@@ -2256,10 +2255,8 @@ static int init_one_smi(int intf_num, struct smi_info **smi) ...@@ -2256,10 +2255,8 @@ static int init_one_smi(int intf_num, struct smi_info **smi)
/* Wait for the timer to stop. This avoids problems with race /* Wait for the timer to stop. This avoids problems with race
conditions removing the timer here. */ conditions removing the timer here. */
while (! new_smi->timer_stopped) { while (!new_smi->timer_stopped)
set_current_state(TASK_UNINTERRUPTIBLE); schedule_timeout_uninterruptible(1);
schedule_timeout(1);
}
out_err: out_err:
if (new_smi->intf) if (new_smi->intf)
...@@ -2379,17 +2376,14 @@ static void __exit cleanup_one_si(struct smi_info *to_clean) ...@@ -2379,17 +2376,14 @@ static void __exit cleanup_one_si(struct smi_info *to_clean)
/* Wait for the timer to stop. This avoids problems with race /* Wait for the timer to stop. This avoids problems with race
conditions removing the timer here. */ conditions removing the timer here. */
while (! to_clean->timer_stopped) { while (!to_clean->timer_stopped)
set_current_state(TASK_UNINTERRUPTIBLE); schedule_timeout_uninterruptible(1);
schedule_timeout(1);
}
/* Interrupts and timeouts are stopped, now make sure the /* Interrupts and timeouts are stopped, now make sure the
interface is in a clean state. */ interface is in a clean state. */
while (to_clean->curr_msg || (to_clean->si_state != SI_NORMAL)) { while (to_clean->curr_msg || (to_clean->si_state != SI_NORMAL)) {
poll(to_clean); poll(to_clean);
set_current_state(TASK_UNINTERRUPTIBLE); schedule_timeout_uninterruptible(1);
schedule_timeout(1);
} }
rv = ipmi_unregister_smi(to_clean->intf); rv = ipmi_unregister_smi(to_clean->intf);
......
...@@ -1037,10 +1037,8 @@ static __exit void ipmi_unregister_watchdog(void) ...@@ -1037,10 +1037,8 @@ static __exit void ipmi_unregister_watchdog(void)
/* Wait to make sure the message makes it out. The lower layer has /* Wait to make sure the message makes it out. The lower layer has
pointers to our buffers, we want to make sure they are done before pointers to our buffers, we want to make sure they are done before
we release our memory. */ we release our memory. */
while (atomic_read(&set_timeout_tofree)) { while (atomic_read(&set_timeout_tofree))
set_current_state(TASK_UNINTERRUPTIBLE); schedule_timeout_uninterruptible(1);
schedule_timeout(1);
}
/* Disconnect from IPMI. */ /* Disconnect from IPMI. */
rv = ipmi_destroy_user(watchdog_user); rv = ipmi_destroy_user(watchdog_user);
......
...@@ -1058,8 +1058,7 @@ static void mxser_close(struct tty_struct *tty, struct file *filp) ...@@ -1058,8 +1058,7 @@ static void mxser_close(struct tty_struct *tty, struct file *filp)
*/ */
timeout = jiffies + HZ; timeout = jiffies + HZ;
while (!(inb(info->base + UART_LSR) & UART_LSR_TEMT)) { while (!(inb(info->base + UART_LSR) & UART_LSR_TEMT)) {
set_current_state(TASK_INTERRUPTIBLE); schedule_timeout_interruptible(5);
schedule_timeout(5);
if (time_after(jiffies, timeout)) if (time_after(jiffies, timeout))
break; break;
} }
...@@ -1080,10 +1079,8 @@ static void mxser_close(struct tty_struct *tty, struct file *filp) ...@@ -1080,10 +1079,8 @@ static void mxser_close(struct tty_struct *tty, struct file *filp)
info->event = 0; info->event = 0;
info->tty = NULL; info->tty = NULL;
if (info->blocked_open) { if (info->blocked_open) {
if (info->close_delay) { if (info->close_delay)
set_current_state(TASK_INTERRUPTIBLE); schedule_timeout_interruptible(info->close_delay);
schedule_timeout(info->close_delay);
}
wake_up_interruptible(&info->open_wait); wake_up_interruptible(&info->open_wait);
} }
...@@ -1801,8 +1798,7 @@ static void mxser_wait_until_sent(struct tty_struct *tty, int timeout) ...@@ -1801,8 +1798,7 @@ static void mxser_wait_until_sent(struct tty_struct *tty, int timeout)
#ifdef SERIAL_DEBUG_RS_WAIT_UNTIL_SENT #ifdef SERIAL_DEBUG_RS_WAIT_UNTIL_SENT
printk("lsr = %d (jiff=%lu)...", lsr, jiffies); printk("lsr = %d (jiff=%lu)...", lsr, jiffies);
#endif #endif
set_current_state(TASK_INTERRUPTIBLE); schedule_timeout_interruptible(char_time);
schedule_timeout(char_time);
if (signal_pending(current)) if (signal_pending(current))
break; break;
if (timeout && time_after(jiffies, orig_jiffies + timeout)) if (timeout && time_after(jiffies, orig_jiffies + timeout))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment