freebsd-nq/sys
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
..
amd64 Integrate the new MPSAFE TTY layer to the FreeBSD operating system. 2008-08-20 08:31:58 +00:00
arm Provide hooks into the GPIO lines and the ability to set/clear 2008-08-19 22:17:14 +00:00
boot Add an entry for the upgt(4) module. 2008-08-11 04:54:43 +00:00
bsm Integrate the new MPSAFE TTY layer to the FreeBSD operating system. 2008-08-20 08:31:58 +00:00
cam SCSI_DELAY is specified in milliseconds, not seconds. 2008-08-16 21:26:58 +00:00
cddl Add calls to callout_drain() to ensure the callouts are flushed before 2008-08-19 21:28:58 +00:00
compat Integrate the new MPSAFE TTY layer to the FreeBSD operating system. 2008-08-20 08:31:58 +00:00
conf Integrate the new MPSAFE TTY layer to the FreeBSD operating system. 2008-08-20 08:31:58 +00:00
contrib Commit step 1 of the vimage project, (network stack) 2008-08-17 23:27:27 +00:00
crypto Simplify session selection/allocation. 2008-08-09 20:01:01 +00:00
ddb Add a missing include which was erroneusly left out from the previous 2008-08-18 16:51:44 +00:00
dev Integrate the new MPSAFE TTY layer to the FreeBSD operating system. 2008-08-20 08:31:58 +00:00
fs Integrate the new MPSAFE TTY layer to the FreeBSD operating system. 2008-08-20 08:31:58 +00:00
gdb Commit SYSINIT() ;-adding patch missed in previous pass. 2008-03-16 13:02:04 +00:00
geom Commit step 1 of the vimage project, (network stack) 2008-08-17 23:27:27 +00:00
gnu - Disallow XFS mounting in write mode. The write support never worked really 2008-07-21 23:01:09 +00:00
i386 Integrate the new MPSAFE TTY layer to the FreeBSD operating system. 2008-08-20 08:31:58 +00:00
ia64 Integrate the new MPSAFE TTY layer to the FreeBSD operating system. 2008-08-20 08:31:58 +00:00
isa atrtc.c is a repocopy of the RTC device driver from i386/isa/clock.c 2008-04-14 07:57:15 +00:00
kern Integrate the new MPSAFE TTY layer to the FreeBSD operating system. 2008-08-20 08:31:58 +00:00
libkern Add strcspn to libkern for use by xenbus routines. Will add to build 2008-08-15 04:07:22 +00:00
mips Export 'struct pcpu' to userland w/o requiring _KERNEL. A few ports 2008-08-19 19:53:52 +00:00
modules Integrate the new MPSAFE TTY layer to the FreeBSD operating system. 2008-08-20 08:31:58 +00:00
net ifnet_setbyindex() is only used locally, go back to being static. 2008-08-20 05:00:18 +00:00
net80211 Verify that the WPA flags set are actually compatible with the 2008-08-09 05:46:01 +00:00
netatalk Remove NETISR_MPSAFE, which allows specific netisr handlers to be directly 2008-07-04 00:21:38 +00:00
netgraph A bunch of formatting fixes brough to light by, or created by the Vimage commit 2008-08-20 01:05:56 +00:00
netinet Fix some of the formatting fixes.. It's amazing how some thing stand out 2008-08-20 01:24:55 +00:00
netinet6 Fix some of the formatting fixes.. It's amazing how some thing stand out 2008-08-20 01:24:55 +00:00
netipsec Commit step 1 of the vimage project, (network stack) 2008-08-17 23:27:27 +00:00
netipx Begin the sysctl descriptions with a capital letter. 2008-07-25 23:54:07 +00:00
netnatm Remove NETISR_MPSAFE, which allows specific netisr handlers to be directly 2008-07-04 00:21:38 +00:00
netncp lockmgrs need to be released before to be destroyed and draining doesn't 2008-03-30 18:16:33 +00:00
netsmb Really, smb_iod_main() is not totally MPSAFE, so just acquire and drop 2008-03-27 01:23:59 +00:00
nfs Replaced the misleading uses of a historical artefact M_TRYWAIT with M_WAIT. 2008-03-25 09:39:02 +00:00
nfs4client Move the NFS/RPC code away from lbolt. 2008-07-22 21:27:22 +00:00
nfsclient Commit step 1 of the vimage project, (network stack) 2008-08-17 23:27:27 +00:00
nfsserver Remove spls from NFS server setup call; expand receive socket buffer 2008-06-30 20:43:06 +00:00
nlm Fix an interop issue with Linux: If you do nothing but TCP 2008-08-13 12:03:31 +00:00
opencrypto Make ftruncate a 'struct file' operation rather than a vnode operation. 2008-01-07 20:05:19 +00:00
pc98 Integrate the new MPSAFE TTY layer to the FreeBSD operating system. 2008-08-20 08:31:58 +00:00
pccard
pci Move wb driver from sys/pci to sys/dev/wb. 2008-08-14 21:26:29 +00:00
powerpc Integrate the new MPSAFE TTY layer to the FreeBSD operating system. 2008-08-20 08:31:58 +00:00
rpc Rename the static M_RPC defined here to M_RPCCLNT, since a global M_RPC 2008-08-18 12:11:47 +00:00
security Make sure we check the preselection masks present for all audit pipes. 2008-08-11 20:14:56 +00:00
sparc64 Integrate the new MPSAFE TTY layer to the FreeBSD operating system. 2008-08-20 08:31:58 +00:00
sun4v Integrate the new MPSAFE TTY layer to the FreeBSD operating system. 2008-08-20 08:31:58 +00:00
sys Integrate the new MPSAFE TTY layer to the FreeBSD operating system. 2008-08-20 08:31:58 +00:00
tools Introduce a standalone shell script for embedding MFS image. 2008-02-05 10:46:30 +00:00
ufs Revert r181345. 2008-08-10 12:15:36 +00:00
vm A bunch of formatting fixes brough to light by, or created by the Vimage commit 2008-08-20 01:05:56 +00:00
xdr Add the new kernel-mode NFS Lock Manager. To use it instead of the 2008-03-26 15:23:12 +00:00
xen Check for watch events when doing inline message processing 2008-08-20 03:27:12 +00:00
Makefile Improve the glimpse target: don't index .svn and compile directories. 2008-08-15 14:11:30 +00:00