Replace direct wait-queue usage with wait_event_timeout(). Removed some local variables which help determine loop time, but which are now compressed into the wait_event_timeout() macro. Patch is compile-tested.
Signed-off-by: Nishanth Aravamudan <[EMAIL PROTECTED]> Signed-off-by: Domen Puncer <[EMAIL PROTECTED]> --- kj-domen/drivers/usb/class/usb-midi.c | 18 ++++-------------- 1 files changed, 4 insertions(+), 14 deletions(-) diff -puN drivers/usb/class/usb-midi.c~int_sleep_on-drivers_usb_class_usb-midi drivers/usb/class/usb-midi.c --- kj/drivers/usb/class/usb-midi.c~int_sleep_on-drivers_usb_class_usb-midi 2005-03-05 16:12:10.000000000 +0100 +++ kj-domen/drivers/usb/class/usb-midi.c 2005-03-05 16:12:10.000000000 +0100 @@ -37,6 +37,7 @@ #include <linux/poll.h> #include <linux/sound.h> #include <linux/init.h> +#include <linux/wait.h> #include <asm/semaphore.h> #include "usb-midi.h" @@ -317,9 +318,7 @@ static int usb_write( struct midi_out_en int pipe; int ret = 0; int status; - int maxretry = 50; - DECLARE_WAITQUEUE(wait,current); init_waitqueue_head(&ep->wait); d = ep->usbdev; @@ -335,19 +334,10 @@ static int usb_write( struct midi_out_en goto error; } - add_wait_queue( &ep->wait, &wait ); - set_current_state( TASK_INTERRUPTIBLE ); - - while( ep->urb->status == -EINPROGRESS ) { - if ( maxretry-- < 0 ) { - printk(KERN_ERR "usbmidi: usb_bulk_msg timed out\n"); - ret = -ETIME; - break; - } - interruptible_sleep_on_timeout( &ep->wait, 10 ); + if (!wait_event_timeout(ep->wait, (ep->urb->status != -EINPROGRESS), 500)) { + printk(KERN_ERR "usbmidi: usb_bulk_msg timed out\n"); + ret = -ETIME; } - set_current_state( TASK_RUNNING ); - remove_wait_queue( &ep->wait, &wait ); error: return ret; _ ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel