By my observation, USB drivers' disconnect() methods are
called by (at least) three different kinds of threads:

    - khubd ... internal to the USB subsystem, this detects
      hub events like "device disconnected" and shuts down
      drivers attached to them.  Including children of hubs that
      were connected to it.

    - rmmod ... if you rmmod the controller for the root hub
      for that bus (USB), this gets reflected to all the devices.
      (Though come to think of it, maybe that's still handled in
      part by khubd.)

    - apmd ... in some cases, resuming after a suspend means
      re-initializing the controller (if it lost power), and hence
      disconnecting all the devices connected to its bus.

So yes, this method is guaranteed to be called in some sort
of thread context.

- Dave


----- Original Message ----- 
From: "Gordon McNutt" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, January 14, 2002 4:24 PM
Subject: [linux-usb-devel] down() in skel_disconnect


> I was just wondering in what context skel_disconnect() is called. Since
> it's blocking on a semaphore I assume this rules out IRQ handlers and
> tasklets. Does the USB subsystem employ a kernel thread or something?
> 
> Regards,
> --gmcnutt
> 



_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to