File:  [MW Coherent from dump] / coherent / f / usr / man / KERNEL / com
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Wed May 29 04:56:40 2019 UTC (7 years, 2 months ago) by root
Branches: MarkWilliams, MAIN
CVS tags: relic, HEAD
coherent

ccoomm -- Device Driver


The  COHERENT 286  system  supports four  asynchronous  serial lines,  ccoomm11
through ccoomm44, via device drivers aall00  and aall11. The COHERENT 386 system uses
device driver aassyy  to control up to 32 serial  lines.  See their respective
Lexicon entries  for further details.   Note that the rest  of this article
applies to COHERENT 286.

A serial  line can  be opened  into any of  four different  ``flavors'', as
follows:

ccoomm?ll     Interrupt driven, local mode (no modem control)
ccoomm?rr     Interrupt driven, remote mode (modem control)
ccoomm?ppll    Polled, local mode (no modem control)
ccoomm?pprr    Polled, remote mode (modem control)

``Local mode'' means that the line will have a terminal plugged into it, to
directly access  the computer.  ``Modem control'' means  that the line will
have a modem plugged into it.  Modem control is enabled on a serial line by
resetting the modem control bit (bit 7) in the minor number for the device.
This allows the system to generate a hangup signal when the modem indicates
loss of carrier by dropping DCD (Data Carrier Detect).  A modem line should
always have its DSR, DCD and CTS pins connected.  If left hanging, spurious
transitions can cause severe system thrashing.  To disable modem control on
a given serial  line, use the minor device which  has the modem control bit
set (bit 7).  An ooppeenn to a modem-control line will block until a carrier is
detected (DCD goes true).

``Interrupt mode'' means that the port can generate an interrupt to attract
the attention  of the COHERENT system; ``polled mode''  means that the port
cannot  generate  an   interrupt,  but  must  be  checked  (or  ``polled'')
constantly by the COHERENT system to see if activity has occurred on it.

The COHERENT 286 system uses two device drivers to manage serial lines: aall00
manages COM1 and  COM3, and aall11 manages COM2 and  COM4.  Due to limitations
in the  design of the  ports, you can  enable interrupts on  either COM1 or
COM3 (or  on COM2 or  COM4), but not both.   If you wish to  use both ports
simultaneously, one must  be run in polled mode.  For  example, if you wish
to open all  four serial lines, you can open  two of the lines in interrupt
mode: you can open either COM1  or COM3 in interrupt mode, and you can open
either COM2 or COM4 in interrupt  mode.  The other two lines must be opened
in polled mode.

Opening a  device in polled mode  consumes many CPU cycles,  based upon the
speed of the highest baud rate  requested.  For example, on a 20 MHz 80386-
based machine, polling  at 9600-baud was found to consume  about 15% of the
CPU time.  As only one device can use the interrupt line at any given time,
the best  approach is  to make  the high-speed line  of the  pair interrupt
driven and open the low-speed  or less-frequently used line in polled mode.
However, if you enable a polled  line for logins, the port is open and will
be polled as long as the port remains open (enabled).  Thus, even if a port
is not in use, the fact  that it has a ggeettttyy on it consumes CPU cycles.  As
a rule of thumb, try and open a port in interrupt mode.  If you cannot, use
the polled version.  Also note that  use of any of the four serial ports in
polled mode  prevents other  polled serial device  drivers, such as  the hhss
generic multi-port polled serial driver, from being used at the same time.

If you intend to use a  modem on your serial port, you must insure that the
DCD signal  from the  modem actually _f_o_l_l_o_w_s  the state of  carrier detect.
Some modems allow the user to ``strap'' or set the DCD signal so that it is
always asserted (true).  This  incorrect setup will cause COHERENT to think
that the  modem is ``connected'' to  a remote modem, even  when there is no
such connection.

In addition, if you wish to allow remote logins to your COHERENT system via
your modem,  you must insure that  the modem does _n_o_t  echo any commands or
status  information.   Failure  to  do  so  will result  in  severe  system
thrashing due to the ggeettttyy or llooggiinn processes endlessly ``talking'' to your
modem.

_C_h_a_n_g_i_n_g _D_e_f_a_u_l_t _P_o_r_t _S_p_e_e_d_s
Serial  lines ccoomm11  through ccoomm44  default to 9600  baud when  opened.  This
default  speed  can be  permanently  changed  on a  ``per  port'' basis  by
changing the  value of driver  variables CC11BBAAUUDD, CC22BBAAUUDD,  CC33BBAAUUDD or CC44BBAAUUDD.
The list  of acceptible values  can be found  in header file  <ssggttttyy.hh> and
range from  1, corresponding  to 50  baud, up to  17, which  corresponds to
19,200 baud.   For a table of  legal baud rates, see  the Lexicon entry for
ssggttttyy.hh.

To  change the  default value  for  a port,  you must  use the  /ccoonnff/ppaattcchh
command.  For  example, to change the  default speed for port  ccoomm22 to 2400
baud, enter the following command while running as the superuser:

    /conf/patch /drv/al1 C2BAUD_=12

The change  will not  take effect  until the next  time that you  boot your
system.

_L_o_a_d_i_n_g _a _D_r_i_v_e_r
COHERENT 286  version 3.2 and later implements all  COM drivers as loadable
drivers.  This  was done to  save space within  the kernel, and  to let you
configure your  system as you  prefer.  COHERENT 386 version  4.0 links all
COM drivers into the kernel.  The  rest of this section applies to users of
COHERENT 286, versions 3.2 and later.   It does _n_o_t apply to any release of
COHERENT prior to version 3.2.

To  load  a  COM  driver, you  must  use  the  command  ddrrvvlldd to  load  the
appropriate  aall  device.   As  noted  above,  drivers  ccoomm11  and  ccoomm33  are
controlled by device aall00, and drivers ccoomm22 and ccoomm44 by aall11. For example, to
load aall00 use the command:

    /etc/drvld /drv/al0

To remove a COM driver, first type the command

    ps -d

and  note the  process identifier  of the  COM driver  you want  to remove.
Then, become the superuser rroooott and type the command

    kill  -9 _x_x_x_x

where _x_x_x_x is the process identifier for the COM driver.

Note that aall00 is in directory /ddrrvv, _n_o_t /ddeevv.

If you  are going to load  certain drivers regularly, be  sure to write the
appropriate ddrrvvlldd command into system file /eettcc/ddrrvvlldd.aallll.

_S_e_e _A_l_s_o
ccoomm11, ccoomm22, ccoomm33, ccoomm44, ddeevviiccee ddrriivveerrss, ddrrvvlldd

_D_i_a_g_n_o_s_t_i_c_s
An  attempt to  open a  non-existent device  will generate  error messages.
This can occur if hardware is absent or not turned on.

_N_o_t_e_s
The ccoomm family  of devices apply only to COHERENT  286.  To access a serial
port under COHERENT 386, use the  driver aassyy, which is described in its own
Lexicon entry.

The ccoomm*  series of devices are not compatible  with the iiooccttll() parameters
defined in header file <tteerrmmiioo.hh>. Be sure to include header file <ssggttttyy.hh>
if you wish to perform terminal specific iiooccttll() calls.

In the  current version of  these drivers, the following  sequence of steps
results in a panic:

    enable com4pl
    enable com3pl
    disable com4pl
    kill kill <al1 driver process id>

The  key  is that  the  driver  containing the  polling  routine cannot  be
unloaded if the other driver is still polling.

Note, too,  that if any ccoomm  device driver is used in  polling mode, the hhss
driver cannot be used, and vice versa.

Source for  these device drivers,  is provided in  with the driver  kit, in
source  files aall.cc,  aallbbaauudd.cc,  and aallxx.cc.  In the  production releases  of
COHERENT 4.0.0  and later,  these devices  are supplanted by  device driver
aassyy.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.