This is a collection of resources concerning user-space device drivers.
Also see device drivers and IO systems. driver glue code.
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.IRC, freenode, #hurd, 2011-07-29
< antrik> regarding performance of userspace drivers, there is one thing that really adds considerable overhead: interrupt handling. whether this is relevant very much depends on the hardware in question. when sending many small packets over gigabit ethernet, it might be noticable; in most other cases it's irrelevant < youpi> some cards support interrupt coalescin < youpi> could be supported by DDE too
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.
System Boot
IRC, freenode, #hurd, 2011-07-27
< braunr> btw, was there any formulation of the modifications required to
have disk drivers in userspace ?
< braunr> (which would obviously need something like
initrd/initramfs/whatever and may also need the root file system not to
be the first task started)
< braunr> hm actually, we may not need initrd
< braunr> the boot loader could just load more modules
< antrik> braunr: I have described all that in my thesis report... in
German :-(
< braunr> and the boot scripts could be adjusted to pass around the right
ports
< Tekk_> braunr: yeah, we could probably load a module that kciks us into
userspace and starts the disk driver
< braunr> modules are actualy userspace executables
< Tekk_> ah
< Tekk_> so what's the issue?
< Tekk_> oh! I'm thinking the ext2fs server, which is already in userspce
< braunr> change the file systems to tell them which underlying disk driver
to use
< Tekk_> mhm
< braunr> s/disk/storage/
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
