On Fri, 10 Aug 2007, jidong xiao wrote: > 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?
Nothing will happen. The thread will continue to run inside hub_events() and it won't freeze until hub_events() returns. Alan Stern ------------------------------------------------------------------------- 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