From: Theodore Ts'o (tytso@athena.mit.edu)
Date: 01/28/93


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