diff options
author | ed <ed@FreeBSD.org> | 2009-02-05 14:21:09 +0000 |
---|---|---|
committer | ed <ed@FreeBSD.org> | 2009-02-05 14:21:09 +0000 |
commit | e085cfc4851a368e9eeca99b5977b66c163ff7ee (patch) | |
tree | e926c85860710dfb0757c5d76805dc86e28e6080 /usr.sbin/pstat | |
parent | 8f639d4b9ab34b25f907b609cbfdc7610647394f (diff) | |
download | FreeBSD-src-e085cfc4851a368e9eeca99b5977b66c163ff7ee.zip FreeBSD-src-e085cfc4851a368e9eeca99b5977b66c163ff7ee.tar.gz |
Don't leave the console TTY constantly open.
When we leave the console TTY constantly open, we never reset the
termios attributes. This causes output processing, echoing, etc. not to
be reset to the proper values when going into single user mode after the
system has booted. It also causes nl-to-crnl-conversion not to take
place during shutdown, which causes a `staircase effect'.
This patch adds a new TTY flag, TF_OPENED_CONS, which is set when the
TTY is opened through /dev/console. Because the flags are only used by
the kernel and the pstat(8) utility, I've decided to renumber the TTY
flags. This shouldn't be an issue, because the TTY layer is not yet part
of a stable release.
Reported by: Mark Atkinson <atkin901 yahoo com>
Tested by: sepotvin
Diffstat (limited to 'usr.sbin/pstat')
-rw-r--r-- | usr.sbin/pstat/pstat.8 | 2 | ||||
-rw-r--r-- | usr.sbin/pstat/pstat.c | 39 |
2 files changed, 22 insertions, 19 deletions
diff --git a/usr.sbin/pstat/pstat.8 b/usr.sbin/pstat/pstat.8 index 5474f8b..b92abd8 100644 --- a/usr.sbin/pstat/pstat.8 +++ b/usr.sbin/pstat/pstat.8 @@ -183,6 +183,8 @@ init/lock-state device nodes present callout device nodes present .It O opened +.It c +console in use .It G gone .It B diff --git a/usr.sbin/pstat/pstat.c b/usr.sbin/pstat/pstat.c index a33bd0a..2cb52fe 100644 --- a/usr.sbin/pstat/pstat.c +++ b/usr.sbin/pstat/pstat.c @@ -288,33 +288,34 @@ static struct { char val; } ttystates[] = { #if 0 - { TF_NOPREFIX, 'N' }, + { TF_NOPREFIX, 'N' }, #endif - { TF_INITLOCK, 'I' }, - { TF_CALLOUT, 'C' }, + { TF_INITLOCK, 'I' }, + { TF_CALLOUT, 'C' }, /* Keep these together -> 'Oi' and 'Oo'. */ - { TF_OPENED, 'O' }, - { TF_OPENED_IN, 'i' }, - { TF_OPENED_OUT,'o' }, + { TF_OPENED, 'O' }, + { TF_OPENED_IN, 'i' }, + { TF_OPENED_OUT, 'o' }, + { TF_OPENED_CONS, 'c' }, - { TF_GONE, 'G' }, - { TF_OPENCLOSE, 'B' }, - { TF_ASYNC, 'Y' }, - { TF_LITERAL, 'L' }, + { TF_GONE, 'G' }, + { TF_OPENCLOSE, 'B' }, + { TF_ASYNC, 'Y' }, + { TF_LITERAL, 'L' }, /* Keep these together -> 'Hi' and 'Ho'. */ - { TF_HIWAT, 'H' }, - { TF_HIWAT_IN, 'i' }, - { TF_HIWAT_OUT, 'o' }, + { TF_HIWAT, 'H' }, + { TF_HIWAT_IN, 'i' }, + { TF_HIWAT_OUT, 'o' }, - { TF_STOPPED, 'S' }, - { TF_EXCLUDE, 'X' }, - { TF_BYPASS, 'l' }, - { TF_ZOMBIE, 'Z' }, - { TF_HOOK, 's' }, + { TF_STOPPED, 'S' }, + { TF_EXCLUDE, 'X' }, + { TF_BYPASS, 'l' }, + { TF_ZOMBIE, 'Z' }, + { TF_HOOK, 's' }, - { 0, '\0' }, + { 0, '\0'}, }; static void |