From: tytso@athena.mit.edu (Theodore Ts'o) Subject: Announcement of new patches to the serial patches! Date: 28 Jan 1993 17:00:34 -0500
A set of new patches to the serial driver (versus 0.99pl4) can be found
on tsx-11, in /pub/linux/ALPHA/serial; here's the README file from that
directory:
The file serpatches in this directory contain patches against Linux
0.99pl4 to significantly improve the serial driver.
New features summary:
* Fully supports use of the bottom half "software interrupt"
(no new functionality add, but increases the
efficiency of the code.)
* Improved the AUTO_IRQ code; it should hopefully be more
resistant to false IRQ assignments (espcially from the
printer IRQ, IRQ 7); I'd also be interested to know if
it has a better chance of detecting internal modem
cards with Rockwell Chipsets.
* The /dev/ttys?? devices are now completely POSIX complaint,
so that if carrier detect is missing, an open of the device
will block until carrier detect goes high. The O_NONBLOCK
flag to the open() system call will cause this blocking
behavior to be skipped.
* A new set of devices, which I will call /dev/cua?? (following
the SunOS convention) are now supported. They have the
same minor number as their /dev/ttys?? counterparts, but
their major number is 5, instead of 4.
These devices never block waiting for carrier detect;
and they also have the property that once open, any
attempt to open the corresponding /dev/ttys?? line
will block until the use of the /dev/cua?? device is
finished.
If the corresponding /dev/ttys?? line is in use when
the user attempts to open the /dev/cua?? line, the
error EBUSY will be returned.
This allows a getty to open and block waiting for
carrier detect on the /dev/ttys?? line, while
simultaneously allowing users to use that same line to
dialout by accessing it via the /dev/cua?? device.
Note that while the Kernel support for the last two features are there,
the application support is not necessarily present. For example, the
getty distributed with SLS uses the O_NONBLOCK flag when it opens its
serial line. This means that it will never block waiting for the
carrier detect, and so it unnecessarily ties up the modem.
Similarily, although the kermit program distributed with SLS claims to
be compiled with the POSIX option, it does not seem to work opening the
/dev/ttys?? line, even though it is supposed to. Of course, it works
fine using the /dev/cua?? devices, so it doesn't matter quite so much.
I would like to talk to the person who ported the kermit on the SLS
distribution, to see if he modified it to make it work on Linux, or
whether he used a straight POSIX configuration.
If there are any bugs or comments, please send them to me
(tytso@mit.edu). Thanks!
- Ted, 1/28/93