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