On Friday 13 July 2007, Sagusti.Robert wrote: > Hi, > > I'm running kernel 2.6.20 on an AT91RM9200 processor. I have > the gadget serial driver loaded and I am successfully reading > and writing data in and out the USB port to a windows terminal. > In my user code, when I open the gadget driver port, I open it > with the default blocking flag so that my user thread will > sleep while waiting for data to come in. My problem is that > when I pull the USB cable which causes a disconnect, the read() > call never returns in my user code thereby locking the thread > that it is called in.
Looks like gs_free_ports() only updates the write side, not the read side ... > I have turned on debugs in the driver's module and am I am > monitoring the Gadget Driver in another thread by cat /proc/kmsg > and can clearly see that the Gadget Driver function > gs_disconnect(struct usb_gadget *gadget) is being called. The > driver reacts fine to the connects and disconnects but the user > mode read() function is the problem. I'm pretty new to driver > development and I've been attempting to trace the problem > through the tty driver and the line discipline to attempt > to understand how things work. After 3 days, I'm gaining some > understanding but I really could use some help. > > I would think that lots of apps would have to handle the USB > cord being yanked out. Does anyone have any insight into this? Just that this is clearly a bug in the serial gadget code. The way gadget drivers are supposed to handle disconnect events is to (cleanly) shut down all pending I/O ... and it's not doing that except for write operations. - Dave > Thanks for reading. > > > > > Robert P. Sagusti > ENSCO Inc., APA Division > 5400 Port Royal Rd. > Springfield, VA 22151 > (703) 321-4407 > [EMAIL PROTECTED] > ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel