Use wait_event_timeout() instead of custom wait-queue code. Remove
now unused variables.

Signed-off-by: Nishanth Aravamudan <[EMAIL PROTECTED]>
Signed-off-by: Domen Puncer <[EMAIL PROTECTED]>
---


 kj-domen/drivers/usb/class/usblp.c |   24 +++++++-----------------
 1 files changed, 7 insertions(+), 17 deletions(-)

diff -puN drivers/usb/class/usblp.c~wait_event_int_t-drivers_usb_class_usblp 
drivers/usb/class/usblp.c
--- kj/drivers/usb/class/usblp.c~wait_event_int_t-drivers_usb_class_usblp       
2005-03-05 16:11:26.000000000 +0100
+++ kj-domen/drivers/usb/class/usblp.c  2005-03-05 16:11:26.000000000 +0100
@@ -54,6 +54,7 @@
 #include <linux/init.h>
 #include <linux/slab.h>
 #include <linux/lp.h>
+#include <linux/wait.h>
 #undef DEBUG
 #include <linux/usb.h>
 
@@ -622,10 +623,10 @@ done:
 
 static ssize_t usblp_write(struct file *file, const char __user *buffer, 
size_t count, loff_t *ppos)
 {
-       DECLARE_WAITQUEUE(wait, current);
        struct usblp *usblp = file->private_data;
-       int timeout, err = 0, transfer_length = 0;
+       int err = 0, transfer_length = 0;
        size_t writecount = 0;
+       long ret;
 
        while (writecount < count) {
                if (!usblp->wcomplete) {
@@ -635,21 +636,10 @@ static ssize_t usblp_write(struct file *
                                return writecount ? writecount : -EAGAIN;
                        }
 
-                       timeout = USBLP_WRITE_TIMEOUT;
-                       add_wait_queue(&usblp->wait, &wait);
-                       while (timeout) {
-                               if (signal_pending(current)) {
-                                       remove_wait_queue(&usblp->wait, &wait);
-                                       return writecount ? writecount : -EINTR;
-                               }
-                               set_current_state(TASK_INTERRUPTIBLE);
-                               if (usblp->wcomplete) {
-                                       set_current_state(TASK_RUNNING);
-                                       break;
-                               }
-                               timeout = schedule_timeout(timeout);
-                       }
-                       remove_wait_queue(&usblp->wait, &wait);
+                       ret = wait_event_interruptible_timeout(usblp->wait,
+                                                       usblp->wcomplete, 
USBLP_WRITE_TIMEOUT);
+                       if (ret == -ERESTARTSYS)
+                               return writecount ? writecount : -EINTR;
                }
 
                down (&usblp->sem);
_


-------------------------------------------------------
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

Reply via email to