Current implementation
The user-level device driver (ULDD) project has produced a framework to allow device drivers to be run at user-level on both the L4 microkernel and Linux. Although focussing on user-level drivers, the framework also allows the same device drivers to be run inside the Linux kernel. This is not only useful for benchmarking, it also allows performance-critical drivers to be moved back into the kernel after having been developed and debugged at user level.
The driver framework has been used to create a number of drivers including:
- IDE disk driver
- 100Mbit ethernet driver (Tulip chipset)
- Gigabit ethernet driver (dp83820 and Intel E1000 chipset)
- Serial port
- Keyboard
One of the goals of this work is to provide a flexible environment. To this end we have made the drivers as portable as feasible, and have them running on a number of platforms:
- IA64 (Itanium and Itanium 2 platforms)
- IA32 (aka x86)
- Alpha (Pyxis and Tsunami chipsets)
- MIPS (GT chipset)