Subject: Re: terminal ioctl results when interrupted
To: None <duwe@immd4.informatik.uni-erlangen.de>
From: Charles M. Hannum <mycroft@ai.mit.edu>
List: current-users
Date: 07/02/1995 21:00:15
   comioctl() (sys/dev/isa/com.c v1.60, line 447) first tries the ldisc-specific
   ioctl and then ttioctl(), and only if both fail with an error < 0 it
   interprets the command itself, giving ENOTTY if it doesn't recognize the
   command either. At least ttioctl() contains a ttysleep(), which may be
   interrupted (e. g. timeout), resulting in ERESTART (?) == -1;
   undistinguishable from the -1 returned meaning "don't know how to handle that
   command". IMHO an interrupted ioctl shouldn't return ENOTTY; at least my old
   X server is very puzzled:

That's ... cute.

It looks like we need to make it use something other than -1 for
either ERESTART or the magic value that ttioctl() returns.  Changing
the latter would probably be useful in at least one other case
(namely, error reporting in the SCSI code).