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