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