Strange driver question

Wayne Hathaway ultra!wayne at ames.arc.nasa.gov
Wed Feb 15 03:35:41 AEST 1989


I have a driver that provides normal file I/O capabilities to a UNIX
user process, but which in fact sends and receives over a network.  No
big deal, and it works fine.  However, after a user process has been
reading or writing for a while, poof: EINVAL.  Why?  Because the file
offset (file pointer) has grown into a negative number (for example,
at 2^31 bytes).  I have no questions about WHY this is happening, but
would love to be able to PREVENT it (other than by having the user
process do a periodic lseek() to reset the offset).  Unfortunately, by
the time the user's read or write requests get to my driver, the file
descriptor is long lost, having been turned into major and minor
device number, so I have no way of getting back to the file table.

Anybody got any suggestions?  This is for both BSD and System V, by
the way.  It's not a real problem on a Cray (even at our network
speeds it will take a while to transfer 2^63 bytes :-), but it only
takes a Sun a few hours to hit its 2^31 byte limit.

Thanx for any ideas.

  Wayne Hathaway            
  Ultra Network Technologies     domain: wayne at Ultra.COM
  101 Daggett Drive            Internet: ultra!wayne at Ames.ARC.NASA.GOV
  San Jose, CA 95134               uucp: ...!ames!ultra!wayne
  408-922-0100



More information about the Comp.unix.wizards mailing list