char/dtlk: replace
Subsystems (2)
PATCH 4/33 char/dtlk: replace
Any comments would be appreciated.
Description: Use msleep_interruptible() instead of schedule_timeout() / dtlk_delay() to guarantee the task delays as expected. Removes the definition/prototype of dtlk_delay().
Signed-off-by Nishanth Aravamudan <[email protected]>
drivers/char/dtlk.c +5 -14
@@ -107,7 +107,6 @@ static struct file_operations dtlk_fops };/* local prototypes */ -static void dtlk_delay (int ms);static int dtlk_dev_probe (void );static struct dtlk_settings *dtlk_interrogate (void );static int dtlk_readable (void );
@@ -146,7 +145,7 @@ static ssize_t dtlk_read(struct file *fireturn i;if (file->f_flags &O_NONBLOCK )break ; -dtlk_delay (100 ); +msleep_interruptible (100 ); }if (retries == loops_per_jiffy)printk (KERN_ERR "dtlk_read times out\n" );
@@ -191,7 +190,7 @@ static ssize_t dtlk_write(struct file *frate to 500 bytes/sec, but that's still enough to keep up with the speech synthesizer. */ -dtlk_delay (1 ); +msleep_interruptible (1 ); else {/* the RDY bit goes zero 2-3 usec after writing, and goes 1 again
@@ -212,7 +211,7 @@ static ssize_t dtlk_write(struct file *fif (file->f_flags &O_NONBLOCK )break ; -dtlk_delay (1 ); +msleep_interruptible (1 );if (++retries >10 *HZ ) {/* wait no more than 10 sec from last write */
@@ -351,8 +350,7 @@ static int __init dtlk_init(void) static void __exit dtlk_cleanup (void) {dtlk_write_bytes ("goodbye" ,8 ); - current->state =TASK_INTERRUPTIBLE ; -schedule_timeout (5 *HZ /10 );/* nap 0.50 sec but +msleep_interruptible (500 );/* nap 0.50 sec but could be awakened earlier by signals... */
@@ -368,13 +366,6 @@ module_exit(dtlk_cleanup);/* ------------------------------------------------------------------------ */ -/* sleep for ms milliseconds */ -static void dtlk_delay (int ms) -{ - current->state =TASK_INTERRUPTIBLE ; -schedule_timeout ((ms *HZ +1000 -HZ ) /1000 ); -} -static int dtlk_readable (void ) {#ifdef TRACING
@@ -431,7 +422,7 @@ static int __init dtlk_dev_probe(void)/* posting an index takes 18 msec. Here, we wait up to 100 msec to see whether it appears. */ -dtlk_delay (100 ); +msleep_interruptible (100 ); dtlk_has_indexing =dtlk_readable ();#ifdef TRACING printk (", indexing %d\n" , dtlk_has_indexing);
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors