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/
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel