On Wed, 6 Aug 2003, Soewono Effendi wrote:

> As far as I understand, __init / __devinit is only relevant for device
> driver (codes) that are statically linked. In the case of USB Device
> Driver (not usbcore / usbhost ), one should actually not use
> __init/__devinit, since USB probe can happen at any time, unless the
> device is "static", i.e., not unplugable (I don't know if this word does
> exist :) ).

>From Documentation/pci.txt:

Please mark the initialization and cleanup functions where appropriate
(the corresponding macros are defined in <linux/init.h>):

        __init          Initialization code. Thrown away after the driver
        __exit          Exit code. Ignored for non-modular drivers.
        __devinit       Device initialization code. Identical to __init if
                        the kernel is not compiled with CONFIG_HOTPLUG, normal
                        function otherwise.
        __devexit       The same for __exit.

        The module_init()/module_exit() functions (and all initialization
        functions called only from these) should be marked __init/exit.
        The struct pci_driver shouldn't be marked with any of these tags.
        The ID table array should be marked __devinitdata.
        The probe() and remove() functions (and all initialization
        functions called only from these) should be marked __devinit/exit.
        If you are sure the driver is not a hotplug driver then use only 
        __init/exit __initdata/exitdata.

        Pointers to functions marked as __devexit must be created using
        __devexit_p(function_name).  That will generate the function
        name or NULL if the __devexit function will be discarded.

The upshot is that for USB, which is hotpluggable, __devinit and __devexit 
are useless.  __init and __exit should be used for module initialization 
and removal routines, not for probing and disconnecting.

Alan Stern

This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
To unsubscribe, use the last form field at:

Reply via email to