[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

getty and hw flow control



hey,
 I'm working on enabling a platform that I'm told will be using
hardware flow control on the serial console. To prepare for this, I've
put together this patch to detect the crtscts setting on the console,
and set the -h flag for the getty. It works, but I'd appreciate a
review by someone who knows serial more than I. Specifically, is it
possible that a system that uses crtscts would not behave well w/
'getty -h'?

diff --git a/finish-install.d/90console b/finish-install.d/90console
index 272e0a1..2ec91cc 100755
--- a/finish-install.d/90console
+++ b/finish-install.d/90console
@@ -17,6 +17,13 @@ write_console() {
 	fi
 }		
 
+uses_hw_flowcontrol() {
+	local dev="$1"
+
+	chroot /target stty -a --file /dev/$dev | tr ' ' '\n' | \
+	    grep -q '^crtscts$'
+}
+
 KEEP_VT=
 if db_get finish-install/keep-consoles && [ "$RET" = true ]; then
 	KEEP_VT=1
@@ -61,6 +68,11 @@ case "$console" in
 	ttyspeed=$(chroot /target stty --file /dev/$console speed)
 	ttyterm="$TERM"
 
+	flowctrlarg=""
+	if uses_hw_flowcontrol $console; then
+		flowctrlarg="-h "
+	fi
+
 	if [ -z "$ttyterm" ]; then ttyterm=vt100; fi
 	if [ -z "$ttyspeed" ]; then ttyspeed=9600; fi
 
@@ -73,12 +85,14 @@ case "$console" in
 		sed -i -e "s/^#T0\(.*\)ttyS.*/T$ttyline\1$console $ttyspeed $ttyterm/" \
 		    /target/etc/inittab
 		sed -i -e "s/^\(T$ttyline.*\) -8/\1/" /target/etc/inittab
+		sed -i -e "s/^\(T$ttyline.* \)-L/\1$flowctrlarg-L/" /target/etc/inittab
 	fi
 	if [ "$upstart_tty1" ]; then
 		sed -e "s/^\(exec.*getty \).*/\1-L $console $ttyspeed $ttyterm/" \
 		    -e "s/tty1/$console/g" \
 		    "$upstart_tty1" > "$(upstart_console "$console")"
 		sed -i -e "s/^\(exec.*\) -8/\1/" "$(upstart_console "$console")"
+		sed -i -e "s/^\(exec.*\)-L/\1$flowctrlarg-L/" "$(upstart_console "$console")"
 	fi
 
 	write_console "$rawconsole" /target/etc/securetty


Reply to: