Skip to contentSkip to conversation

5/34: block/amiflop: replace sleep_on() with

PATCH New Nishanth Aravamudan 1 participant 1 message Jan 25, 2005

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 5/34: block/amiflop: replace sleep_on() with

Hi,

Please consider applying.

Description: Use wait_event() instead of the deprecated sleep_on(). Many of the replacements are straight-forward. Two, though are more difficult (in ms_delay() and fd_motor_on()). In the former, the second wait_event() does not make much sense; I have simply duplicated the code from the first in that function. In the latter, the conditional is the same as what will trying a wake_up(&motor_wait) in the code. Hence, it should function exactly the same as it does now.

drivers/block/amiflop.c +9 -14
@@ -64,6 +64,7 @@
 #include <linux/buffer_head.h>
 #include <linux/blkdev.h>
 #include <linux/elevator.h>
+#include <linux/wait.h>
 
 #include <asm/setup.h>
 #include <asm/uaccess.h>
@@ -221,15 +222,14 @@ static void ms_delay(int ms)
 	int ticks;
 	if (ms > 0) {
 		local_irq_save(flags);
-		while (ms_busy == 0)
-			sleep_on(&ms_wait);
+		wait_event(ms_wait, (ms_busy != 0));
 		ms_busy = 0;
 		local_irq_restore(flags);
 		ticks = MS_TICKS*ms-1;
 		ciaa.tblo=ticks%256;
 		ciaa.tbhi=ticks/256;
 		ciaa.crb=0x19; /*count eclock, force load, one-shoot, start */
-		sleep_on(&ms_wait);
+		wait_event(ms_wait, (ms_busy != 0));
 	}
 }
 
@@ -251,8 +251,7 @@ static void get_fdc(int drive)
 	printk("get_fdc: drive %d  fdc_busy %d  fdc_nested %d\n",drive,fdc_busy,fdc_nested);
 #endif
 	local_irq_save(flags);
-	while (!try_fdc(drive))
-		sleep_on(&fdc_wait);
+	wait_event(fdc_wait, try_fdc(drive));
 	fdc_busy = drive;
 	fdc_nested++;
 	local_irq_restore(flags);
@@ -348,7 +347,7 @@ static int fd_motor_on(int nr)
 		mod_timer(&motor_on_timer, jiffies + HZ/2);
 
 		on_attempts = 10;
-		sleep_on (&motor_wait);
+		wait_event(motor_wait, (!(ciaa.pra & DSKRDY) || on_attempts == 0));
 		fd_deselect(nr);
 	}
 
@@ -579,8 +578,7 @@ static void raw_read(int drive)
 {
 	drive&=3;
 	get_fdc(drive);
-	while (block_flag)
-		sleep_on(&wait_fd_block);
+	wait_event(wait_fd_block, !block_flag);
 	fd_select(drive);
 	/* setup adkcon bits correctly */
 	custom.adkcon = ADK_MSBSYNC;
@@ -595,8 +593,7 @@ static void raw_read(int drive)
 
 	block_flag = 1;
 
-	while (block_flag)
-		sleep_on (&wait_fd_block);
+	wait_event(wait_fd_block, !block_flag);
 
 	custom.dsklen = 0;
 	fd_deselect(drive);
@@ -613,8 +610,7 @@ static int raw_write(int drive)
 		rel_fdc();
 		return 0;
 	}
-	while (block_flag)
-		sleep_on(&wait_fd_block);
+	wait_event(wait_fd_block, !block_flag);
 	fd_select(drive);
 	/* clear adkcon bits */
 	custom.adkcon = ADK_PRECOMP1|ADK_PRECOMP0|ADK_WORDSYNC|ADK_MSBSYNC;
@@ -1291,8 +1287,7 @@ static int non_int_flush_track (unsigned
 			writepending = 0;
 			return 0;
 		}
-		while (block_flag == 2)
-			sleep_on (&wait_fd_block);
+		wait_event(wait_fd_block, (block_flag != 2));
 	}
 	else {
 		local_irq_restore(flags);

_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors