freebsd-dev/usr.bin
Ed Schouten bc093719ca Integrate the new MPSAFE TTY layer to the FreeBSD operating system.
The last half year I've been working on a replacement TTY layer for the
FreeBSD kernel. The new TTY layer was designed to improve the following:

- Improved driver model:

  The old TTY layer has a driver model that is not abstract enough to
  make it friendly to use. A good example is the output path, where the
  device drivers directly access the output buffers. This means that an
  in-kernel PPP implementation must always convert network buffers into
  TTY buffers.

  If a PPP implementation would be built on top of the new TTY layer
  (still needs a hooks layer, though), it would allow the PPP
  implementation to directly hand the data to the TTY driver.

- Improved hotplugging:

  With the old TTY layer, it isn't entirely safe to destroy TTY's from
  the system. This implementation has a two-step destructing design,
  where the driver first abandons the TTY. After all threads have left
  the TTY, the TTY layer calls a routine in the driver, which can be
  used to free resources (unit numbers, etc).

  The pts(4) driver also implements this feature, which means
  posix_openpt() will now return PTY's that are created on the fly.

- Improved performance:

  One of the major improvements is the per-TTY mutex, which is expected
  to improve scalability when compared to the old Giant locking.
  Another change is the unbuffered copying to userspace, which is both
  used on TTY device nodes and PTY masters.

Upgrading should be quite straightforward. Unlike previous versions,
existing kernel configuration files do not need to be changed, except
when they reference device drivers that are listed in UPDATING.

Obtained from:		//depot/projects/mpsafetty/...
Approved by:		philip (ex-mentor)
Discussed:		on the lists, at BSDCan, at the DevSummit
Sponsored by:		Snow B.V., the Netherlands
dcons(4) fixed by:	kan
2008-08-20 08:31:58 +00:00
..
alias Use the "builtin" shell function to make sure that the requested 2005-10-24 22:32:19 +00:00
apply It's `apply echo *'' that is similar to ls -1'', not `apply echo a*''. 2006-12-13 08:13:14 +00:00
ar GNU ar did NOT implment option -q as a synonym of -r as the manual 2008-03-11 18:35:51 +00:00
asa Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 09:55:10 +00:00
at Use NULL instead of 0 for the return value of fopen(). 2007-09-21 01:55:11 +00:00
atm
awk Allow awk (the one true one!) to handle 64 files instead of just 20. 2008-03-27 01:33:26 +00:00
banner o Check that -w width is not above maximum. Use DWIDTH instead of 2006-11-22 21:05:17 +00:00
basename Cross-reference basename(3) and dirname(3). 2006-03-16 17:21:52 +00:00
biff Fix markup. 2006-12-28 04:58:38 +00:00
bluetooth Fix build 2008-07-29 17:02:00 +00:00
brandelf Fix markup. 2007-03-09 14:36:18 +00:00
bsdiff Portability fix for non-POSIX operating systems: Open files in binary mode. 2006-12-05 20:22:14 +00:00
bzip2 Update for bzip2 1.0.4 import. 2007-03-28 07:48:03 +00:00
bzip2recover
c89 Reduce diffs with c99(1). 2007-03-10 07:10:01 +00:00
c99 Bump the original revision of c89(1). 2007-03-10 07:11:20 +00:00
calendar Move functions which are only locally used into their C files and 2008-08-05 08:16:37 +00:00
cap_mkdb
catman Prepare for MACHINE and hw.machine switching to "pc98" on FreeBSD/pc98. 2005-12-05 14:22:12 +00:00
chat Merge revisions 1.10 and 1.11 from DragonFly: 2008-03-07 00:01:19 +00:00
checknr Fix some "in in" typos in comments. 2008-03-26 07:32:08 +00:00
chkey Reimplementation of world/kernel build options. For details, see: 2006-03-17 18:54:44 +00:00
chpass Fix bug introduced in rev 1.23: 2006-09-25 15:06:24 +00:00
cksum Change a use of u_int32_t to uint32_t. 2008-05-15 20:04:36 +00:00
cmp add __unused to succeed at WARNS=6 2008-07-10 13:26:46 +00:00
col The variables i and tot don't need to be static. 2006-07-18 07:16:25 +00:00
colcrt
colldef follow style(9) more closely and list sys/types.h first after sys/defs.h. 2008-01-01 10:04:10 +00:00
colrm
column Fix the fix in rev. 1.15 so that we jump to the next column 2006-12-15 17:47:25 +00:00
comm Similar to changes previously made to src/usr.bin/uniq/uniq.c, 2008-05-28 14:13:35 +00:00
compile_et Style: move .PATH to where it belongs. 2005-10-14 15:50:22 +00:00
compress -mdoc sweep. 2005-11-18 10:36:29 +00:00
cpio Mark functions as __dead2 in order to help the LLVM static checker 2008-08-04 01:25:48 +00:00
cpuset - Add support for interrupt bindig to cpuset(1). Interrupts are bound 2008-04-11 03:27:42 +00:00
csplit
csup Update make glue for csup-snap-20060313. 2006-03-14 03:53:50 +00:00
ctags cleanup code: remove unnecessary and useless void cast 2007-02-04 20:07:07 +00:00
cut - Adopt the short description from POSIX as it better matches the 2007-02-28 10:13:32 +00:00
dig Update bmake glue for the BIND 9.4.1 import. 2007-06-02 23:19:58 +00:00
dirname Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 09:55:10 +00:00
du Implement from scratch a -l option for du(1), to match the same option 2008-02-25 19:06:43 +00:00
ee Correct insecure temporary file usage in texindex. [06:01] 2006-01-11 08:02:16 +00:00
elf2aout Because optarg and optind are defined in unistd.h, 2006-04-21 09:39:51 +00:00
elfdump s/DT_IA64_PLT_RESERVE/DT_IA_64_PLT_RESERVE/ 2006-01-28 17:58:22 +00:00
enigma Markup nits. 2006-12-24 19:55:38 +00:00
env Update the date on the man-page to reflect the date that the '-u name' 2008-05-06 16:06:02 +00:00
expand Document that unexpand(1)'s -a and -t options are exclusive. 2006-10-13 16:22:25 +00:00
false
fetch List all environment variables supported by libfetch, along with a reference 2007-12-28 19:47:37 +00:00
file Christos decided to keep the manpages in mdoc(7) format, 2008-01-30 12:56:59 +00:00
file2c Apply style(9) to usage(), fix markup of the manpage. 2007-10-30 17:49:00 +00:00
find Fix SYNOPSIS and usage(). 2008-03-03 08:32:58 +00:00
finger Restore the ".Sh BUGS" line that was accidentally removed 2007-04-12 08:22:49 +00:00
fmt Prevent strange crashes in fmt with absurd goal lengths introduced by the 2007-10-17 11:41:40 +00:00
fold Mention what underlining is meant here. 2006-12-15 11:23:59 +00:00
from Improve markup. 2006-12-18 15:36:31 +00:00
fstat Integrate the new MPSAFE TTY layer to the FreeBSD operating system. 2008-08-20 08:31:58 +00:00
fsync
ftp Obey MK_INET6_SUPPORT. 2006-07-27 14:20:14 +00:00
gcore Use %zd for size_t. With this gcore(1) is WARNS=6 clean. 2008-07-18 23:37:05 +00:00
gencat Our bsd.*.mk only supports 6 WARNS levels and we should not use higher values 2005-06-30 11:56:31 +00:00
getconf o confstr(3) returns 0 on error. Check the return value accordingly. 2006-12-06 12:00:26 +00:00
getent cleanup code: remove superfluous comma at end of enumeration 2007-02-04 20:52:57 +00:00
getopt getopt.c is public domain. Add a comment to that effect. 2008-05-15 19:27:52 +00:00
gprof Add mips support. 2008-04-04 21:33:41 +00:00
gzip Mark functions as __dead2 in order to help the LLVM static checker 2008-08-04 07:36:53 +00:00
head Fix build on architectures where off_t is signed by casting to uintmax_t 2007-01-11 20:23:01 +00:00
hesinfo
hexdump Document the -d option. 2006-12-24 14:23:35 +00:00
host Update bmake glue for the BIND 9.4.1 import. 2007-06-02 23:19:58 +00:00
id Fix id -A when the subject has an extended subject token associated with 2007-10-14 00:52:30 +00:00
indent initialize variable (WARNS=6) 2006-09-13 05:06:12 +00:00
ipcrm Add the ability to clean up all shared memory segments which are 2007-12-25 00:52:24 +00:00
ipcs Add the ability to clean up all shared memory segments which are 2007-12-25 00:52:24 +00:00
join Improve markup and do some minor wordsmithing. 2006-12-21 10:59:48 +00:00
jot Use explicit braces to avoid ambiguous else. 2006-12-09 15:23:20 +00:00
kdump Remove netatm from HEAD as it is not MPSAFE and relies on the now removed 2008-05-25 22:11:40 +00:00
keylogin
keylogout
killall Fix a typo. 2007-11-09 16:31:47 +00:00
ktrace Spell -t option's argument by name. 2008-04-02 09:41:29 +00:00
ktrdump Skip format flags, when parsing ktr_desc. 2006-01-12 22:32:07 +00:00
lam Document that jot(1), rs(1), and lam(1) first appeared in 4.2BSD. 2006-10-20 04:31:01 +00:00
last
lastcomm Increase precision of time values in the process accounting 2007-05-22 06:51:38 +00:00
ldd A few style and whitespace fixes. 2008-08-02 12:04:59 +00:00
leave
less Resolve conflicts; Update defines.h to reflect latest change. 2007-11-16 22:24:31 +00:00
lessecho Hook lessecho(1) to build. 2006-08-20 15:52:17 +00:00
lesskey
lex Mark functions as __dead2 in order to help the LLVM static checker 2008-08-04 01:25:48 +00:00
limits Significantly reduce the memory leak as noted in BUGS section for 2007-07-04 00:00:41 +00:00
locale Xref setlocale(3), bump document date. 2005-11-01 19:36:17 +00:00
locate The previous version included too many file system types in the scan, 2007-10-17 07:27:51 +00:00
lock
lockf Also fix a "blank line" issue that sneaked in from rev. 1.19. 2007-10-31 19:26:01 +00:00
logger Minor style(9) nit. 2008-02-05 17:34:44 +00:00
login Add a cross-reference to newgrp(1). 2007-11-30 11:02:36 +00:00
logins
logname Say "utility", not "function". 2006-12-26 10:37:37 +00:00
look Remove break after return. 2006-07-18 10:19:46 +00:00
lorder Document the NM environment variable. 2006-10-25 09:40:07 +00:00
lsvfs Fix (uncritical) potential buffer overflow: the length of "buf" was not 2007-11-15 07:31:11 +00:00
m4 Use NULL instead of 0 for the return value of fopen(). 2007-09-21 01:55:11 +00:00
mail Use static storage-class specifier where appropriate. 2007-11-08 11:13:03 +00:00
make Use arc4random_uniform(3) 2008-08-07 22:22:41 +00:00
makewhatis Teach makewhatis.c to treat .SS with the same severity as .SH. 2007-10-18 12:53:11 +00:00
mesg Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 09:55:10 +00:00
minigzip
ministat Fix apparent typo. The permitted confidence values include 95%, not 85%. 2008-03-12 00:13:49 +00:00
mkdep
mkfifo Fix markup. 2006-12-15 14:14:17 +00:00
mklocale Understand newly introduced "ASCII" encoding 2008-01-22 00:04:50 +00:00
mkstr More markup fixes. 2007-03-04 08:24:13 +00:00
mktemp Markup fixes. 2006-09-29 15:20:48 +00:00
mkuzip Support character device as input file. 2007-03-06 17:04:15 +00:00
msgs Never use getenv("HOME") without checking for NULL and non-zero 2007-10-30 03:44:10 +00:00
mt Note what options are only for DDS drives. 2008-01-21 22:08:05 +00:00
nc
ncal Document incorrect handling of multibyte characters. 2005-10-23 01:37:25 +00:00
ncplist getopt(3) returns -1, not EOF when out of args. 2007-02-05 07:35:23 +00:00
ncplogin getopt(3) returns -1, not EOF. 2008-02-19 07:09:19 +00:00
netstat Fix build 2008-07-29 21:20:03 +00:00
newgrp
newkey Reimplementation of world/kernel build options. For details, see: 2006-03-17 18:54:44 +00:00
nfsstat Add a -z flag to nfsstat which zeros the NFS statistics after displaying 2007-10-18 16:38:07 +00:00
nice Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 09:55:10 +00:00
nl o Really commit typo fixes to HEAD. 2007-03-25 18:37:59 +00:00
nohup
nslookup Update bmake glue for the BIND 9.4.1 import. 2007-06-02 23:19:58 +00:00
nsupdate Update bmake glue for the BIND 9.4.1 import. 2007-06-02 23:19:58 +00:00
objformat Bah. Kris says the default-to-a.out knowledge has migrated into the 2007-01-25 23:12:19 +00:00
opieinfo
opiekey
opiepasswd
pagesize
passwd Markup nits. 2007-11-07 07:59:38 +00:00
paste WARNS=6 chocked on unitialized variable. 2006-09-12 05:08:36 +00:00
pathchk Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 09:55:10 +00:00
pkill Be more accurate in the description of the -I option: 2006-12-20 11:57:22 +00:00
pr Fix misspelled 'argument' and try to make the sentence into English. 2005-10-26 17:37:54 +00:00
printenv Simplify. 2006-12-26 12:43:12 +00:00
printf POSIX says that octal escapes have the format \ddd in the format string, 2008-08-02 06:02:02 +00:00
procstat Integrate the new MPSAFE TTY layer to the FreeBSD operating system. 2008-08-20 08:31:58 +00:00
quota Make quota(1) to compile with WARNS=6: 2008-08-04 00:43:49 +00:00
renice Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 09:55:10 +00:00
rev Make usage() 'static'. 2008-06-08 12:43:02 +00:00
rlogin len and len2 work better as size_t 2005-11-13 21:03:56 +00:00
rpcgen When generating thread-safe server code, handle procedures with void return 2008-08-12 13:38:06 +00:00
rpcinfo rpcinfo(1) doesn't depend on INET6 explicitly. 2006-07-27 13:47:02 +00:00
rs Setting a variable to the same value twice doesn't actually make it 2008-08-04 06:39:52 +00:00
rsh - Remove MLINKS to nonexistant manpages 2005-07-14 20:29:08 +00:00
rup Backport markup fixes from a translated version of a manpage. 2007-02-28 10:22:19 +00:00
ruptime Initialize variable "now" before using it (it is used by the LEFTEARTH 2008-03-17 18:31:43 +00:00
rusers Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 09:55:10 +00:00
rwall Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 09:55:10 +00:00
rwho It's actually 11 minutes when the machine is assumed to be down and removed 2005-08-07 11:48:44 +00:00
script
sed WARNS fixes: 2008-02-09 09:12:02 +00:00
setchannel Add support for selecting from multiple tuners. 2007-02-25 01:28:37 +00:00
shar Remove superfluous eofmarker. 2008-06-17 18:56:04 +00:00
showmount Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 09:55:10 +00:00
smbutil
sockstat Add -L to usage(). 2008-05-19 11:35:11 +00:00
split Add a -n option to split(1) to split files into N chunks rather than 2008-03-16 15:15:32 +00:00
stat The referenced section name is 'Formats', not 'FORMATS'. 2008-04-29 07:35:31 +00:00
su - add the -m option to the example commands because they would fail w/o it 2008-07-01 20:56:23 +00:00
systat ANSIfy and remove register. 2008-01-16 19:27:43 +00:00
tabs
tail Nuking the temporary pointer once it is properly tracked in local storage. 2007-11-22 01:51:46 +00:00
talk ANSIfy function prototypes. While I am there, constify some parameters and 2008-04-28 21:08:42 +00:00
tar Better comment the pattern tests; adjust the filenames for the 2008-08-20 06:01:53 +00:00
tcopy Document some details better, making it easier to translate. 2006-12-20 15:34:01 +00:00
tee - Steal short description from POSIX; it's more technical and was 2007-11-13 11:34:20 +00:00
telnet Fix conflicts after heimdal-1.1 import and add build infrastructure. Import 2008-05-07 13:53:12 +00:00
tftp Fix markup. 2007-11-07 07:56:57 +00:00
time Cast to intmax_t to print tv_sec in struct timeval. 2007-05-07 12:23:23 +00:00
tip Relinquish exclusive TTY access when tip(1) or cu(1) exit. 2008-05-03 02:29:02 +00:00
top system_info.cpustates isn't sparse, so a bitmask of available CPU states 2008-04-11 11:39:26 +00:00
touch Update to match revision 1.23 of touch.c. 2007-04-10 07:24:47 +00:00
tput At least one argument is required. 2006-10-12 21:10:55 +00:00
tr o Remove duplicate includes. 2007-01-20 08:24:02 +00:00
true
truncate Don't close file descriptor number <whatever random garbage was on the 2008-08-04 06:48:54 +00:00
truss Try to make this code slightly less painful to read. 2008-07-31 17:15:21 +00:00
tset Reduce compiler warning: variable might be used uninitialized, by giving 2005-05-29 15:49:53 +00:00
tsort - Remove the ambiguity in the input format description. 2006-12-27 14:56:18 +00:00
tty Fix markup nits, add the EXIT STATUS section. 2006-12-13 20:15:49 +00:00
ul Fix markup. 2007-02-27 12:06:02 +00:00
uname
unexpand Document that unexpand(1)'s -a and -t options are exclusive. 2006-10-13 16:22:25 +00:00
unifdef Add AUTHORS section[*] and fix HISTORY section. 2008-05-02 16:23:47 +00:00
uniq Fix truncation of lines at LINE_MAX characters by dynamically 2008-02-08 23:04:13 +00:00
units Add limited support for units that are related by affine rather 2008-08-16 16:27:41 +00:00
unvis
unzip Update man page for -t. 2008-06-30 17:16:05 +00:00
usbhidaction Add support using an alternate table file to usbhidaction(1). 2007-06-30 03:58:01 +00:00
usbhidctl usbhidctl appears to not report features and write size correctly 2007-12-21 03:40:36 +00:00
users
uudecode
uuencode - Remove MLINKS to nonexistant manpages 2005-07-14 20:29:08 +00:00
vacation Remove kludges intended to support src trees with partial obj trees. 2005-06-10 06:12:53 +00:00
vgrind Manual page tweaks. 2006-08-29 18:11:20 +00:00
vi
vis Nits. 2006-12-23 19:15:39 +00:00
vmstat Use kvm_getcptime(3) to fetch the global CPU time stats from a crashdump 2008-08-19 21:33:09 +00:00
w Fix markup. 2006-12-14 19:02:48 +00:00
wall Fix some bugs in wall(1): 2008-01-15 07:40:30 +00:00
wc Prevent a line from being broken on a line boundary. 2006-12-21 22:59:07 +00:00
what Polish markup and wording. 2006-12-14 00:02:44 +00:00
whereis Make the search for sources in PATH_PORTS more accurate. I only 2008-06-20 08:39:42 +00:00
which Refine the previous revision. 2006-12-13 12:09:41 +00:00
who In wall and who, check that the utmp entry isn't stalled, as it is done in w. 2006-02-21 13:01:00 +00:00
whois Use proper type cast for ctype macro 2007-04-14 14:32:48 +00:00
window Delete unused files in the window(1) directory that contain a colon. 2008-08-09 14:44:04 +00:00
write write(1) needs to strip off the leading /dev/ from the tty name for the 2007-11-12 20:02:21 +00:00
xargs Revive '-opt' flags which I accidentally removed. 2008-01-27 16:20:36 +00:00
xinstall Give a better description when a install of multiple files fails 2007-12-14 08:46:57 +00:00
xlint MFp4(mips2-jnpr): 2008-04-04 21:35:13 +00:00
xstr Improve temporary file handling 2008-05-13 09:42:03 +00:00
yacc Setting a variable to the same value twice doesn't actually make it 2008-08-04 06:39:52 +00:00
yes
ypcat Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 09:55:10 +00:00
ypmatch Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 09:55:10 +00:00
ypwhich Fix markup nit. 2006-12-28 10:58:06 +00:00
Makefile 1. Make the BSD version of cpio the default [1] 2008-06-16 05:48:15 +00:00
Makefile.inc