git: 9front

Download patch

ref: 398031813bf202357bc7d0f8d78bd8cba71269c5
parent: 1ae706763737ac70469cfb167a37ae8f9a7a0d5c
author: cinap_lenrek <cinap_lenrek@centraldogma>
date: Tue Aug 16 06:15:36 EDT 2011

serial console stuff

--- a/sys/src/9/boot/bootrc
+++ b/sys/src/9/boot/bootrc
@@ -5,15 +5,19 @@
 unmount /root
 
 bind -q '#p' /proc
-for(i in S f k æ t m)
-	bind -a '#'^$i /dev >/dev/null >[2=1]
+for(i in S f k æ t b m)
+	bind -qa '#'^$i /dev
 
-# make variables settable by copying them from #ec
+# bind in an ip interface
+for(i in I l^(0 1 2 3))
+	bind -qa '#'$i /net
+
+# reparse #ec variables, move to #e
 for(i in init service sysname user nvram rootdir cfs bootdisk bootargs \
-	nobootprompt debugfactotum fs fsaddr auth authaddr){
-	a=$$i
+	nobootprompt debugfactotum fs fsaddr auth authaddr console){
+	a=`{echo $$i}
 	$i=()
-	rm -f '#e'/$i '#ec'/$i /env/$i
+	rm -f '#e'/$i '#ec'/$i
 	if(! ~ $#a 0)
 		$i=$a
 }
@@ -56,7 +60,7 @@
 		if(~ $#nobootprompt 0){
 			echo
 			showlocaldevs
-			ask bootargs ' is (tcp, local!device)' $bootargs
+			ask bootargs ' is (tcp, local!device)' $"bootargs
 		}
 		if not bootargs=$nobootprompt
 		nobootprompt=()
@@ -144,8 +148,8 @@
 	exec $init
 }
 
-if(test -e '#b' && test -x /bin/aux/kbdfs){
-	bind -a '#b' /dev
+# keyboard and serial console
+if(test -x /bin/aux/kbdfs){
 	a=$console(1)
 	if(! ~ $#a 0)
 		a=/dev/eia^$a
@@ -152,11 +156,9 @@
 	aux/kbdfs -s cons $a
 }
 
+# usb devices
 nusbrc
 
-# bind in an ip interface
-for(i in I l^(0 1 2 3))
-	bind -qa '#'$i /net
 # add partitions and binds
 configlocal
 
@@ -202,5 +204,5 @@
 	# cleanup so it can be restarted
 	nobootprompt=()
 	user=()
-	rm -f /srv/cfs /srv/boot /srv/slashn /srv/cs /srv/dns
+	rm -f /srv/^(cfs boot slashn cs dns)
 } </dev/cons >/dev/cons >[2]/dev/cons 
--- a/sys/src/9/port/devuart.c
+++ b/sys/src/9/port/devuart.c
@@ -474,11 +474,10 @@
 			break;
 		case 'X':
 		case 'x':
-			if(p->enabled){
-				ilock(&p->tlock);
-				p->xonoff = n;
-				iunlock(&p->tlock);
-			}
+			ilock(&p->tlock);
+			p->xonoff = n;
+			p->blocked = 0;
+			iunlock(&p->tlock);
 			break;
 		}
 	}
--- a/sys/src/cmd/aux/kbdfs/kbdfs.c
+++ b/sys/src/cmd/aux/kbdfs/kbdfs.c
@@ -431,6 +431,8 @@
 		while(p < x && fullrune(p, x - p)){
 			p += chartorune(&r, p);
 			if(r){
+				if(r == 021 || r == 023)	/* XON/XOFF */
+					continue;
 				if(r == '\n' && cr){
 					cr = 0;
 					continue;
@@ -1232,7 +1234,6 @@
 	}
 
 	close(fd);
-	
 }
 
 void
--