Here are the piece of code from 2.6.22.1,

   2817 static int hub_thread(void *__unused)
   2818 {
   2819         do {
   2820                 hub_events();
   2821                 wait_event_interruptible(khubd_wait,
   2822                                 !list_empty(&hub_event_list) ||
   2823                                 kthread_should_stop());
   2824                 try_to_freeze();
   2825         } while (!kthread_should_stop() ||
!list_empty(&hub_event_list))        ;
   2826
   2827         pr_debug("%s: khubd exiting\n", usbcore_name);
   2828         return 0;
   2829 }

I have a question.

try_to_freeze should be the only way for this thread to go suspended.

If we have already gone sleeping via wait_event_interruptible(), then
if there is signal to wakeup this thread and ask it to go to
suspended,then wait_event_interruptible will return and
try_to_freeze() will be invoked and hence this thread will go into
refrigerator.

But if we are still running inside hub_events(),then if we received
any signal, what will happen?still try_to_freeze will be executed?why?

Regards
Jason

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
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