On Saturday 17 June 2006 03:50, Hans Petter Selasky wrote: > On Friday 16 June 2006 23:24, Anish Mistry wrote: > > I'm trying to reliably recover from a write() timeout using > > ugen. The problem that I'm having is that when using write() to > > write data to an endpoint and the write times out there seems no > > way to figure out the amount of that data that was actually > > written. This is a problem when trying to write data to a > > printer and the paper runs out. write() will timeout and you are > > left with no way to figure out where to start sending data since > > you don't know how much was received by the device before the > > paper ran out. > > It seems this could be possible by modifying the driver by > > adding and ioctl that would allow you to call bulk transfer and > > then return the number of bytes written. Is there a better way > > of doing? > > What about disabling the timeout ? That works, the problem is that the write() will block causing the controller application to be non-responsive and not report the condition that caused the failure since it has blocked. My conclusion so far is that I would need to thread the writing logic in the application, and then write my own timeout logic when I notice that the write is blocking for longer than our time interval. At least that is the option I can think of without modifying the driver.
-- Anish Mistry
pgpQ6mdc683cf.pgp
Description: PGP signature
