Hi Dave,

Do you mind expalining the code snippet to me below.  It's from ehci-hcd.c lines 
423-440.

/*
 * tasklet scheduled by some interrupts and other events
 * calls driver completion functions ... but not in_irq()
 */
static void ehci_tasklet (unsigned long param)
{
        struct ehci_hcd         *ehci = (struct ehci_hcd *) param;
        printk("ehci->reclaim_ready=%x\n", ehci->reclaim_ready);
        //if (ehci->reclaim_ready)
        //      end_unlink_async (ehci);
        scan_async (ehci);
        if (ehci->next_uframe != -1)
                scan_periodic (ehci);

        // FIXME:  when nothing is connected to the root hub,
        // turn off the RUN bit so the host can enter C3 "sleep" power
        // saving mode; make root hub code scan memory less often.
}

How come param is declared as unsigned long then in the body of the ehci_tasklet, it 
is typecasted as (struct ehci_hcd *)?  Should param be declared as (void *param) not 
unsigned long?

Also in line 251 of ehci-hcd.c:
 
ehci->tasklet.func = ehci_tasklet;

Why is it that ehci_tasklet is called without any arguments?  The function declaration 
of ehci_tasklet was declared to accept one argument, i.e., unsigned long param.

I hope you have the time to explain this to me further.  Thank you.

Regards,
James

_______________________________________________________________

Have big pipes? SourceForge.net is looking for download mirrors. We supply
the hardware. You get the recognition. Email Us: [EMAIL PROTECTED]
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to