home *** CD-ROM | disk | FTP | other *** search
- Xref: sparky comp.unix.sysv386:13239 comp.unix.xenix.sco:2696 alt.sources:1885
- Newsgroups: comp.unix.sysv386,comp.unix.xenix.sco,alt.sources
- Path: sparky!uunet!mcsun!Germany.EU.net!news.netmbx.de!zrz.tu-berlin.de!math.fu-berlin.de!fub!geminix.in-berlin.de!gemini
- From: gemini@geminix.in-berlin.de (Uwe Doering)
- Subject: FAS 2.10 async driver, part 2/5
- Organization: Private UNIX Site
- Date: Mon, 17 Aug 1992 11:37:58 GMT
- Message-ID: <F555DPC@geminix.in-berlin.de>
- Lines: 1345
-
- Submitted-by: gemini@geminix.in-berlin.de
- Archive-name: fas210/part02
-
- #!/bin/sh
- # this is fas210.02 (part 2 of fas210)
- # do not concatenate these parts, unpack them in order with /bin/sh
- # file README continued
- #
- if test ! -r _shar_seq_.tmp; then
- echo 'Please unpack part 1 first!'
- exit 1
- fi
- (read Scheck
- if test "$Scheck" != 2; then
- echo Please unpack part "$Scheck" next!
- exit 1
- else
- exit 0
- fi
- ) < _shar_seq_.tmp || exit 1
- if test ! -f _shar_wnt_.tmp; then
- echo 'x - still skipping README'
- else
- echo 'x - continuing file README'
- sed 's/^X//' << 'SHAR_EOF' >> 'README' &&
- X that. The real reason for this problem lies in the ancient port
- X devices used in most 286/386 systems: The 8250 (not supported by
- X FAS) and the NS16450.
- X
- X They have only one receiver character buffer. This implies that
- X the operating system must read a character from this buffer before
- X the next one arrives from the port's shift register. For the old
- X IBM PC with DOS this was sufficient. But for UNIX and with baud
- X rates up to 38400 this is simply a joke.
- X
- X UNIX is not a real-time operating system. That means that it's
- X kernel isn't optimized for fast interrupt responses. With the
- X proper hardware this is no problem. But because the vendors have
- X to adapt UNIX to the standard hardware found in 286/386 systems they
- X also have to cope with the NS16450 ports which are in there simply
- X to be compatible with IBM PCs, XTs and ATs.
- X
- X It is impossible to make it work at high baud rates without a
- X major redesign of the AT&T supplied UNIX kernel. But then it
- X wouldn't be UNIX SYSV any more.
- X
- X Luckily, there is a pin-to-pin replacement available from
- X National Semiconductors: The NS16550A.
- X
- X This device has separate 16 character FIFOs for the receiver and
- X the transmitter. With these FIFOs the interrupt latency of the
- X kernel can be quite high without losing any characters.
- X Additionally, because with most interrupts many characters are
- X processed at once the system is loaded much less.
- X
- X As you see, the necessary hardware is available. Therefore, if you
- X have to blame the UNIX vendor then blame him for not telling you
- X that you should buy some NS16550A and/or for not supplying you
- X with a serial driver that supports these port devices.
- X
- X But as you have the FAS driver now and if you use the NS16550A
- X devices you shouldn't have this kind of trouble any more. This is
- X the philosophy behind the driver's name `Final Async Solution'.
- X
- X Enjoy!
- X
- X PS: If for some reason you can't get the NS16550A chips you
- X could use the i82510 chips from Intel. Although they are
- X much less efficient they are still better than the NS16450.
- X
- X PPS: Some kernel functions may disable interrupts long enough
- X that even the input FIFO can't prevent character loss.
- X One culprit is the disk cache flush function. If you
- X configure your kernel with too many cache buffers (NBUF
- X parameter for AT&T derived UNIX) you may still lose
- X characters (at least at 38400 bps).
- X
- X Another candidate is VP/ix, or rather the kernel functions
- X to support VP/ix. This may also lead to lost characters
- X at very high input speed.
- X
- X And there are some bus mastering disk controllers (like the
- X Adaptec 1540/1542 SCSI controller) on the market that slow
- X down the CPU so much during data transfer that it isn't fast
- X enough to process characters coming in at high baud rates.
- X Therefore, if you can configure your disk controller, don't
- X use values that will bring the CPU down to its knees.
- X Otherwise, FAS will lose input characters during disk I/O.
- X
- X If your operating system has a low interrupt latency you can
- X define `LOW_INT_LAT' in the makefile. This sets the receiver
- X FIFO trigger level from 4 (default) to 8 characters. This
- X cuts the receiver interrupt frequency in half and therefore
- X saves a lot CPU time. That pays off especially at very high
- X baud rates. If you set this flag you should do some rigid
- X tests (receiving characters at the highest baud rate while
- X the system is heavily loaded with disk and network i/o) to
- X make sure that there are really no lost characters due to
- X interrupt latency. ISC UNIX 3.0 is known to have a low tty
- X interrupt latency, therefore `LOW_INT_LAT' is defined in
- X `Makefile.ISC3'. However, ISC UNIX 2.x has a rather high
- X interrupt latency and shouldn't have this flag set. For
- X other UNIX flavours you have to find out yourself whether
- X this flag is applicable.
- X
- X
- X DEVICE LOCKUPS
- X --------------
- X
- X There are certain conditions under which a device can lock up,
- X that is, at least one process that uses this device waits for
- X a tty I/O related event that obviously doesn't occure.
- X
- X The most common case is that there are still characters in the
- X output buffer, but the output is disabled for some reason. Then
- X the last process that closes the tty device hangs in the close()
- X function until the output buffer has drained.
- X
- X Tty output may be stopped by the software (XON/XOFF) or hardware
- X (RTS/CTS, by default) flow control. In this case something
- X seems to be wrong with the cabling or the connected device.
- X Please check this first out before you blame FAS. Sometimes
- X it helps to switch the device off and on a few times to unblock
- X the tty output.
- X
- X Another reason could be a lost transmitter interrupt. If this isn't
- X caused by a configuration error this usually indicates a hardware
- X problem in your computer which should be fixed as soon as possible.
- X Otherwise, you can't run this system unattended because it is too
- X unreliable.
- X
- X In the cases described above the last resort is killing the process,
- X and if it still hangs, opening the FAS device with the O_APPEND
- X flag. This flushes the output buffers and therefore releases the
- X hanging process. To do that, you simply type
- X
- X echo '\c' >> /dev/ttyF00
- X
- X if, for instance, the process is hanging on `/dev/ttyF00'. There
- X is, however, no guaranty that this works in all cases.
- X
- X If interrupts are lost on IRQ2 this might have to do with an EGA or
- X VGA card using this IRQ line for the vertical retrace interrupt.
- X This interrupt isn't used at all these days, neither under DOS nor
- X UNIX. It's simply there for compatibility.
- X
- X On some video cards (the more expensive ones) there is a jumper or
- X dip switch to disable the vertical retrace interrupt. On the rest
- X you have to cut the trace to the bus contact B4 with a sharp knife.
- X This contact is on the solder side of the video card, the fourth bus
- X contact counted from the side where the 9 or 15 pin D-SUB connector
- X to the monitor is located. Cutting this trace has the same effect as
- X pulling the IRQ2 jumper on other cards. Note that cutting the trace
- X will void your video card's warranty.
- X
- X Now IRQ2 should be available for use with FAS. Look at the INSTALLATION
- X file for details on how to configure FAS for IRQ2. This is operating
- X system dependent.
- X
- X And there is a rare case which has to do with the number of available
- X CLISTs in the UNIX kernel. The UNIX output and input buffers are
- X 256 bytes each (by default). If for some reason the output of a
- X tty device is stopped but a process continues to send data one
- X character at a time this uses up one CLIST for every charcacter.
- X If the number of CLISTs in the kernel is less than 256 all CLISTs
- X will be busy eventually.
- X
- X The dangerous part here is that the pool of CLISTs is used by all
- X tty devices. Therefore, if one single tty device manages to eat up
- X all available CLISTs all tty in- and output comes to a halt. If this
- X happens you can't access your machine any more, not even from the
- X operator console. Although, the system is still alive internally.
- X
- X Unfortunately, many UNIX vendors have put a dangerously low number-of-
- X CLISTs parameter into their kernel tune files. You should increase
- X it to a value that makes it impossible that one device alone can
- X occupy all CLISTs (it's the NCLIST parameter under AT&T derived
- X UNIX SysVr[34].x). A value of 400 should be sufficient.
- X
- X
- X COPYRIGHT
- X ---------
- X
- X Although FAS is frequently refered to as a public domain driver,
- X FAS was never released to the public domain (this is true for
- X all releases of FAS). FAS is freeware, and the author has the
- X full copyright.
- X
- X Here are the conditions under which you may copy and distribute
- X FAS. The goal of these terms is to spread FAS as wide as possible
- X and, on the other hand, to prevent anyone from making money out
- X of it, and to prevent any restrictions of the availability of
- X FAS.
- X
- X 1. You can freely copy FAS, and you may give copies of FAS to
- X everyone.
- X 2. FAS has to be distributed as the complete package posted
- X to Usenet by its author.
- X 3. Vendors may bundle FAS with their products as long as they
- X a) tell their customers (somewhere in the written documentation)
- X that FAS is freeware, wasn't developed by the vendor, and the
- X vendor doesn't have the copyright for FAS.
- X b) provide the complete original package in addition to their
- X customized version. Customization means modification of
- X the configuration files. No changes to the actual source
- X file (fas.c) are allowed.
- X c) tell their customers (somewhere in the written documentation)
- X where the original package is located on the distribution
- X media.
- X 4. Changes to the sources are allowed
- X a) for private use.
- X b) to develop another freeware package with similar restrictions.
- X This new package has to have a different name.
- X 5. The author isn't liable for any damage or loss of data caused
- X by FAS.
- X
- X------------------------------------------------------------------------
- X
- XWhat's in this package:
- X
- X README This file.
- X
- X INSTALLATION A description about how to install the driver
- X on your system.
- X
- X PATCHLEVEL Just a reference file for future updates.
- X
- X RELEASENOTES Notes about the various FAS releases.
- X
- X fas.h The header file for the driver.
- X
- X fas.c The driver itself.
- X
- X space-xxxxx These are samples of what `space.c' must look
- X like. You can either copy one of these to
- X `space.c' or use it as a template to create your
- X own `space.c'.
- X
- X space-c12 For com1 and com2.
- X
- X space-c123 For com1, com2 and com3.
- X
- X space-ast4 For the AST 4-port card.
- X
- X space-ast4c12 For the AST 4-port card plus com1 and com2.
- X
- X space-hub6 For the Bell Tech HUB-6 card.
- X
- X space-digi8c1 For the DigiChannel PC/8 card plus com1.
- X
- X config-xxxxx This is for uPort SYS V/386 only.
- X Kernel configuaration file. You should pick the one
- X that matches your configuration and copy it to `config'.
- X
- X config-c12 For com1 and com2.
- X
- X config-c123 For com1, com2 and com3.
- X
- X config-ast4 For the AST 4-port card.
- X
- X config-ast4c12 For the AST 4-port card plus com1 and com2.
- X
- X config-hub6 For the Bell Tech HUB-6 card.
- X
- X config-digi8c1 For the DigiChannel PC/8 card plus com1.
- X
- X s_fas-xxxxx This is for ISC UNIX, ESIX, Bell Tech/Intel UNIX 3.2,
- X SCO UNIX, AT&T UNIX 386 and SysVr4 UNIX 386.
- X Kernel configuration file. You should pick the one
- X that matches your configuration and copy it to `s_fas'.
- X
- X s_fas-c12 For com1 and com2.
- X
- X s_fas-c123 For com1, com2 and com3.
- X
- X s_fas-ast4 For the AST 4-port card.
- X
- X s_fas-ast4c12 For the AST 4-port card plus com1 and com2.
- X
- X s_fas-hub6 For the Bell Tech HUB-6 card.
- X
- X s_fas-digi8c1 For the DigiChannel PC/8 card plus com1.
- X
- X n_fas-xxxxx This is for ISC UNIX, ESIX, Bell Tech/Intel UNIX 3.2,
- X SCO UNIX, AT&T UNIX 386 and SysVr4 UNIX 386.
- X Tty device nodes file. You should pick the one
- X that matches your configuration and copy it to `n_fas'.
- X
- X n_fas-c12 For com1 and com2.
- X
- X n_fas-c123 For com1, com2 and com3.
- X
- X n_fas-ast4 For the AST 4-port card.
- X
- X n_fas-ast4c12 For the AST 4-port card plus com1 and com2.
- X
- X n_fas-hub6 For the Bell Tech HUB-6 card.
- X
- X n_fas-digi8c1 For the DigiChannel PC/8 card plus com1.
- X
- X i_fas-xxxxx This is for ISC UNIX, ESIX, Bell Tech/Intel UNIX 3.2,
- X SCO UNIX, AT&T UNIX 386 and SysVr4 UNIX 386.
- X Inittab getty lines file. You should pick the one
- X that matches your configuration and copy it to `i_fas'.
- X
- X i_fas-c12 For com1 and com2.
- X
- X i_fas-c123 For com1, com2 and com3.
- X
- X i_fas-ast4 For the AST 4-port card.
- X
- X i_fas-ast4c12 For the AST 4-port card plus com1 and com2.
- X
- X i_fas-hub6 For the Bell Tech HUB-6 card.
- X
- X i_fas-digi8c1 For the DigiChannel PC/8 card plus com1.
- X
- X Makefile.uPort A makefile for uPort SYS V/386 systems. This is generic
- X and should work for all configurations of lines
- X and interrupts.
- X
- X Makefile.ISC2 A makefile for ISC UNIX 2.x systems. This is generic
- X and should work for all configurations of lines
- X and interrupts.
- X
- X Makefile.ISC3 A makefile for ISC UNIX 3.x systems. This is generic
- X and should work for all configurations of lines
- X and interrupts.
- X
- X Makefile.ESIX A makefile for ESIX systems. This is generic
- X and should work for all configurations of lines
- X and interrupts.
- X
- X Makefile.BELL A makefile for Bell Tech/Intel UNIX 3.2 systems. This
- X is generic and should work for all configurations of
- X lines and interrupts.
- X
- X Makefile.SCO A makefile for SCO UNIX systems. This is generic
- X and should work for all configurations of lines
- X and interrupts.
- X
- X Makefile.X386 A makefile for SCO Xenix 386 systems. This is generic
- X and should work for all configurations of lines
- X and interrupts.
- X
- X Makefile.X286 A makefile for SCO Xenix 286 systems. This is generic
- X and should work for all configurations of lines
- X and interrupts.
- X
- X Makefile.ATT A makefile for AT&T UNIX 386 systems. This is generic
- X and should work for all configurations of lines
- X and interrupts.
- X
- X Makefile.SVR4 A makefile for SysVr4 UNIX 386 systems. This is generic
- X and should work for all configurations of lines
- X and interrupts.
- X
- X------------------------------------------------------------------------
- X
- XWhat you will need to use this package:
- X
- X You will need one of the above mentioned UNIX systems with the
- X kernel link kit and the software development package.
- X
- X Of course, you will also need one or more dumb port serial cards.
- X
- X Note that FAS can be adapted to almost any kind of dumb port serial
- X card by just putting the right informations into the config
- X files. Changes to the actual source file shouldn't be necessary.
- X
- X This means that the sample config files that are part of the FAS
- X distribution are there for convenience in case you have one of the
- X more common serial cards. If there are no sample files for your
- X card you can make your own config files. In this case the sample
- X files at still useful for you as you can look at them to learn
- X how things are done for other cards.
- X
- X If you know how your serial card works and the manual for it is
- X detailed enough it won't be that difficult to make your own config
- X files. Just try it!
- X
- X------------------------------------------------------------------------
- X
- XThe original asy replacement driver for Microport UNIX/386 (FAS' predecessor)
- Xwas developed by
- X
- XJim Murray INET jjm%jjmhome@m2c.m2c.org
- X2 Mohawk Circle UUCP harvard!m2c!jjmhome!jjm
- XWestboro Mass 01581
- XUSA voice (508) 366-2813
- X
- XCredits to him for releasing this great driver to the Usenet community.
- XBut if you have problems with FAS please don't contact him because he
- Xwasn't involved in the developement of FAS.
- X
- XFAS was developed by
- X
- XUwe Doering INET : gemini@geminix.in-berlin.de
- XBillstedter Pfad 17 b UUCP : ...!unido!fub!geminix.in-berlin.de!gemini
- X1000 Berlin 20
- XGermany
- X
- X ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
- XSend your questions and bug reports to this address.
- SHAR_EOF
- echo 'File README is complete' &&
- true || echo 'restore of README failed'
- rm -f _shar_wnt_.tmp
- fi
- # ============= RELEASENOTES ==============
- if test -f 'RELEASENOTES' -a X"$1" != X"-c"; then
- echo 'x - skipping RELEASENOTES (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- echo 'x - extracting RELEASENOTES (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'RELEASENOTES' &&
- X release 1.1a Sat Nov 11, 1989
- X
- X This is an unofficial release as I'm not the original author
- X of this async driver.
- X
- X Uwe Doering INET : gemini@geminix.in-berlin.de
- X Billstedter Pfad 17 b UUCP : ...!unido!fub!geminix.in-berlin.de!gemini
- X 1000 Berlin 20
- X Germany
- X
- X New Features:
- X
- X Added a third minor tty device number for every physical
- X port. See description preceding the asyopen function in
- X asy.c. Changed the behavior of ttyxx, too.
- X
- X Added output hardware handshake support for DSR. Now you
- X can do handshake with CTS, DSR or both. Input hardware
- X handshake is on if you use at least one of the output
- X handshake signals.
- X
- X More flexible support of additional interrupt registers
- X on mux boards. This is fully configurable now.
- X
- X Added support for the CREAD flag. If not set, receiver
- X interrupts are still serviced, but the received characters
- X are simply thrown away. This is not as elegant as disabeling
- X the interrupts themselves, but with the already existing
- X driver it was the easiest way, and the most new-bugs-preventing,
- X too.
- X
- X Added a lot of comments to the source so that the curious
- X user can understand why and how things are done.
- X
- X
- X Bug Fixes:
- X
- X The hang-up-on-last-close flag (HUPCL) was ignored. DTR
- X was asserted regardless of this flag.
- X
- X Made the detection of CTS and DCD more bullet-proof.
- X Especially because between a close and the next open of
- X a line, where interrupts are ignored, the software copys of
- X CTS and DCD must be set up propperly in the asyopen function
- X or the tty line would be blocked under certain circum-
- X stances. For similar reasons, there is also a setup in the
- X asyparam function.
- X
- X Rewrote the input character processing function to work
- X according to the TERMIO(7) man page.
- X
- X Changed the behavior of BREAK generation to let the
- X transmitter drain before TX is set to low.
- X
- X Changed line hangup procedure so that the closing
- X process returns immediately and doesn't sleep during
- X the hangup delay/time. Instead, if an other process tries
- X to open the line while hangup is still in progress, this
- X process will sleep until hangup is competed.
- X
- X With DOS Merge, on MicroPort V/386 3.0e the linker was
- X missing the function `init8250'. Reengineered this from
- X a disassembler listing of MicroPort's original driver and
- X modified it to work with the NS16550A 16-byte FIFO. This
- X funktion was added simply to be able to link the kernel.
- X DOS Merge's virtual COM ports are still unusable with this
- X release, though. To include this function, add a `-DMERGE'
- X to the CFLAGS line in your makefile.
- X
- X Made a lot of other corrections and enhancements in both
- X speed and functionallity. As a result of all my effords
- X I think this driver is slightly faster, more versatile
- X and much more stable than the original release.
- X
- X ------------------------------------------------------------
- X
- X release 1.1b Sat Nov 25, 1989
- X
- X New Features:
- X
- X Changed the minor device number scheme again.
- X There are now two main groups: The unblocked open
- X and the blocked open. Every group has four sub-modes
- X and an additional hardware handshake flag. All this
- X is coded in the higher four bits of the minor device
- X number. Because of this, the maximum of 32 ports was
- X reduced to 16 ports so that the port number fits into
- X the remaining lower four bits of the minor device number.
- X 32 dumb ports in a single machine would have been overkill
- X anyway. For more details refer to the description in the
- X README file.
- X
- X ------------------------------------------------------------
- X
- X release 2.00 Mon Nov 27, 1989
- X
- X As this release differs so much from the original version I got,
- X I now declare this as independant from the original author
- X Jim Murray. This allows me to introduce new release levels
- X without wondering whether they will collide with Jim's releases.
- X Of course many credits to Jim for writing this software in the
- X first place. Without his driver as a base I never would have
- X been able to do such kernel driver development.
- X
- X Bug Fixes:
- X
- X If there were glitches on the hardware handshake lines
- X and the DCD line a getty on this port would sometimes
- X hang and become an immortal process. I think this was
- X because the output buffer wasn't flushed properly
- X on carrier loss. I hope I fixed this now. We'll see.
- X
- X ------------------------------------------------------------
- X
- X release 2.01 Tue Nov 28, 1989
- X
- X Did some cleanup in the source code.
- X
- X I splitted the driver into two parts: The driver itself and
- X the file `space.c'.
- X `space.c' contains all data structures necessary to configure
- X the driver and is compiled at kernel link time. Therefore, if you
- X change your serial card configuration you simply change `space.c'
- X directly in the link kit directory and relink the kernel. No
- X driver recompilation or installation is necessary for this.
- X But note that whenever you use `make install' your setup in
- X the link kit directory is overwritten by the original `space.c'
- X file. Therefore, you should copy your new `space.c' back to
- X the source directory when you are finished with the configuration.
- X
- X Renamed the package to `FAS Final Async Solution'. The following
- X files have been renamed:
- X asy.c -> fas.c
- X asy.h -> fas.h
- X asy_conf-xxxxx -> space-xxxxx
- X
- X ISC 386/ix is supported now. There are separate makefiles
- X for uPort and ISC to cope with the differences in link kit
- X installation.
- X
- X Bug Fixes:
- X
- X `getty' still hung sometimes on a line with hardware
- X handshake. Tried to fix it this time.
- X
- X ------------------------------------------------------------
- X
- X release 2.02 Thu Nov 30, 1989
- X
- X Abandoned the distinction between space-xxxxx files with
- X and without hardware flow control because this is selected
- X by the minor device number now.
- X
- X Bug Fixes:
- X
- X Set the high and low water marks for hardware input flow
- X control to higher values than software flow control. This
- X gives precedence to software flow control if both methods
- X are used. These marks are self-adjusting and don't need to
- X be changed if some flavor of UNIX has a different buffer
- X size than the standard 256 characters. Before this change
- X concurrent use of both flow controls could cause trouble
- X with some high-speed modems. This is fixed now.
- X
- X A flush read or write buffer request now also clears the
- X receiver or transmitter FIFO, respectively. An ioctl
- X call with a TCSETA* command clears the FIFOs, too.
- X
- X ------------------------------------------------------------
- X
- X release 2.03 Fri Dec 01, 1989
- X
- X Wrote an installation guide. The driver should be quite
- X easy to install now.
- X
- X Added tty node configuration files for ISC.
- X
- X Hardware input flow control is bound now to the level of the
- X receiver ring buffer instead of the UNIX input buffer. This
- X has the advantage that buffer size and trigger levels are
- X defined in the driver and therefore can be varied as needed.
- X
- X New Features:
- X
- X Added a boot time status message that shows the init
- X state of each port. This tells you immediately what
- X ports are found and initted by the driver. Useful to
- X determine hardware configuration problems. Look at
- X the description in the README file. Thanks to
- X Kritt Gierlewsen (kritt@einoed.UUCP) for this proposal.
- X
- X ------------------------------------------------------------
- X
- X release 2.04 Thu Dec 07, 1989
- X
- X Did some cleanup in the source.
- X
- X Removed the FIFO clear from the ioctl function. We don't want
- X to do things there that aren't in the book.
- X
- X An ioctl call that switches off the CLOCAL flag will create
- X a SIGHUP signal if the carrier is actually missing at this
- X time.
- X
- X Every device is tested now quite thoroughly during initialization.
- X If the test fails the corresponding device keeps unconfigured.
- X
- X ------------------------------------------------------------
- X
- X release 2.05 Sat Jan 13, 1990
- X
- X This is the first public release of the FAS driver.
- X
- X Special thanks to the sysops of my test sites, Axel Fischer
- X (fischer@utower.UUCP) and Kritt Gierlewsen (kritt@einoed.UUCP).
- X
- X FAS is now an independant driver with its own driver name (`fas'),
- X major device number, link kit directory and other things necessary
- X for a driver. The original asy driver may or may not be linked
- X with the kernel. You only need it if you want to access some
- X serial devices via the virtual COM ports of the DOS emulator
- X (DosMerge or VP/ix) because the FAS driver doesn't have this
- X (really vendor dependant) feature.
- X
- X The default prefix for tty device node names is `ttyF' now.
- X This prevents mix-ups with the device names of the original
- X asy driver.
- X
- X Dropped the SYSV/AT support. I couldn't test the driver
- X for several release generations on uPort SYSV/AT, and because
- X there are not very much systems left with that flavor of UNIX
- X it doesn't make sense to try to maintain compatibility with it.
- X If someone really wants to use this driver on a 286 he has
- X to port it himself.
- X
- X Improved the transmitter FIFO fill procedure. Now it will try
- X harder to fill the FIFO as much as possible to cut down on
- X transmitter interrupts.
- X
- X Software input flow control (XON/XOFF) is controlled by the driver now.
- X It is bound to the level of the receiver ring buffer (as is hardware
- X flow control). As usual, it can be switched on and off by the
- X IXOFF flag in the termio(7) structure.
- X
- X Changed and speeded up the ring buffer -> unix buffer processing.
- X
- X For ISC, the getty lines for the inittab file are installed
- X by the makefile now.
- X
- X The conditional compilation of the function `init8250' (for
- X DosMerge) is now controlled by a define in `fas.h'. The compiler
- X switch `-DMERGE' is not used any more.
- X
- X Improved the documentation.
- X
- X The signals used for modem control and hardware flow control are
- X fully configurable in the `space.c' file now. Look at `fas.h' for
- X possible macros and combinations.
- X
- X There are some new modes for hardware flow control, for instance
- X HO_CTS_ON_DSR. This means that CTS is only looked at if DSR is on.
- X If DSR is off output is possible regardless of CTS. The underlying
- X assumption here is that we can expect proper handshake handling
- X only from devices that are in the ready state (indicated by DSR).
- X As a spin-off the problem with the hanging getty on lines with
- X turned-off terminals (mentioned in earlier releases) should be
- X gone if you use this new mode.
- X
- X If the XCLUDE-Flag is availabe (SYSV 3.2 because of Xenix
- X compatibility) exclusive open of a device is possible.
- X
- X The default size of the input ring buffer is now 5000 bytes.
- X This makes streaming input more likely even on loaded systems.
- X
- X Bug Fixes:
- X
- X The task state busy flag wasn't reset in some rare cases.
- X This could cause processes to become immortal while waiting
- X for the busy flag.
- X
- X Under some special conditions an ioctl call with a TCSETA?
- X command could corrupt the last character in the transmitter
- X shift register. This is fixed now.
- X
- X More fixing of the busy flag handling was necessary.
- X Co-ordinating several delayed tasks controlling this flag
- X is kind of tricky.
- X
- X After a TCSETA* ioctl command we disable the transmitter
- X for 2 sec (measured from the last transmitted character)
- X if the character format and/or speed has changed. This
- X gives the receiving side some time to do the same changes.
- X This is kind of experimental. There may be applications that
- X suffer from this delay. You may change the #define ADAPT_TIME
- X in `fas.h' to a smaller value.
- X
- X ------------------------------------------------------------
- X
- X release 2.06 Fri Mar 16, 1990
- X
- X This should have been patch #3 for release 2.05, but there are
- X so many changes now that I decided to make it a new release.
- X Therefore, some of the changes are described in the 2.05 release
- X notes above but were never released to the public.
- X
- X New Features:
- X
- X There is a transmitter ring buffer now to make the output
- X less system load dependent. This really speeds things up
- X because the transmitter FIFO gets filled with more characters
- X at once. The buffer size depends on the actual baud rate to
- X prevent long output buffer drains at low speeds.
- X
- X There are also bigger input buffers to make FAS more competitive
- X against "intelligent" cards.
- X
- X Lots of speed improvements and many small changes.
- X
- X Bug Fixes:
- X
- X Fixed input/output buffer flush on carrier loss while close
- X is waiting for the output to drain.
- X
- X ------------------------------------------------------------
- X
- X release 2.07 Tue Sep 18, 1990
- X
- X This is a major redesign of the previous release. I put most of the
- X time consuming tasks in one function that is invoked asynchronously
- X by timeout calls. Inside this function most of the code runs at
- X a lower system priority level (spl5) than the interrupts. That
- X means that during character processing tty interrupts are allowed.
- X This is the main key to operation at 38400 bps on multiple ports
- X at the same time which is possible now with this release.
- X
- X New Features:
- X
- X FAS supports the VP/ix DOS emulator!
- X Now you can throw out the vendor's original driver even
- X if you like to have a serial mouse or modem access in DOS.
- X Read the paragraph about VP/ix in the README file.
- X
- X The Intel i82510 port chip is supported. It has separate
- X 4-character FIFOs for input and output. Although the
- X NS16550A is much better this chip is your second choice
- X if you can't get your hands on the National chips.
- X Thanks to Christian Seyb (cs@gold.UUCP) for sending me
- X patches and the necessary documentation for the Intel
- X chips.
- X
- X There is an init sequence in `space.c'. You can put any
- X number of address-data pairs in a null terminated array
- X to program your serial card or other hardware before
- X FAS makes the first access to the ports. AST 4-port cards,
- X for instance, have an additional port that needs to be
- X written to with a certain bit pattern to allow shared
- X interrupts. If you need to read a port to achieve the
- X setting or resetting of flags as a side effect, this
- X is possible, too.
- X
- X ESIX is officially supported now.
- X
- X SCO UNIX is officially supported, too. FAS needs to be
- X compiled with the command line flag `-DSCO'. The makefile
- X for SCO takes care of that. Thanks to Walter Mecky
- X (walter@mecky.systemware.de) and Frank Simon
- X (terra@sol.north.de) for helping me in making the necessary
- X changes for SCO UNIX.
- X
- X SCO Xenix 386 is also officially supported. FAS needs to be
- X compiled with the command line flag `-DXENIX'. The makefile
- X for SCO Xenix takes care of that. Thanks to Andreas
- X Steinmetzler (andreas@oil.UUCP) for doing the port.
- X
- X If you have the RTSFLOW and CTSFLOW termio(7) flags,
- X hardware handshake can be controlled by them.
- X Note that enabling handware flow control via the
- X minor device number overrides these flags. If you
- X like to use them you need to create tty device nodes
- X with minor device numbers in which the bit for hardware
- X handshake is set to 0. Look at the description in the
- X README file for more details.
- X Note also that if you choose to use RTSFLOW and CTSFLOW
- X all your programs that do initial access to tty devices
- X (getty, uucico, cu, SLIP dialup program etc.) need to know
- X about these flags or hardware handshake will not be used.
- X
- X The `O_EXCL' flag for the open(2) call is honored now.
- X This allowes exclusive access to an FAS device without
- X suffering from race conditions which could occure with
- X the termio(7) XCLUDE flag method.
- X
- X The `fas_test_device' function returns a digit now that
- X indicates at which phase the test exited due to an error.
- X This error digit is displayed in the boot message. Thanks
- X to Brian Beattie (beattie@visenix.UUCP) for sending me
- X the necessary patches.
- X
- X Bug Fixes:
- X
- X Automatic input FIFO flush after unblocking the getty
- X open by the carrier or the unblock signal. This makes sure
- X that there is no chance that there are characters in the
- X FIFO that were received before the open got unblocked.
- X
- X The sdevice entry for the AST 4-port card had a wrong
- X I/O address range (`s_fas-mux4'). This didn't affect FAS
- X but is checked by the kernel config program.
- X
- X The gcc (GNU cc) support was removed because gcc's object
- X file wants to link in some "helpful" functions that aren't
- X contained in the kernel. But anyway, FAS is tuned so carefully
- X and depends on the optimization behaviour of the AT&T
- X standard C compiler that gcc won't have any advantages.
- X
- X I changed the method with which the `fas_test_device' function
- X waits for certain events. The `delay' function was used
- X for that purpose but it turned out that with some flavors
- X of UNIX it is prohibited to use this function during the
- X xxinit phase of the boot process. Now a simple timeout loop
- X is used instead.
- X
- X Removed the ADAPT_TIME mechanismn introduced in release 2.05.
- X
- X The open() call now returns an `EBUSY' error number if the
- X device is already open and can't be opened in the desired
- X mode at this time.
- X
- X The handling of the RING signal needed fixing. Unlike the other
- X three modem status lines RING generates an interrupt only at
- X the trailing edge.
- X
- X No SIGHUP signal is sent any more if an ioctl call clears
- X the CLOCAL termio(7) flag while there is no carrier present.
- X SIGHUP is only sent if the actual DCD modem line drops.
- X
- X The files *-mux4 were renamed to *-ast4 because this type of
- X card was originally developed by AST (AST 4-port card).
- X
- X ------------------------------------------------------------
- X
- X release 2.08 Sun Feb 03, 1991
- X
- X New Features:
- X
- X Bell Tech/Intel UNIX 3.2 is supported.
- X
- X SCO Xenix 286 is also supported now. Thanks to Nickolay Saukh
- X (nms@saukh.rd.jvd.su) for providing the patches.
- X
- X The Bell Tech HUB-6 card can be used with FAS. Thanks to
- X Keith Walker (kew@cims2.UUCP) for the patches.
- X
- X For AT&T derived flavors of UNIX there is a line automatically
- X added to the kernel description file that makes the adding
- X and removing of FAS possible via the `kconfig' program. Thanks
- X to John Adams (johna@grumpy.boston.ma.us) for this idea.
- X
- X There is a mechanismn now that prevents excessive modem status
- X interrupts caused by crosstalking between wires or by a loose
- X cable.
- X
- X You can disable the FIFOs in a UART by "oring" the macro
- X `NO_FIFO' to the base port address of this device. This is
- X useful for mouse devices where you need immediate response
- X to the mouse movement.
- X
- X The meaning of the bit mapped part of the minor device
- X numbers has changed. Some rather useless functions were
- X removed in favor of more control over the hardware handshake
- X modes. Even systems where the SCO RTSFLOW/CTSFLOW termio(7)
- X flags are not available can now use half duplex hardware
- X flow control (selected via the minor device number).
- X
- X The assignment of RS232C lines to certain FAS functions
- X is even more flexible now. This allows to connect two
- X UNIX systems (with FAS) via a null modem cable, running
- X a getty at both ends. For more details, read the paragraph
- X about CABLING in the README file.
- X
- X A special handling of the NS16550A input FIFO was introduced.
- X This causes multiple receiver interrupts (on the same IRQ
- X line) to be synchronized so that only one interrupt is
- X necessary to process all receiving ports. This reduces the
- X interrupt handling overhead and therefore results in lower
- X CPU load for concurrent serial input at high speeds.
- X
- X The `fas_event' function processes all scheduled events
- X for all units with one single call. Previously, every unit
- X launched its own timeout() call if there was work to
- X do. This could lead to up to 16 timeouts at the same time,
- X resulting in some timeout handling overhead. This overhead
- X is minimized now.
- X
- X Bug Fixes:
- X
- X There were two bugs that could cause a port to lock up,
- X resulting in an immortal process.
- X
- X Almost any kernel sleep is killable now (at least with one or
- X two `kill -9'). Therefore, there should be no more immortal
- X processes. Even killing a process that is hanging in a
- X close-on-exit call is possible.
- X
- X The meaning of the RTSFLOW/CTSFLOW termio(7) flags was converted
- X to what SCO had in mind (half duplex flow control). This is for
- X compatibility reasons. Full duplex RTS/CTS hardware flow control
- X is still possible via the minor device number method. Thanks to
- X Dmitry V. Volodin (dvv@hq.demos.su) for providing me with the
- X necessary knowledge.
- X
- X If a process is already sleeping in a getty open it will only
- X unblock on DCD low->high. In particular, if in the meantime
- X the device was open for dialout and DCD is still present if
- X the getty open takes over again this won't unblock the getty
- X open any more.
- X
- X And there were, as usual, a number of other small bug fixes.
- X
- X ------------------------------------------------------------
- X
- X release 2.09 Sun Jun 23, 1991
- X
- X New Features:
- X
- X AT&T UNIX 3.2 Version 2.1 is supported.
- X
- X Support was added for SysVr4 UNIX 386 (with the tty compatibility
- X drivers). This was mostly a problem of ANSI-fying certain parts
- X of the FAS sources. For this operating system, there is no VP/ix
- X support in FAS. This will change when FAS is converted into a
- X STREAMS driver.
- X
- X Killing a process hanging on an FAS port that had output
- X flow stopped was usually done by issuing one or two `kill -9'
- X commands. However, this method could hang the whole UNIX kernel.
- X Therefore, another method to release hung processes is
- X introduced in this release.
- X If you open an FAS device with the O_TRUNC flag, the input
- X and output buffers of that device get flushed. As a side
- X effect, if you had previously tried to kill a hung process,
- X and it continued to hang on an FAS device, you simply have
- X to open that device with the O_TRUNC flag, and the hung
- X process is released. All you have to do is to type
- X echo '\c' > /dev/ttyname
- X and the device buffers are flushed.
- X
- X There is a new array called fas_overrun[], which is of
- X type `uint', that contains three receiver overrun counters
- X for NS16450, i82510 and NS16550A UART chips, in that order.
- X If you have a tool that permits you to look at kernel
- X variables during runtime, you can determine yourself
- X whether the problems you may have might be caused by
- X lost input characters. With every receiver overrun, the
- X respective counter is incremented by one.
- X
- X Bug Fixes:
- X
- X The problem with the excessive modem status interrupts
- X is fixed. Well, kind of. It is suppressed, at least.
- X Crosstalk between the lines in a serial cable wastes
- X only a minor amount of CPU time now. Therefore, it isn't
- X necessary any more to shut down a port when this happens.
- X However, if you use an operating mode (selected by the
- X minor device number) that assigns certain functions to
- X the input pins at the RS232C connector (DCD, DSR, CTS and
- X RI), and these pins toggle because of crosstalk in the cable,
- X problems may still occure. But at least it won't panic the
- X kernel any more, nor will it consume lots of CPU time.
- X
- X Additionally, in operating modes where FAS doesn't need to
- X know anything about modem status lines, the modem status
- X interrupt is actually disabled. For instance, when a minor
- X device number of 0 + port# is used. On the other hand,
- X switching the device to DOS mode always _enables_ the
- X modem status interrupts.
- X
- X A problem was fixed when a port was in the canonical (cooked)
- X mode and FAS still tried to protect the CLIST input buffer
- X from overflowing. This blocked the connected terminal until
- X a break signal or a hangup. The input buffer protection
- X should, of course, only happen in raw mode.
- X
- X The TIMEOUT tty state flag isn't used any more by FAS.
- X Because this flag is used by the line discipline as well,
- X its usage in FAS could cause problems.
- X
- X There was a bug in the handling of one pointer in the
- X fas_test_device() function.
- X
- X In fas_event(), looping for the same port several times until
- X all events are serviced could cause temporary deadlocks. We
- X now don't loop any more. If an event occures while in fas_event(),
- X but the branch responsible for processing was already passed,
- X this event has to wait until the next call of fas_event()
- X (usually one or two kernel ticks later).
- X
- X The AIOCINFO ioctl() command returned the minor device number.
- X Now it returns the unit number.
- X
- X SIGHUP will be sent only if the port is the controlling terminal
- X of a process group.
- X
- X There was a problem with the initialization macros for the
- X fas_modem[] and fas_flow[] arrays. Under Xenix 286, some
- X of these macros expanded to a value of zero because the
- X size of type int is 16 bits, while it is 32 bits for all
- X the 386 UNIX flavors. This resulted in dropped bits with
- X some macros that use the `<<' operator.
- X
- X An fasopen() call is checked immediately for permissions now,
- X even if another process is currently hanging in fasclose().
- X The fasopen() call, of course, can be completed only after
- X the other process has returned from fasclose().
- X
- X ------------------------------------------------------------
- X
- X release 2.09 PL1 Sun Sep 22, 1991
- X
- X New Features:
- X
- X There is a new variable called fas_msi_noise. This
- X is a counter that is incremented each time the modem
- X status interrupt of a UART had to be disabled due to
- X excessive logic level transitions on one or more
- X modem status lines (DCD, DSR, CTS and RING).
- X This can be used to check whether there is any
- X crosstalking at high speeds in your serial cables
- X and should be taken as a hint that you should improve
- X your cables (shorter and/or shielded ones). Note
- X that there are also some modems or other devices
- X that cause this counter to be incremented (slowly,
- X though). In this case fixing the cabling won't
- X help.
- X
- X FAS now supports a port speed of 57600 bps. By
- X default, in the array fas_port[] (`space.c') you can
- X set a flag (`HIGH_SPEED') independently for each port
- X to have 57600 bps instead of 38400 bps on the respective
- X port. Due to interrupt latency in the UNIX kernel you
- X will need a 486 mainboard even with NS16550A chips if
- X you don't want to risk losing incoming characters. For
- X terminals connected at this speed, a slower mainboard
- X will suffice, however. To make this speed work well,
- X the transmitter buffer size has been increased to 5000
- X bytes.
- X
- X Another flag (`NO_TEST') can be set in fas_port[]
- X (`space.c') to disable the testing procedure for
- X the respective port. This can be used to allow
- X UART chips (i.e. internal modems) that don't pass
- X the test but seem to work anyway. Note that if you
- X do that you're completely on your own if you have
- X problems with FAS. I won't support you if you use
- X this flag because using UARTs that need this flag
- X means calling for trouble. I simply can't diagnose
- X this kind of hardware problem from the remote.
- X
- X The SVR4 `CTSXON' and `RTSXOFF' hardware flow
- X control flags are supported, although I still
- X believe that FAS' minor device number based
- X method for controlling hardware handshake modes
- X is superiour to any method that is using ioctl()
- X calls for that purpose.
- X
- X Made the UART testing in fas_test_device() even
- X harder. Now it should detect brain dead chips
- X more reliable.
- X
- X Bug Fixes:
- X
- X Modified fasopen() to handle mixed (with and w/o
- X O_NDELAY flag) invocations while there is no
- X carrier.
- X
- X On dialout devices with modem control it was
- X intended that after carrier drop the first
- X TCSETA* ioctl() command would switch FAS to
- X ignore DCD for that port again (as is the
- X case after the initial fasopen() call). This
- X breaks certain shells that do a TCSETA*
- X command before they read from stdin, and therefore
- X never notice that DCD dropped. They don't get
- X the SIGHUP either because they are in another
- X process group at this time (job control !).
- X Now it is only possible to reset FAS in
- X the above manner if the CLOCAL flag is set
- X with the TCSETA* command. Once FAS is
- X switched to ignore DCD, CLOCAL can be cleared
- X again.
- X
- X If the carrier drops and modem control is
- X enabled (CLOCAL is off), SIGCONT is sent
- X before SIGHUP (only where available) to
- X wake up stopped processes so that they will
- X notice the hangup signal.
- X
- X Several other bug fixes, cleanups and improvements.
- X
- X ------------------------------------------------------------
- X
- X release 2.10 PL0 Mon Aug 17, 1992
- X
- X New Features:
- X
- X There are no interrupt vectors to be entered in `space.c'.
- X The only place where int vectors are contained in this
- X release is the `s_fas' file. The reason for this is that
- X the interrupt function in FAS now scans all _active_ ports
- X no matter what int vector they are assigned to. This is
- X necessary in order to sort the ports by their speed. Scanning
- X the fastest port(s) first makes receiver character loss less
- X likely, especially at speeds > 19200 bps. Although this method
- X has a slight CPU time overhead for only one running port the
- X real advantage is that when more than one port is running,
- X and especially when these ports are receiving NS16550A UARTs
- X where the interrupt frequency optimization is used, the
- X CPU time requirements for each additional running port are
- X substantially lower than with previous FAS releases.
- X
- X Where available, the Makefile puts the kernel defines from
- X `/etc/conf/cf.d/defines' into the compiler command line.
- X
- X There are now different Makefiles for ISC UNIX 2.x and 3.x.
- X This has to do with a change in the ISC kernel config kit.
- X
- X Under SVR4 the copy of `fas.h' that goes to `/usr/include/sys'
- X now gets the time stamp of the copy operation so that the
- X dependency in the Makefile works.
- X
- X Either 57600 or 115200 bps can be used instead of 38400 bps.
- X For 115200 a very fast mother board and a UNIX with a low
- X interrupt latency is necessary to prevent input character loss.
- X
- X There is a flag `LOW_INT_LAT' that can be defined in the
- X makefile if the UNIX kernel has a low tty interrupt latency.
- X This saves a lot of CPU time at high speeds because the
- X receiver FIFO trigger level is set to 8 instead of 4 (default),
- X and therefore the receiver interrupt frequency is cut in half.
- X
- X The flags that can be "or"ed into the base port address of
- X a UART to change its default behaviour are now documented
- X in the README file.
- X
- X Template files for the DigiChannel PC/8 card were added.
- X
- X Support for gcc has been added. If NO_ASM is _not_ defined
- X inline code for the inb() and outb() functions is generated
- X with the help of the __asm__ feature. However, when __asm__
- X is used together with the `volatile' storage class gcc
- X produces rather poor code. I assume that in this case gcc
- X can't do some optimizations because they would break the
- X inline assembler code. And the code gets even worse if
- X -fstrength-reduce is used (with or without inline assembler
- X code). Apparently gcc is over-optimizing the code so that
- X it is in fact slower than without -fstrength-reduce. So
- X don't use this flag. All tests where done with gcc 1.40.
- X
- X There is an interrupt acknowledge sequence in `space.c' now
- X that is similar to the init sequence but is executed by the
- X fasintr() function after all pending interrupts on all serial
- X cards have been processed. This is a replacement for the
- X fas_int_ack_port and fas_int_ack arrays that are gone because
- X we don't use interrupt vectors any more inside FAS.
- X
- X The receiver and modem status interrupts are disabled now
- X whenever they aren't needed. If they are disabled this
- X saves some CPU time in the interrupt function.
- X
- X A new termio(7) flag CRTSFL under SCO UNIX 3.2.4 enables full
- X duplex hardware flow control, but only if neither CTSFLOW nor
- X RTSFLOW are set. See the termio(7) man page. However, remember
- X that when you use a minor device number controlled hardware
- X handshake mode (the prefered method with FAS, even under SCO
- X UNIX and Xenix) the flags CTSFLOW, RTSFLOW and CRTSFL are
- X ignored!
- X
- X For each port, it can be selected whether the SCO UNIX/Xenix
- X CTSFLOW/RTSFLOW termio(7) flags enable half duplex hardware
- X flow control (default, compatible with the sio driver), or if
- X they enable full duplex hardware flow control (compatible with
- X many "intelligent" serial cards from third party vendors).
- X
- X The RTS_TOG ioctl() command is supported (if available).
- X
- X The sources for this release, and also the object file, are
- X somewhat bigger than the previous release. Besides other
- X things this is caused by the inlining of some functions.
- X These functions were called rather frequently and were
- X small enough for inlining. This saves some function call
- X overhead.
- X
- X There are lots of changes that yield a better use of
- X register variables, especially in loops.
- X
- X Bug Fixes:
- X
- X The method to flush the output buffers of a port while a
- X process is hanging in fasclose() has been changed. In
- X FAS 2.09 the buffers were flushed when the port was opened
- X with the O_TRUNC flag. This caused some problems with shell
- X scripts that wanted to write text with
- X
- X echo 'foo bar' > /dev/tty
- X
- X I changed FAS to use O_APPEND instead. So in order to flush
- X the output buffers in this release one has to use
- X
- X echo '\c' >> /dev/ttyF00
- X
- X if the port `ttyF00' is hanging.
- X
- X The kernel `ttyhog' variable is used instead of the default
- X TTYHOG value from `tty.h'. So FAS notices if this variable is
- X tuned by the SysAdmin.
- X
- X The array `fas_info' has been renamed to `fas_internals'
- X to prevent a name space collision under SVR4.
- X
- X `fas_overrun' and `fas_msi_noise' where declared `static'.
- X Under some UNIX flavours a static kernel variable isn't
- X found by programs that are used to look at variables in
- X the running kernel. This is fixed now.
- X
- X The method how to handle concurrent fasopen() calls with
- X and without O_NDELAY on a device that waits for a carrier
- X has been changed back to what FAS 2.09.0 did. If there
- X already is a process waiting for carrier and another process
- X opens the device with O_NDELAY the waiting process is waked
- X up and completes its fasopen() call regardless of the state
- X of the carrier. This is because due to the AT&T kernel design
- X we can't have both a sleeping and a working process on the
- X same device. Patch #1 for FAS 2.09 introduced a bug which
- X caused hung gettys. This error is fixed by going back to
- X the method used in FAS 2.09.0.
- X
- X The problem that caused occasional crashes under SCO UNIX
- X appears to be fixed. I don't know for sure why this is so.
- X We'll see.
- X
- X When a process is waiting inside fasclose() for the
- X output buffers to drain and the process receives a
- X signal that is not ignored the output buffer is
- X automatically flushed in order to allow fasclose()
- X to complete before the signal handler is entered.
- X This has to happen because the open file counter is
- X decremented _before_ fasclose() is called. So after
- X the signal handler has done its work fasclose() wouldn't
- X be entered again because the open file counter is already
- X zero at this time. That means that whatever happens fasclose()
- X must have done its cleanup for the port before it returns.
- X
- X Under SVR4 longjmp() wants a pointer as its parameter.
- X
- X The half and full duplex hardware handshake has been
- X redesigned to be more bullet proof when it comes to
- X switching from one mode to the other.
- X
- X The Logitech mouse problem has been solved. There is
- X a bug in the generic ttiocom() support function that
- X FAS needs to circumvent with some additional code.
- X
- X The incrementation of the counters in the sysinfo
- X structure is fixed in that it happens only once for
- X each interrupt and not once for every port that has
- X work to do. This better reflects the actual interrupt
- X load.
- X
- X Because a carrier drop is processed asynchronously in
- X fas_event() it is necessary to at least stop the
- X character output as soon as the modem status interrupt
- X is detected. Now only up to 16 characters (one FIFO
- X load with NS16550A) will be transmitted after carrier
- X drop. This is in line with the latency of the hardware
- X output handshake.
- X
- X And of course lots of other optimizations and small
- X fixes.
- SHAR_EOF
- true || echo 'restore of RELEASENOTES failed'
- rm -f _shar_wnt_.tmp
- fi
- # ============= config-ast4 ==============
- if test -f 'config-ast4' -a X"$1" != X"-c"; then
- echo 'x - skipping config-ast4 (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- echo 'x - extracting config-ast4 (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'config-ast4' &&
- X* its character device number 4
- Xcharacter(4)
- X
- X* its name
- Xprefix = fas
- X
- X* The interrupt vectors handled by this controller
- Xintvec = 4
- X
- X* its mask level
- Xintpri = SPLTTY
- X
- X* the functions it supports
- Xfunctions = init, open, close, read, write, ioctl, tty
- SHAR_EOF
- true || echo 'restore of config-ast4 failed'
- rm -f _shar_wnt_.tmp
- fi
- # ============= config-ast4c12 ==============
- if test -f 'config-ast4c12' -a X"$1" != X"-c"; then
- echo 'x - skipping config-ast4c12 (File already exists)'
- rm -f _shar_wnt_.tmp
- else
- > _shar_wnt_.tmp
- echo 'x - extracting config-ast4c12 (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'config-ast4c12' &&
- X* its character device number 4
- SHAR_EOF
- true || echo 'restore of config-ast4c12 failed'
- fi
- echo 'End of fas210 part 2'
- echo 'File config-ast4c12 is continued in part 3'
- echo 3 > _shar_seq_.tmp
- exit 0
- --
- Uwe Doering | INET : gemini@geminix.in-berlin.de
- Berlin |----------------------------------------------------------------
- Germany | UUCP : ...!unido!fub!geminix.in-berlin.de!gemini
-