Exemple #1
0
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);
}
Exemple #2
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);
}
Exemple #3
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(&current->sigmask_lock);
    sigfillset(&current->blocked);
    recalc_sigpending(current);
    spin_unlock_irq(&current->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);
}
Exemple #4
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();
}