freebsd-dev/sys/modules
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
..
3dfx
3dfx_linux
aac
accf_data
accf_dns Add an accept filter for TCP based DNS requests. It waits until the 2008-07-18 14:44:51 +00:00
accf_http
acpi Rewrite the EC driver event model. The main goal is to avoid 2007-09-24 16:59:06 +00:00
age Hook up age(4) to the build. 2008-05-19 01:53:47 +00:00
agp Move the agp(4) driver from sys/pci to sys/dev/agp. __FreeBSD_version was 2007-11-12 21:51:38 +00:00
aha
ahb
aic
aic7xxx
aio
amd
amr The AR_SCSI_PASSTHROUGH conditional no longer exists, remove it from the 2007-12-02 18:39:38 +00:00
an
aout
apm
ar
arcmsr
arcnet
asmc Remove isa_if.h. 2008-04-07 11:26:13 +00:00
asr
ata
ath
ath_hal
ath_rate_amrr Always create opt_ah.h regardless of KERNBUILDDIR. 2008-06-23 00:51:34 +00:00
ath_rate_onoe don't let KERNBUILDDIR control whether we copy opt_ah.h 2008-05-30 03:36:52 +00:00
ath_rate_sample opt_ah.h is not constructed by config, it always comes from 2008-05-29 00:16:58 +00:00
aue
auxio
axe
bce
bfe
bge
bios
bktr Remove option headers that do not exist and are not used 2008-03-27 20:38:03 +00:00
bm Add support for the Apple Big Mac (BMAC) Ethernet controller, 2008-06-07 22:58:32 +00:00
bridgestp
cam
canbepm
canbus
cardbus
cbb
cd9660
cd9660_iconv
cdce
ce
ciss
cm
cmx Commit cmx(4), a driver for Omnikey CardMan 4040 PCMCIA smartcard readers. 2008-03-06 08:09:45 +00:00
coda Rather than having the Coda module use its own namecache, use the global 2008-02-13 13:06:22 +00:00
coda5 Remove coda_namecache from coda5 as well. We should probably GC coda5 2008-02-13 16:31:04 +00:00
coff
coretemp Add a driver for the on-die digital thermal sensor found on Intel Core 2007-08-15 19:26:03 +00:00
cp
cpuctl - Add cpuctl(4) pseudo-device driver to provide access to some low-level 2008-08-08 16:26:53 +00:00
cpufreq
crypto
cryptodev
cs
ctau
cue
cx
cxgb Remove cxgb private lro implementation and switch to using system implementation. 2008-08-12 00:27:32 +00:00
cyclic The cyclic code is in sys/cddl/dev/cyclic to be consistent with 2008-05-23 22:23:28 +00:00
dc
dcons
dcons_crom
de
digi
dpt
drm
dtrace Add the DTrace test kernel module so that people can run the tests. 2008-05-31 09:37:40 +00:00
dummynet
ed
elink
em Change to build module with new directory tree 2008-07-30 22:05:06 +00:00
en
ep
esp Don't build unused SBus front-ends for sun4v, don't build EBus front-ends 2008-05-04 14:59:25 +00:00
et Remove a file that is not used and does not exist. 2008-07-28 17:56:37 +00:00
ex
exca
ext2fs
fatm
fdc
fdescfs
fe
firewire
firmware Unbreak firmware.ko build without kernel. 2008-04-20 16:11:14 +00:00
fxp
gem
geom Add support for PC-9800 partition tables. 2008-03-28 17:58:55 +00:00
glxsb Add glxsb(4) driver for the Security Block in AMD Geode LX processors (as 2008-08-09 14:52:31 +00:00
hatm
hifn
hme Don't build unused SBus front-ends for sun4v, don't build EBus front-ends 2008-05-04 14:59:25 +00:00
hpfs
hptiop
hptmv
hptrr Add the 'hptrr' driver for supporting the following Highpoint RocketRAID 2007-12-15 00:56:17 +00:00
hwpmc Remove WARNS from here and compile with default kernel flags. 2008-02-21 11:09:59 +00:00
i2c The viapm module build had what appear to be some debugging CFLAGS left 2007-06-24 20:35:59 +00:00
ibcs2
ichwd
ida
ie
if_bridge
if_disc
if_edsc
if_ef
if_faith
if_gif
if_gre
if_lagg
if_ndis
if_ppp
if_sl
if_stf
if_tap
if_tun
if_vlan
igb Change Makefile to reflect new directory structure 2008-07-30 22:06:38 +00:00
iir
io
ip_mroute_mod Options spring cleanup: 2007-06-13 02:08:04 +00:00
ipdivert
ipfilter
ipfw Link pf 4.1 to the build: 2007-07-03 12:46:08 +00:00
ipfw_nat Move ipfw's nat code into its own kld: ipfw_nat. 2008-02-29 22:27:19 +00:00
ipmi
ips
ipw
ipwfw
iscsi Introduce Danny Braniss' iSCSI initiator, version 2.0.99. Please read the 2007-07-24 15:35:02 +00:00
isp Don't build unused SBus front-ends for sun4v, don't build EBus front-ends 2008-05-04 14:59:25 +00:00
ispfw Don't build unused SBus front-ends for sun4v, don't build EBus front-ends 2008-05-04 14:59:25 +00:00
iwi
iwifw
iwn clear out crud 2008-05-22 21:53:15 +00:00
iwnfw Intel 4965 wireless driver (derived from openbsd driver of the same name) 2008-04-29 21:36:17 +00:00
ixgb
ixgbe Remove compile of tcp_lro since its now in netinet 2008-06-11 22:18:50 +00:00
jme Hook up jme(4) to the build. 2008-05-27 01:54:45 +00:00
joy
k8temp Connect k8temp(4) to the build. 2008-04-12 14:20:22 +00:00
kbdmux
krpc Add nfslockd and krpc modules. 2008-03-27 11:55:03 +00:00
kue
le Don't build unused SBus front-ends for sun4v, don't build EBus front-ends 2008-05-04 14:59:25 +00:00
lge
libalias
libiconv
libmbpool
libmchain
linprocfs
linsysfs
linux
lmc
lpt
mac_biba
mac_bsdextended
mac_ifoff
mac_lomac
mac_mls
mac_none
mac_partition
mac_portacl
mac_seeotheruids
mac_stub
mac_test
malo Multi-bss (aka vap) support for 802.11 devices. 2008-04-20 20:35:46 +00:00
mcd
md
mem Prefer the opt_global.h from KERNBUILDDIR if existent so we obtain all 2008-07-24 14:07:52 +00:00
mfi
mii Add et(4), a port of DragonFly's Agere ET1310 10/100/Gigabit 2008-06-20 19:28:33 +00:00
mlx
mly
mmc
mmcsd
mpt Add a new personality to mpt(4) devices to allow userland applications to 2008-05-06 20:49:53 +00:00
mqueue
msdosfs
msdosfs_iconv
mse
msk
mxge Add optional support to mxge for MSI-X interrupts and multiple receive 2008-01-15 20:34:49 +00:00
my
ncp
ncv
ndis
netgraph Disconnect drivers that haven't been ported to MPSAFE TTY yet. 2008-08-03 10:32:17 +00:00
nfe
nfs4client
nfsclient
nfslockd Unbreak the build by creating opt_nfs.h 2008-07-31 02:13:36 +00:00
nfsserver
nge
nmdm Integrate the new MPSAFE TTY layer to the FreeBSD operating system. 2008-08-20 08:31:58 +00:00
nsp
ntfs
ntfs_iconv
nullfs
nve
nvram Split /dev/nvram driver out of isa/clock.c for i386 and amd64. I have not 2007-10-26 03:23:54 +00:00
nwfs
nxge Merge Neterion if_nxge driver version 2.0.9.11230 with the following 2007-10-29 14:19:32 +00:00
opensolaris Add the DTrace kernel module makefiles. 2008-05-17 02:31:19 +00:00
padlock
patm
pccard
pcfclock
pcn Move pcn driver from sys/pci to sys/dev/pcn. 2008-08-14 20:34:46 +00:00
pf Link pf 4.1 to the build: 2007-07-03 12:46:08 +00:00
pflog
plip
pmc
portalfs
powermac_nvram
ppbus
ppc
ppi
pps
procfs
pseudofs
pst
puc
ral Multi-bss (aka vap) support for 802.11 devices. 2008-04-20 20:35:46 +00:00
ralfw Remove the non-existent rt2860 subdir. Note, the ralfw module is not used in 2008-06-26 18:58:01 +00:00
random
ray
rc Integrate the new MPSAFE TTY layer to the FreeBSD operating system. 2008-08-20 08:31:58 +00:00
rc4
rdma add makefiles for rdma 2008-05-05 20:19:33 +00:00
re
reiserfs
rl
rndtest
rp
rue
rum
s3
safe
scc Don't build unused SBus front-ends for sun4v, don't build EBus front-ends 2008-05-04 14:59:25 +00:00
scd
scsi_low
sem Rework the lifetime management of the kernel implementation of POSIX 2008-06-27 05:39:04 +00:00
sf Update file list and Makefile after repocopying sf(4) from 2008-01-21 04:27:32 +00:00
sio
sis Move sis to sys/dev/sis for consistency. 2008-08-10 10:00:14 +00:00
sk
slhci Use .CURDIR when referring source code. This fixes build 2007-06-20 00:29:51 +00:00
smbfs
sn
snc Add card_if.h and pccarddevs.h 2008-08-07 20:51:51 +00:00
snp
sound Restore SUBDIR+= accidentally removed in the previous revision. 2008-05-04 16:02:45 +00:00
speaker
splash
sppp
sr
ste Move the ste driver from sys/pci to sys/dev/ste. 2008-08-14 20:09:58 +00:00
stg
stge
streams
svr4
sym
syscons
sysvipc
ti
tl Move the tl driver form sys/pci to sys/dev/tl. 2008-08-14 20:02:34 +00:00
tmpfs MFp4: 2007-06-29 05:23:15 +00:00
trm
twa
twe
tx
txp
uark
uart
ubsa
ubsec
ubser
uchcom Add Winchiphead (or Nanjin QinHeng Electronics) USB Serial converter driver. 2007-10-18 10:51:06 +00:00
ucom
ucycom
udav
udbp
udf
udf_iconv
ufm
ufoma
ufs
uftdi
ugen
uhid
uipaq
ukbd
ulpt
umass
umct
umodem
ums
unionfs
upgt Add Conexant/Intersil PrismGT SoftMAC wireless USB driver - upgt(4). 2008-08-11 03:57:31 +00:00
uplcom
ural
urio
usb
uscanner
uslcom Remove option headers that do not exist and are not used 2008-03-27 20:38:03 +00:00
utopia
uvisor
uvscom
vesa
vge
vkbd
vpo
vr Update file list and Makefile after repocopying vr(4) from 2008-03-11 03:50:57 +00:00
vx
wb Move wb driver from sys/pci to sys/dev/wb. 2008-08-14 21:26:29 +00:00
wi
wlan enable IEEE80211_AMDPU_AGE by default 2008-05-03 17:06:59 +00:00
wlan_acl Multi-bss (aka vap) support for 802.11 devices. 2008-04-20 20:35:46 +00:00
wlan_amrr Multi-bss (aka vap) support for 802.11 devices. 2008-04-20 20:35:46 +00:00
wlan_ccmp Multi-bss (aka vap) support for 802.11 devices. 2008-04-20 20:35:46 +00:00
wlan_rssadapt Multi-bss (aka vap) support for 802.11 devices. 2008-04-20 20:35:46 +00:00
wlan_tkip Multi-bss (aka vap) support for 802.11 devices. 2008-04-20 20:35:46 +00:00
wlan_wep Multi-bss (aka vap) support for 802.11 devices. 2008-04-20 20:35:46 +00:00
wlan_xauth Multi-bss (aka vap) support for 802.11 devices. 2008-04-20 20:35:46 +00:00
wpi Remove option headers that do not exist and are not used 2008-03-27 20:38:03 +00:00
wpifw Initial Import of wpi driver based on p4 changeset 128641. 2007-11-05 11:47:19 +00:00
xe
xfs
xl Move the xl driver form sys/pci to sys/dev/xl for consistency. 2008-08-10 09:45:52 +00:00
zfs Add atomic operations for ZFS/sparc64. 2008-04-11 22:59:33 +00:00
zlib
zyd Makefile for building zyd kernel module. 2007-08-29 21:04:26 +00:00
Makefile Connect upgt(4) to the build. 2008-08-11 04:46:14 +00:00
Makefile.inc