|
|
1.1 ! root 1: ccoomm -- Device Driver ! 2: ! 3: ! 4: The COHERENT 286 system supports four asynchronous serial lines, ccoomm11 ! 5: through ccoomm44, via device drivers aall00 and aall11. The COHERENT 386 system uses ! 6: device driver aassyy to control up to 32 serial lines. See their respective ! 7: Lexicon entries for further details. Note that the rest of this article ! 8: applies to COHERENT 286. ! 9: ! 10: A serial line can be opened into any of four different ``flavors'', as ! 11: follows: ! 12: ! 13: ccoomm?ll Interrupt driven, local mode (no modem control) ! 14: ccoomm?rr Interrupt driven, remote mode (modem control) ! 15: ccoomm?ppll Polled, local mode (no modem control) ! 16: ccoomm?pprr Polled, remote mode (modem control) ! 17: ! 18: ``Local mode'' means that the line will have a terminal plugged into it, to ! 19: directly access the computer. ``Modem control'' means that the line will ! 20: have a modem plugged into it. Modem control is enabled on a serial line by ! 21: resetting the modem control bit (bit 7) in the minor number for the device. ! 22: This allows the system to generate a hangup signal when the modem indicates ! 23: loss of carrier by dropping DCD (Data Carrier Detect). A modem line should ! 24: always have its DSR, DCD and CTS pins connected. If left hanging, spurious ! 25: transitions can cause severe system thrashing. To disable modem control on ! 26: a given serial line, use the minor device which has the modem control bit ! 27: set (bit 7). An ooppeenn to a modem-control line will block until a carrier is ! 28: detected (DCD goes true). ! 29: ! 30: ``Interrupt mode'' means that the port can generate an interrupt to attract ! 31: the attention of the COHERENT system; ``polled mode'' means that the port ! 32: cannot generate an interrupt, but must be checked (or ``polled'') ! 33: constantly by the COHERENT system to see if activity has occurred on it. ! 34: ! 35: The COHERENT 286 system uses two device drivers to manage serial lines: aall00 ! 36: manages COM1 and COM3, and aall11 manages COM2 and COM4. Due to limitations ! 37: in the design of the ports, you can enable interrupts on either COM1 or ! 38: COM3 (or on COM2 or COM4), but not both. If you wish to use both ports ! 39: simultaneously, one must be run in polled mode. For example, if you wish ! 40: to open all four serial lines, you can open two of the lines in interrupt ! 41: mode: you can open either COM1 or COM3 in interrupt mode, and you can open ! 42: either COM2 or COM4 in interrupt mode. The other two lines must be opened ! 43: in polled mode. ! 44: ! 45: Opening a device in polled mode consumes many CPU cycles, based upon the ! 46: speed of the highest baud rate requested. For example, on a 20 MHz 80386- ! 47: based machine, polling at 9600-baud was found to consume about 15% of the ! 48: CPU time. As only one device can use the interrupt line at any given time, ! 49: the best approach is to make the high-speed line of the pair interrupt ! 50: driven and open the low-speed or less-frequently used line in polled mode. ! 51: However, if you enable a polled line for logins, the port is open and will ! 52: be polled as long as the port remains open (enabled). Thus, even if a port ! 53: is not in use, the fact that it has a ggeettttyy on it consumes CPU cycles. As ! 54: a rule of thumb, try and open a port in interrupt mode. If you cannot, use ! 55: the polled version. Also note that use of any of the four serial ports in ! 56: polled mode prevents other polled serial device drivers, such as the hhss ! 57: generic multi-port polled serial driver, from being used at the same time. ! 58: ! 59: If you intend to use a modem on your serial port, you must insure that the ! 60: DCD signal from the modem actually _f_o_l_l_o_w_s the state of carrier detect. ! 61: Some modems allow the user to ``strap'' or set the DCD signal so that it is ! 62: always asserted (true). This incorrect setup will cause COHERENT to think ! 63: that the modem is ``connected'' to a remote modem, even when there is no ! 64: such connection. ! 65: ! 66: In addition, if you wish to allow remote logins to your COHERENT system via ! 67: your modem, you must insure that the modem does _n_o_t echo any commands or ! 68: status information. Failure to do so will result in severe system ! 69: thrashing due to the ggeettttyy or llooggiinn processes endlessly ``talking'' to your ! 70: modem. ! 71: ! 72: _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 ! 73: Serial lines ccoomm11 through ccoomm44 default to 9600 baud when opened. This ! 74: default speed can be permanently changed on a ``per port'' basis by ! 75: changing the value of driver variables CC11BBAAUUDD, CC22BBAAUUDD, CC33BBAAUUDD or CC44BBAAUUDD. ! 76: The list of acceptible values can be found in header file <ssggttttyy.hh> and ! 77: range from 1, corresponding to 50 baud, up to 17, which corresponds to ! 78: 19,200 baud. For a table of legal baud rates, see the Lexicon entry for ! 79: ssggttttyy.hh. ! 80: ! 81: To change the default value for a port, you must use the /ccoonnff/ppaattcchh ! 82: command. For example, to change the default speed for port ccoomm22 to 2400 ! 83: baud, enter the following command while running as the superuser: ! 84: ! 85: /conf/patch /drv/al1 C2BAUD_=12 ! 86: ! 87: The change will not take effect until the next time that you boot your ! 88: system. ! 89: ! 90: _L_o_a_d_i_n_g _a _D_r_i_v_e_r ! 91: COHERENT 286 version 3.2 and later implements all COM drivers as loadable ! 92: drivers. This was done to save space within the kernel, and to let you ! 93: configure your system as you prefer. COHERENT 386 version 4.0 links all ! 94: COM drivers into the kernel. The rest of this section applies to users of ! 95: COHERENT 286, versions 3.2 and later. It does _n_o_t apply to any release of ! 96: COHERENT prior to version 3.2. ! 97: ! 98: To load a COM driver, you must use the command ddrrvvlldd to load the ! 99: appropriate aall device. As noted above, drivers ccoomm11 and ccoomm33 are ! 100: controlled by device aall00, and drivers ccoomm22 and ccoomm44 by aall11. For example, to ! 101: load aall00 use the command: ! 102: ! 103: /etc/drvld /drv/al0 ! 104: ! 105: To remove a COM driver, first type the command ! 106: ! 107: ps -d ! 108: ! 109: and note the process identifier of the COM driver you want to remove. ! 110: Then, become the superuser rroooott and type the command ! 111: ! 112: kill -9 _x_x_x_x ! 113: ! 114: where _x_x_x_x is the process identifier for the COM driver. ! 115: ! 116: Note that aall00 is in directory /ddrrvv, _n_o_t /ddeevv. ! 117: ! 118: If you are going to load certain drivers regularly, be sure to write the ! 119: appropriate ddrrvvlldd command into system file /eettcc/ddrrvvlldd.aallll. ! 120: ! 121: _S_e_e _A_l_s_o ! 122: ccoomm11, ccoomm22, ccoomm33, ccoomm44, ddeevviiccee ddrriivveerrss, ddrrvvlldd ! 123: ! 124: _D_i_a_g_n_o_s_t_i_c_s ! 125: An attempt to open a non-existent device will generate error messages. ! 126: This can occur if hardware is absent or not turned on. ! 127: ! 128: _N_o_t_e_s ! 129: The ccoomm family of devices apply only to COHERENT 286. To access a serial ! 130: port under COHERENT 386, use the driver aassyy, which is described in its own ! 131: Lexicon entry. ! 132: ! 133: The ccoomm* series of devices are not compatible with the iiooccttll() parameters ! 134: defined in header file <tteerrmmiioo.hh>. Be sure to include header file <ssggttttyy.hh> ! 135: if you wish to perform terminal specific iiooccttll() calls. ! 136: ! 137: In the current version of these drivers, the following sequence of steps ! 138: results in a panic: ! 139: ! 140: enable com4pl ! 141: enable com3pl ! 142: disable com4pl ! 143: kill kill <al1 driver process id> ! 144: ! 145: The key is that the driver containing the polling routine cannot be ! 146: unloaded if the other driver is still polling. ! 147: ! 148: Note, too, that if any ccoomm device driver is used in polling mode, the hhss ! 149: driver cannot be used, and vice versa. ! 150: ! 151: Source for these device drivers, is provided in with the driver kit, in ! 152: source files aall.cc, aallbbaauudd.cc, and aallxx.cc. In the production releases of ! 153: COHERENT 4.0.0 and later, these devices are supplanted by device driver ! 154: aassyy.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.