My experience of using Linux kernels 2.6 shows that there is some problem with hotplug devices. Namely, it seems that, there is no uniform approach of how an application performing I/O operations on a device must be handled, when that device is disconnected.
The following consideration explains the problem. Consider a process, which is performing a system call with a file descriptor as an argument. The file descriptor corresponds to a device special file, and the device was disconnected after the descriptor was created. There are three reasonable ways by which the process can be handled: 1. If the call involves an I/O operation on the device, the process hangs indefinitely until a signal has terminated the call or the process. 2. If the call involves an I/O operation on the disconnected device, the process waits for the device. As soon as the device is connected again, an initialization procedure will put the device into an appropriate state and will make the stopped process continue. If the call does not involve I/O operations on the device, it is performed without waiting, as if the device is presented. In any case the process is able to complete the call successfully. 3. The call completes without waiting for the device. The file descriptor has been unusable for I/O operations on the device since the disconnection, therefore the result of the call is not affected if the device has been connected again. The result of the call depends on the kind of the called function and other conditions. However, the 'close' function closes the file, and there are system calls which produce a specific error code in such situations. In addition to the above, in many cases it is useful to deliver a signal to a selected process at the moment when the device becomes disconnected. The choice of the standard affects not only the kernel itself, but also applications. The third approach looks like the most reasonable one, it is proposed in the 'drivers/usb/usb-skeleton.c' file, however, all of the approaches above are in use now. Which approach is the standard one or is supposed to be the standard? What is the standard behavior of the 'read()', 'write()', 'ioctl()', 'select()', 'fcntl()', 'close()', ... system calls in such a situation? -- ********************************************************* Alexander N. Kozhushkin. ADDR: [EMAIL PROTECTED] ********************************************************* ------------------------------------------------------- SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media 100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33 Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift. http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285 _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel