Subject: Re: Problem with the 3/7 sources.
To: Scott Reynolds <scott@bart.acs.nmu.edu>
From: Martin Husemann <martin@euterpe.owl.de>
List: current-users
Date: 03/13/1994 23:46:59
> As a side note, there is at least one other OS that does a similar thing 
> -- SCO XENIX allows one to open a port with a (minor#+128) without 
> carrier detected.  The FAS driver for SysV based UNIX versions has a 
> comparable minor device -> port behavior setup.  I'll support such an 
> idea in NetBSD unless there is a good philosophical reason against it.

I do strongly second this idea. The 'fas' configuration sheme has proven
useful in a lot of situations (every i386-based-*ix site with modem access
I know of uses 'fas').

Fas supports upto 16 devices, coded in the lower 4 bits of the minor number.
Two bits are used to select carrier control and 2 bits for handshake 
selection.

Handshake options:

 - ignore RTS/CTS and all ioctl's to trying to change this
 - honour RTS/CTS and ignore all ioctl's trying to change this
 - normal mode: do RTS/CTS if requested by ioctl's
 - a special streams(tm) mode signalling the fill-level of the 
   io-queues by offband streams-messages [ ouh, sorry, this one ist
   in 'SAS', the streams-version of 'fas' ]

Carrier options:

 - ignore carrier and clocal; open() succeeds without DCD, sighup
   is never generated (local line)
 - honour carrier but ignore clocal (dial-in only modem line); open()
   blocks, until carrier present; sighup on DCD 1->0
 - honour carrier after it has been present: open() succeeds without DCD,
   sighup is disabled until carrier is present (dual use dial in/out modem
   line)
 - normal mode: carrier control selected by ioctl's

Most of this options would not be necessary in an ideal world, but with lots
of different environments and lots of deficient software around, one or two
(tty and cua device) of this options should cope with every situation.

Another good idea from fas (which maybe already in com): whenever any of
the controlled 16x50's generates an interrupt, poll all waiting bytes from
each of them. This does not cost much more than checking each interupt mask
but saves you lots of interrupts (at least if more than one port has a
fifo).

Btw: fas is the only thing I'm missing from my long-gone SVR4 days (and at
     least it was written by Uwe Doering - not AT&T)



Martin

------------------------------------------------------------------------------