freebsd-nq/sys/dev/usb
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
..
dsbr100io.h
ehci_pci.c Use single byte read and write operations to toggle the BIOS and OS 2008-07-30 19:16:53 +00:00
ehci.c Fix compile 2008-08-18 10:39:59 +00:00
ehcireg.h Add isochronous transfer support for USB 2.0 2008-08-18 04:49:58 +00:00
ehcivar.h Add isochronous transfer support for USB 2.0 2008-08-18 04:49:58 +00:00
FILES
hid.c Fix a typo: According to the hid spec, Global item #3 2008-08-18 17:05:59 +00:00
hid.h
if_aue.c Replace callout_init(..., 1) with callout_init(..., CALLOUT_MPSAFE) for 2008-04-16 16:47:14 +00:00
if_auereg.h Remove my "custom" locks that allow for lock acquire abort, they are 2007-01-08 23:24:21 +00:00
if_axe.c From the OpenBSD commit log : 2008-05-13 14:00:09 +00:00
if_axereg.h Add private tx/rx buffer management to support large frame sizes 2007-11-10 16:23:38 +00:00
if_cdce.c
if_cdcereg.h
if_cue.c Note the Belkin F5U111 Adapter is covered by NETMATE entry. 2007-06-23 06:29:19 +00:00
if_cuereg.h
if_kue.c Add a boatload of devices from OpenBSD and NetBSD to kue and cdce. 2007-06-23 06:47:43 +00:00
if_kuereg.h Prefer device_printf to printf 2007-06-11 05:50:47 +00:00
if_rue.c When all the other drivers were converted to scheduling a taskqueue to 2007-07-09 16:58:07 +00:00
if_ruereg.h
if_rum.c Add the D-Link DWA-110 2008-08-19 01:44:56 +00:00
if_rumreg.h
if_rumvar.h Multi-bss (aka vap) support for 802.11 devices. 2008-04-20 20:35:46 +00:00
if_udav.c Add support for the Davicom DM9601. 2008-04-26 05:46:28 +00:00
if_udavreg.h More removing compatibility macros. 2006-09-07 00:06:42 +00:00
if_upgt.c Add Conexant/Intersil PrismGT SoftMAC wireless USB driver - upgt(4). 2008-08-11 03:57:31 +00:00
if_upgtvar.h Add Conexant/Intersil PrismGT SoftMAC wireless USB driver - upgt(4). 2008-08-11 03:57:31 +00:00
if_ural.c Free the correct buffer list on failure. 2008-07-30 00:38:10 +00:00
if_uralreg.h Update 802.11 wireless support: 2007-06-11 03:36:55 +00:00
if_uralvar.h Multi-bss (aka vap) support for 802.11 devices. 2008-04-20 20:35:46 +00:00
if_zyd.c Change the calling convention for ic_node_alloc to deal with 2008-06-07 18:38:02 +00:00
if_zydfw.h upgrade zd1211b firmware for the zyd driver. This solves a hardware 2007-11-03 19:24:51 +00:00
if_zydreg.h Multi-bss (aka vap) support for 802.11 devices. 2008-04-20 20:35:46 +00:00
kue_fw.h
ohci_pci.c
ohci.c Fix a benign typo that would give out an incorrect warning message. 2008-07-17 22:40:23 +00:00
ohcireg.h Use the limited scatter-gather capabilities of ehci, ohci and uhci 2006-05-28 05:27:09 +00:00
ohcivar.h
rio500_usb.h Don't pretend to support !BSD systems. 2007-06-12 19:01:32 +00:00
rt2573_ucode.h
sl811hs.c
sl811hsreg.h
sl811hsvar.h Use pause() rather than using tsleep() on a dummy variable. 2007-02-27 17:19:33 +00:00
slhci_pccard.c Include usb_port.h to fix build. 2007-06-19 10:28:08 +00:00
uark.c Allow arbitrary baud rates, not just the standard ones. 2008-01-26 04:30:48 +00:00
ubsa.c Add the support for the Globetrotter Max 3.6 HSDPA Modem. 2008-06-05 16:56:56 +00:00
ubser.c Prefer device_printf to printf("%s: ...", device_get_nameunit()). On 2007-07-05 06:42:14 +00:00
ubser.h initialize pp->p_sc so it can be referenced later. 2005-03-17 22:47:18 +00:00
uchcom.c
ucom.c Integrate the new MPSAFE TTY layer to the FreeBSD operating system. 2008-08-20 08:31:58 +00:00
ucomvar.h Integrate the new MPSAFE TTY layer to the FreeBSD operating system. 2008-08-20 08:31:58 +00:00
ucycom.c Latest round of usb cleanups: 2007-06-21 14:42:34 +00:00
udbp.c
udbp.h Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
ufm.c Latest round of usb cleanups: 2007-06-21 14:42:34 +00:00
ufoma.c Make it easy to comment out the part that use current tty layer directly. 2008-08-18 11:56:13 +00:00
uftdi.c Integrate the new MPSAFE TTY layer to the FreeBSD operating system. 2008-08-20 08:31:58 +00:00
uftdireg.h Calculate baud rate divisor instead of allowing only a fixed set of 2008-01-25 02:41:44 +00:00
ugen.c Don't include <sys/tty.h> in non-TTY drivers. 2008-07-24 09:54:10 +00:00
ugraphire_rdesc.h Add support for the Wacom Graphire 3 4x5. Like the Graphire 3, it has a 2005-12-31 04:38:50 +00:00
uhci_pci.c Identify ICH9 USB controllers. 2008-04-11 05:50:53 +00:00
uhci.c Expand callout compatibility macros in the main usb bridges. 2007-06-14 16:23:31 +00:00
uhcireg.h Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
uhcivar.h
uhid.c Don't include <sys/tty.h> in non-TTY drivers. 2008-07-24 09:54:10 +00:00
uhub.c
uipaq.c Add support for the ASUS P535 PDA 2008-08-02 12:15:18 +00:00
ukbd.c
ulpt.c
umass.c o Add a quirk for Sony Handycam DCR-HC32E. 2008-08-13 12:40:20 +00:00
umct.c Finish removal of usb_port.h macros. 2007-06-18 22:27:57 +00:00
umodem.c Integrate the new MPSAFE TTY layer to the FreeBSD operating system. 2008-08-20 08:31:58 +00:00
ums.c sc->sc_ibuf should be malloc'ed after quirks applied, as 2008-08-18 17:13:23 +00:00
uplcom.c Add Belkin F5U257 to the mix. 2008-06-10 19:31:09 +00:00
urio.c Latest round of usb cleanups: 2007-06-21 14:42:34 +00:00
usb_ethersubr.c Remove NETISR_MPSAFE, which allows specific netisr handlers to be directly 2008-07-04 00:21:38 +00:00
usb_ethersubr.h
usb_if.m Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
usb_mem.c s/logprintf/printf/g 2007-06-20 05:11:37 +00:00
usb_mem.h Remove more __OtherBSD__ ifdefs that don't make sense, and haven't for 2007-06-13 05:45:48 +00:00
usb_port.h Rename the kthread_xxx (e.g. kthread_create()) calls 2007-10-20 23:23:23 +00:00
usb_quirks.c Add quirks for making uhid(4) ignore the Apple iPhone and iPhone 3G. 2008-08-09 22:25:13 +00:00
usb_quirks.h Add support for various MS Wirless usb mice. the patch is from 2007-06-29 21:07:41 +00:00
usb_subr.c
usb.c Drop Giant before calling kproc_exit(), so we don't trigger assertion in 2008-05-20 12:34:30 +00:00
usb.h Add isochronous transfer support for USB 2.0 2008-08-18 04:49:58 +00:00
usbcdc.h Sync with 1.9 from NetBSD, this includes: 2005-03-01 06:35:04 +00:00
usbdevs Add the D-Link DWA-110 2008-08-19 01:44:56 +00:00
usbdi_util.c
usbdi_util.h
usbdi.c Correct cache handling for xfer requests marked URQ_REQUEST: many (if not 2008-03-20 16:04:13 +00:00
usbdi.h add support for %b printing of request + xfer flags 2008-03-20 03:09:59 +00:00
usbdivar.h add support for %b printing of request + xfer flags 2008-03-20 03:09:59 +00:00
usbhid.h Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
uscanner.c Add USB ids for the Epson DX7400 / CX7300 multifunction scanner printer 2008-06-27 10:30:08 +00:00
uslcom.c Oops, I accidently concatenated uslcom.[c4] multiple times before the 2008-03-05 14:18:29 +00:00
uvisor.c Prefer device_printf to printf("%s:...", device_get_nameunit(),...); 2007-07-05 06:28:46 +00:00
uvscom.c Prefer device_printf to printf("%s:...", device_get_nameunit(),...); 2007-07-05 06:28:46 +00:00
uxb360gp_rdesc.h Change my email address to the one from the FreeBSD project. 2008-05-24 18:35:55 +00:00