Files
Warner Losh ffe00a0522 rc.d/serial: Kill dtrwait
The dtrwait wait functionality was dropped in the TTY MPSAFE rewrite for
FreeBSD 8. Remove referneces to it here. Also, the sysctl was renamed
for drainwait, so use the new name. Given the 16 years between this
event and somebody noticing, I strongly suspect this file can just be
removed.

Sponsored by:		Netflix
Reviewed by:		kevans, emaste
Differential Revision:	https://reviews.freebsd.org/D52316
2025-09-02 23:18:09 -06:00

159 lines
4.7 KiB
Bash
Executable File

#!/bin/sh
#
# Copyright (c) 1996 Andrey A. Chernov
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
#
# PROVIDE: serial
# REQUIRE: root
# KEYWORD: nojail
# Change some defaults for serial devices.
# Standard defaults are:
# dtrwait 300 drainwait `sysctl -n kern.drainwait`
# initial cflag from <sys/ttydefaults.h> = cread cs8 hupcl
# initial iflag, lflag and oflag all 0
# speed 115200
# special chars from <sys/ttydefaults.h>
# nothing locked
# except for serial consoles the initial iflag, lflag and oflag are from
# <sys/ttydefaults.h> and clocal is locked on.
default() {
# Reset everything changed by the other functions to initial defaults.
dc=$1; shift # device name character
drainwait=`sysctl -n kern.tty_drainwait`
for i in $*
do
comcontrol /dev/tty${dc}${i} dtrwait 300 drainwait $drainwait
stty < /dev/tty${dc}${i}.init -clocal crtscts hupcl 115200 reprint ^R
stty < /dev/tty${dc}${i}.lock -clocal -crtscts -hupcl 0
stty < /dev/cua${dc}${i}.init -clocal crtscts hupcl 115200 reprint ^R
stty < /dev/cua${dc}${i}.lock -clocal -crtscts -hupcl 0
done
}
maybe() {
# Special settings.
dc=$1; shift
for i in $*
do
# Don't use ^R; it breaks bash's ^R when typed ahead.
stty < /dev/tty${dc}${i}.init reprint undef
stty < /dev/cua${dc}${i}.init reprint undef
# Lock clocal off on dialin device for security.
stty < /dev/tty${dc}${i}.lock clocal
# Lock the speeds to use old binaries that don't support them.
# Any legal speed works to lock the initial speed.
stty < /dev/tty${dc}${i}.lock 300
stty < /dev/cua${dc}${i}.lock 300
done
}
modem() {
# Modem that supports CTS and perhaps RTS handshaking.
dc=$1; shift
for i in $*
do
# may depend on modem
comcontrol /dev/tty${dc}${i} drainwait 180
# Lock crtscts on.
# Speed reasonable for V42bis.
stty < /dev/tty${dc}${i}.init crtscts 115200
stty < /dev/tty${dc}${i}.lock crtscts
stty < /dev/cua${dc}${i}.init crtscts 115200
stty < /dev/cua${dc}${i}.lock crtscts
done
}
mouse() {
# Mouse on either callin or callout port.
dc=$1; shift
for i in $*
do
# Lock clocal on, hupcl off.
# Standard speed for Microsoft mouse.
stty < /dev/tty${dc}${i}.init clocal -hupcl 1200
stty < /dev/tty${dc}${i}.lock clocal hupcl
stty < /dev/cua${dc}${i}.init clocal -hupcl 1200
stty < /dev/cua${dc}${i}.lock clocal hupcl
done
}
terminal() {
# Terminal that supports CTS and perhaps RTS handshaking
# with the cable or terminal arranged so that DCD is on
# at least while the terminal is on.
# Also works for bidirectional communications to another pc
# provided at most one side runs getty.
# Same as modem() except we want a faster speed and no dtrwait.
dc=$1; shift
modem ${dc} $*
for i in $*
do
comcontrol /dev/tty${dc}${i} dtrwait 0
stty < /dev/tty${dc}${i}.init 115200
stty < /dev/cua${dc}${i}.init 115200
done
}
3wire() {
# 3-wire serial terminals. These don't supply carrier, so
# clocal needs to be set, and crtscts needs to be unset.
dc=$1; shift
terminal ${dc} $*
for i in $*
do
stty < /dev/tty${dc}${i}.init clocal -crtscts
stty < /dev/cua${dc}${i}.init clocal -crtscts
done
}
# Don't use anything from this file unless you have some buggy programs
# that require it.
# Edit the functions and the examples to suit your system.
# $1 is the device identifier, and the remainder of the line
# lists the device numbers.
# Initialize assorted 8250-16550 (uart) ports.
# maybe u 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v
# mouse u 2
# modem u 1
# terminal u 0
# 3wire u 0