static int usb_hub_thread(void *__hub) { DBG_HOST_HUB("### >>> Enter hub.c file --> usb_hub_thread function \n"); lock_kernel(); /* * This thread doesn't need any user-level access, * so get rid of all our resources */ daemonize(); reparent_to_init(); /* Setup a nice name */ strcpy(current->comm, "khubd"); /* Send me a signal to get me die (for debugging) */ do { usb_hub_events(); wait_event_interruptible(khubd_wait, !list_empty(&hub_event_list)); } while (!signal_pending(current)); dbg("usb_hub_thread exiting"); unlock_kernel(); complete_and_exit(&khubd_exited, 0); }
static int usb_hub_thread(void *__hub) { lock_kernel(); /* * This thread doesn't need any user-level access, * so get rid of all our resources */ daemonize(); /* Setup a nice name */ strcpy(current->comm, "khubd"); /* Send me a signal to get me die (for debugging) */ do { usb_hub_events(); interruptible_sleep_on(&khubd_wait); } while (!signal_pending(current)); dbg("usb_hub_thread exiting"); unlock_kernel(); complete_and_exit(&khubd_exited, 0); }
static int usb_hub_thread(void *startup) { lock_kernel(); /* * This thread doesn't need any user-level access, * so get rid of all our resources */ daemonize(); reparent_to_init(); /* Block all signals */ spin_lock_irq(¤t->sigmask_lock); sigfillset(¤t->blocked); recalc_sigpending(current); spin_unlock_irq(¤t->sigmask_lock); /* Setup a nice name */ strcpy(current->comm, "khubd"); khubd_terminated = 0; complete((struct completion *)startup); /* Set khubd_terminated=1 to get me die */ do { usb_hub_events(); wait_event_interruptible(khubd_wait, !list_empty(&hub_event_list) || khubd_terminated); } while (!khubd_terminated || !list_empty(&hub_event_list)); dbg("usb_hub_thread exiting"); unlock_kernel(); complete_and_exit(&khubd_exited, 0); }
/** * @brief Processed USB hub device events. User application must invoke this routine * in the main while loop. Device enumeration is done in this routine. * @retval 0 No hub events * @retval 1 Had hub events */ int USBH_ProcessHubEvents() { ohci_int_timer_do(0); return usb_hub_events(); }