removing sleep_on in
Subsystems (3)
PATCH 1/1 removing sleep_on in
Hi.
This is my first patch on sleep_on, so i'd really like some comments.
Is wait_event(wq, 0) fine, if we are just waiting for wake_up? Second one is just waiting 3 seconds, so i removed wq.
Domen
drivers/usb/media/usbvideo.c +3 -4
@@ -225,7 +225,7 @@static void RingQueue_InterruptibleSleepOn (struct RingQueue *rq) {assert (rq !=NULL ); -interruptible_sleep_on (&rq->wqh); +wait_event_interruptible (&rq->wqh,0 ); }void RingQueue_WakeUpInterruptible (struct RingQueue *rq)
@@ -705,10 +705,9 @@/* Debugging aid */ void usbvideo_SayAndWait (const char *what) { -wait_queue_head_t wq; -init_waitqueue_head (&wq);info ("Say: %s" , what); -interruptible_sleep_on_timeout (&wq,HZ *3 );/* Timeout */ +set_current_state (TASK_INTERRUPTIBLE ); +schedule_timeout (HZ *3 ); }EXPORT_SYMBOL (usbvideo_SayAndWait);
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors
Quoted 3 lines · Domen Puncer
Hi.
This is my first patch on
sleep_on, so i'd really like some comments.
Please cc the linux-usb-devel list, they will help you out too (hopefully...)
thanks,
greg k-h
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors
Quoted 7 lines · Greg KH
Quoted 3 lines · Domen Puncer
Hi.
This is my first patch on
sleep_on, so i'd really like some comments.Please cc the linux-usb-devel list, they will help you out too (hopefully...)
Comments and patch again, for the linux-usb-devel people...
Is wait_event(wq, 0) fine, if we are just waiting for wake_up? Second one is just waiting 3 seconds, so i removed wq.
Domen
drivers/usb/media/usbvideo.c +3 -4
@@ -225,7 +225,7 @@static void RingQueue_InterruptibleSleepOn (struct RingQueue *rq) {assert (rq !=NULL ); -interruptible_sleep_on (&rq->wqh); +wait_event_interruptible (&rq->wqh,0 ); }void RingQueue_WakeUpInterruptible (struct RingQueue *rq)
@@ -705,10 +705,9 @@/* Debugging aid */ void usbvideo_SayAndWait (const char *what) { -wait_queue_head_t wq; -init_waitqueue_head (&wq);info ("Say: %s" , what); -interruptible_sleep_on_timeout (&wq,HZ *3 );/* Timeout */ +set_current_state (TASK_INTERRUPTIBLE ); +schedule_timeout (HZ *3 ); }EXPORT_SYMBOL (usbvideo_SayAndWait);
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors
Quoted 6 lines · Domen Puncer
Quoted 5 lines · Greg KH
Quoted 3 lines · Domen Puncer
Hi.
This is my first patch on
sleep_on, so i'd really like some comments.
Quoted 7 lines
Quoted 2 lines
Please cc the linux-usb-devel list, they will help you out too (hopefully...)
Comments and patch again, for the linux-usb-devel people...
Is
wait_event(wq, 0)fine, if we are just waiting forwake_up? Second one is just waiting 3 seconds, so i removed wq.
I'm really sorry for posting this again.
Forget to compile test it, and missed an error. Bad Domen
drivers/usb/media/usbvideo.c +3 -4
@@ -225,7 +225,7 @@static void RingQueue_InterruptibleSleepOn (struct RingQueue *rq) {assert (rq !=NULL ); -interruptible_sleep_on (&rq->wqh); +wait_event_interruptible (rq->wqh,0 ); }void RingQueue_WakeUpInterruptible (struct RingQueue *rq)
@@ -705,10 +705,9 @@/* Debugging aid */ void usbvideo_SayAndWait (const char *what) { -wait_queue_head_t wq; -init_waitqueue_head (&wq);info ("Say: %s" , what); -interruptible_sleep_on_timeout (&wq,HZ *3 );/* Timeout */ +set_current_state (TASK_INTERRUPTIBLE ); +schedule_timeout (HZ *3 ); }EXPORT_SYMBOL (usbvideo_SayAndWait);
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors
PATCH 1/1 removing sleep_on from
In reply to Domen PuncerHi.
Only compile tested. Any feedback welcome.
drivers/usb/serial/whiteheat.c +17 -5
@@ -1132,6 +1132,7 @@ static int firm_send_command (struct usb__u8 *transfer_buffer;int retval =0 ;unsigned long flags; +DECLARE_WAITQUEUE (wait, current);dbg ("%s - command %d" , __FUNCTION__, command);
@@ -1146,7 +1147,6 @@ static int firm_send_command (struct usb command_port->write_urb->transfer_buffer_length = datasize +1 ; command_port->write_urb->dev = port->serial->dev; retval =usb_submit_urb (command_port->write_urb,GFP_KERNEL ); -spin_unlock_irqrestore (&command_info->lock, flags);if (retval) {dbg ("%s - submit urb failed" , __FUNCTION__); goto exit;
@@ -1154,11 +1154,23 @@ static int firm_send_command (struct usb/* wait for the command to complete */ timeout =COMMAND_TIMEOUT ; -while (timeout && (command_info->command_finished = FALSE)) { - timeout =interruptible_sleep_on_timeout (&command_info->wait_command, timeout); +add_wait_queue (&command_info->wait_command, &wait); +for (;;) { +set_task_state (current,TASK_INTERRUPTIBLE ); +if (command_info->command_finished != FALSE) +break ; +spin_unlock_irqrestore (&command_info->lock, flags); + timeout =schedule_timeout (timeout); +if (signal_pending (current)) { +remove_wait_queue (&command_info->wait_command, &wait); +return -EINTR ; + } +spin_lock_irqsave (&command_info->lock, flags); +if (!timeout) +break ; } - -spin_lock_irqsave (&command_info->lock, flags); +set_task_state (current,TASK_RUNNING ); +remove_wait_queue (&command_info->wait_command, &wait);if (command_info->command_finished = FALSE) {dbg ("%s - command timed out." , __FUNCTION__);
_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors