This is a collection of resources concerning user-space device drivers.
Also see device drivers and IO systems.
Issues
IRQs
Can be modeled using RPCs.
Security considerations: IRQ sharing.
Omega0 paper defines an interface.
As is can be read in the Mach 3 Kernel Principles, there is an event object facility in Mach that can be used for having user-space tasks react to IRQs. However, at least in GNU Mach, that code (
kern/eventcount.c) doesn't seem functional at all and isn't integrated properly in the kernel.
DMA
Security considerations.
- I/O MMU.
I/O Ports
- Security considerations.
PCI and other buses
- Security considerations: sharing.
Latency of doing RPCs
- GNU Mach is said to have a high overhead when doing RPC calls.
Plan
Examine what other systems are doing.
L4
- Hurd on L4: deva, fabrica
Minix 3
Start with a simple driver and implement the needed infrastructure (see Issues above) as needed.
http://savannah.nongnu.org/projects/user-drivers/
Some (unfinished?) code written by Robert Millan in 2003: PC keyboard and parallel port drivers, using
libtrivfs.
Documentation
An Architecture for Device Drivers Executing as User-Level Tasks, 1993, David B. Golub, Guy G. Sotomayor, Freeman L. Rawson, III
Performance Measurements of the Multimedia Testbed on Mach 3.0: Experience Writing Real-Time Device Drivers, Servers, and Applications, 1993, Roger B. Dannenberg, David B. Anderson, Tom Neuendorffer, Dean Rubine, Jim Zelenka
User Level IPC and Device Management in the Raven Kernel, 1993, D. Stuart Ritchie, Gerald W. Neufeld
Creating User-Mode Device Drivers with a Proxy, 1997, Galen C. Hunt
The APIC Approach to High Performance Network Interface Design: Protected DMA and Other Techniques, 1997, Zubin D. Dittia, Guru M. Parulkar, Jerome R. Cox, Jr.
The Fluke Device Driver Framework, 1999, Kevin Thomas Van Maren
Omega0: A portable interface to interrupt hardware for L4 system, 2000, Jork Löser, Michael Hohmuth
Userdev: A Framework For User Level Device Drivers In Linux, 2000, Hari Krishna Vemuri
User Mode Drivers, 2002, Bryce Nakatani
Towards Untrusted Device Drivers, 2003, Ben Leslie, Gernot Heiser
Encapsulated User-Level Device Drivers in the Mungi Operating System, 2004, Ben Leslie Nicholas, Nicholas FitzRoy-Dale, Gernot Heiser
Linux Kernel Infrastructure for User-Level Device Drivers, 2004, Peter Chubb
Initial Evaluation of a User-Level Device Driver, 2004, Kevin Elphinstone, Stefan Götz
User-level Device Drivers: Achieved Performance, 2005, Ben Leslie, Peter Chubb, Nicholas FitzRoy-Dale, Stefan Götz, Charles Gray, Luke Macpherson, Daniel Potts, Yueting Shen, Kevin Elphinstone, Gernot Heiser
Virtualising PCI, 2006, Myrto Zehnder, Peter Chubb
Microdrivers: A New Architecture for Device Drivers, 2007, Vinod Ganapathy, Arini Balakrishnan, Michael M. Swift, Somesh Jha
