Skip to contentSkip to conversation

media/msp3400: replace schedule_timeout() with msleep_interruptible()

PATCH In review [email protected] 1 participant 1 message Sep 24, 2004 Media (V4L/DVB)

lore
Share & tools
lore
#0 lore raw

PATCH 13/21 media/msp3400: replace schedule_timeout() with msleep_interruptible()

Any comments would be appreciated.

Description: Use msleep_interruptible() instead of schedule_timeout() to guarantee the task delays as expected.

---

 linux-2.6.9-rc2-bk7-max/drivers/media/video/msp3400.c |   13 ++++++-------
 1 files changed, 6 insertions(+), 7 deletions(-)
drivers/media/video/msp3400.c renamed from drivers/media/video/msp3400.c~msleep_interruptible-drivers_media_video_msp3400 +6 -7
diff -puN drivers/media/video/msp3400.c~msleep_interruptible-drivers_media_video_msp3400 drivers/media/video/msp3400.c
@@ -191,8 +191,7 @@ msp3400c_read(struct i2c_client *client,
 		err++;
 		printk(KERN_WARNING "msp34xx: I/O error #%d (read 0x%02x/0x%02x)\n",
 		       err, dev, addr);
-		set_current_state(TASK_INTERRUPTIBLE);
-		schedule_timeout(HZ/10);
+		msleep_interruptible(100);
 	}
 	if (3 == err) {
 		printk(KERN_WARNING "msp34xx: giving up, reseting chip. Sound will go off, sorry folks :-|\n");
@@ -220,8 +219,7 @@ msp3400c_write(struct i2c_client *client
 		err++;
 		printk(KERN_WARNING "msp34xx: I/O error #%d (write 0x%02x/0x%02x)\n",
 		       err, dev, addr);
-		set_current_state(TASK_INTERRUPTIBLE);
-		schedule_timeout(HZ/10);
+		msleep_interruptible(100);
 	}
 	if (3 == err) {
 		printk(KERN_WARNING "msp34xx: giving up, reseting chip. Sound will go off, sorry folks :-|\n");
@@ -740,11 +738,12 @@ static int msp34xx_sleep(struct msp3400c
 
 	add_wait_queue(&msp->wq, &wait);
 	if (!msp->rmmod) {
-		set_current_state(TASK_INTERRUPTIBLE);
-		if (timeout < 0)
+		if (timeout < 0) {
+			set_current_state(TASK_INTERRUPTIBLE);
 			schedule();
+		}
 		else
-			schedule_timeout(timeout);
+			msleep_interruptible(jiffies_to_msecs(timeout));
 	}
 	remove_wait_queue(&msp->wq, &wait);
 	return msp->rmmod || signal_pending(current);

_