Browse Source

[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: Nishanth Aravamudan <nacc@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Nishanth Aravamudan 20 years ago
parent
commit
da4cd8dfe1

+ 2 - 4
drivers/char/ftape/lowlevel/fdc-io.c

@@ -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) {
-		set_current_state(TASK_INTERRUPTIBLE);
-		timeout = schedule_timeout(timeout);
-        }
+	while (!ft_interrupt_seen && timeout)
+		timeout = schedule_timeout_interruptible(timeout);
 
 
 	spin_lock_irq(&current->sighand->siglock);
 	spin_lock_irq(&current->sighand->siglock);
 	current->blocked = old_sigmask;
 	current->blocked = old_sigmask;

+ 1 - 4
drivers/char/hw_random.c

@@ -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())
-		{
-			current->state = TASK_INTERRUPTIBLE;
-			schedule_timeout(1);
-		}
+			schedule_timeout_interruptible(1);
 		else
 		else
 			udelay(200);	/* FIXME: We could poll for 250uS ?? */
 			udelay(200);	/* FIXME: We could poll for 250uS ?? */
 
 

+ 2 - 4
drivers/char/ip2/i2lib.c

@@ -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(1);	// short nap 
+			schedule_timeout_interruptible(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 )
 
 
 					ip2trace (CHANN, ITRC_OUTPUT, 61, 0 );
 					ip2trace (CHANN, ITRC_OUTPUT, 61, 0 );
 
 
-					current->state = TASK_INTERRUPTIBLE;
-					schedule_timeout(2);
+					schedule_timeout_interruptible(2);
 					if (signal_pending(current)) {
 					if (signal_pending(current)) {
 						break;
 						break;
 					}
 					}

+ 6 - 12
drivers/char/ipmi/ipmi_si_intf.c

@@ -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(1);
+			schedule_timeout_uninterruptible(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)
 
 
 	/* 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) {
-		set_current_state(TASK_UNINTERRUPTIBLE);
-		schedule_timeout(1);
-	}
+	while (!new_smi->timer_stopped)
+		schedule_timeout_uninterruptible(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)
 
 
 	/* 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) {
-		set_current_state(TASK_UNINTERRUPTIBLE);
-		schedule_timeout(1);
-	}
+	while (!to_clean->timer_stopped)
+		schedule_timeout_uninterruptible(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(1);
+		schedule_timeout_uninterruptible(1);
 	}
 	}
 
 
 	rv = ipmi_unregister_smi(to_clean->intf);
 	rv = ipmi_unregister_smi(to_clean->intf);

+ 2 - 4
drivers/char/ipmi/ipmi_watchdog.c

@@ -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)) {
-		set_current_state(TASK_UNINTERRUPTIBLE);
-		schedule_timeout(1);
-	}
+	while (atomic_read(&set_timeout_tofree))
+		schedule_timeout_uninterruptible(1);
 
 
 	/* Disconnect from IPMI. */
 	/* Disconnect from IPMI. */
 	rv = ipmi_destroy_user(watchdog_user);
 	rv = ipmi_destroy_user(watchdog_user);

+ 4 - 8
drivers/char/mxser.c

@@ -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(5);
+			schedule_timeout_interruptible(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)
 	info->event = 0;
 	info->event = 0;
 	info->tty = NULL;
 	info->tty = NULL;
 	if (info->blocked_open) {
 	if (info->blocked_open) {
-		if (info->close_delay) {
-			set_current_state(TASK_INTERRUPTIBLE);
-			schedule_timeout(info->close_delay);
-		}
+		if (info->close_delay)
+			schedule_timeout_interruptible(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)
 #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(char_time);
+		schedule_timeout_interruptible(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))