Provided by: linux-doc-2.6.15_2.6.15-23.39_all bug


       struct usb_driver - identifies USB driver to usbcore


       struct usb_driver {
         struct module * owner;
         const char * name;
         int (* probe) (struct usb_interface *intf,const struct usb_device_id *id);
         void (* disconnect) (struct usb_interface *intf);
         int (* ioctl) (struct usb_interface *intf, unsigned int code,void *buf);
         int (* suspend) (struct usb_interface *intf, pm_message_t message);
         int (* resume) (struct usb_interface *intf);
         const struct usb_device_id * id_table;
         struct device_driver driver;


       owner  Pointer  to the module owner of this driver; initialize it using

       name   The driver name should be unique among USB drivers,  and  should
              normally be the same as the module name.

       probe  Called  to  see  if the driver is willing to manage a particular
              interface on a device. If it is, probe  returns  zero  and  uses
              dev_set_drvdata  to  associate  driver-specific  data  with  the
              interface. It may also  use  usb_set_interface  to  specify  the
              appropriate  altsetting.  If  unwilling to manage the interface,
              return a negative errno value.

              Called when the  interface  is  no  longer  accessible,  usually
              because  its  device  has been (or is being) disconnected or the
              driver module is being unloaded.

       ioctl  Used for drivers that want to  talk  to  userspace  through  the
              ‘‘usbfs’’  filesystem.  This lets devices provide ways to expose
              information to user space regardless of where they do (or don’t)
              show up otherwise in the filesystem.

              Called when the device is going to be suspended by the system.

       resume Called when the device is being resumed by the system.

              USB  drivers  use  ID  table to support hotplugging. Export this
              with MODULE_DEVICE_TABLE(usb,...). This  must  be  set  or  your
              driver’s probe function will never get called.

       driver the driver model core driver structure.


       USB  drivers  must provide a name, probe and disconnect methods, and an
       id_table. Other driver fields are optional.

       The id_table is used in hotplugging. It holds a set of descriptors, and
       specialized  data may be associated with each entry. That table is used
       by both user and kernel mode hotplugging support.

       The probe and disconnect methods are called in a context where they can
       sleep,  but  they  should  avoid  abusing  the  privilege. Most work to
       connect to a device should be done  when  the  device  is  opened,  and
       undone  at  the  last  close.  The  disconnect  code  needs  to address
       concurrency issues with respect to open and close methods, as  well  as
       forcing  all  pending  I/O  requests  to complete (by unlinking them as
       necessary, and blocking until the unlinks complete).