On Fri, 18 Sep 2009, Greg KH wrote: > On Fri, Sep 18, 2009 at 02:17:22PM +0100, Phil Endecott wrote: > > Dear Experts, > > > > I have some code using usbdevice_fs that calls the USBDEVFS_DISCONNECT > > and USBDEVFS_CONNECT ioctls to remove and re-connect any kernel drivers > > when it starts and finishes. This works OK. > > > > The only problem is if the program terminates abnormally (crash, > > ctrl-C, OOM etc); USBDEVFS_CONNECT is not called. Is there any way to > > get USBDEVFS_CONNECT behaviour automatically when the fd is closed? I > > think that I could do this from a signal handler for some cases, but > > I'd really like it to happen even for un-catchable signals. > > We could do this within the kernel, but how would we know if this is the > proper behavior? Some programs might just call the DISCONNECT ioctl and > then exit, and wait for another program to bind to the device. If we > chnaged the behavior to reconnect after the fd was closed, then such a > situation would not work. > > I'd recommend fixing your program to catch as many signals as it can, > and then fixing the bugs so the non-catchable ones don't happen :) Another approach is to run the main program as a child of a "monitoring" program. When the parent detects that the child ended abnormally, it can take whatever reset actions are needed. Basically this is a userspace problem, not something that the kernel should handle. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html