USENIX Technical Program - Abstract - USENIX 99
Standalone Device Drivers in Linux
Theodore Ts'o, MIT
Traditionally, Unix device drivers have been developed and distributed inside the kernel. There are a number
of good reasons why this method is the predominant way most device drivers are distributed. First of all, it
simplifies the packaging and distribution issues for the device driver. Secondly, it makes it easier to make
changes to the interfaces between the kernel and the device drivers.
However, this traditional scheme has a number of major disadvantages. First of all, it means that each
version of the device driver is linked to a specific version of the kernel. So if a device is only supported
in a development release, a customer who might otherwise want to use a stable, production release might
be forced to use a bleeding-edge system. Alternatively, there may be bugs present in the device driver as
included in the stable release of the kernel, but which are fixed in the development kernel.
Moreover, including device drivers with the kernel is not scalable in the long term. If Linux-like 1
systems are ever to be able to support as many devices as various OS's from Redmond, Washington,
hardware manufacturers will have to be able to support and distribute drivers separately from the main
kernel distribution. Currently, the size of the total Linux kernel source base has been doubling (roughly)
every 18 months. Almost all of this growth has been the result of new device drivers. If Linux is to be
successful at Linus Torvald's goal of Total World Domination, it will be essential that we remove any limits
to growth, and an exponential growth in the size of the Linux kernel is an obviously a long-term growth
- View the full text of this paper in
- If you need the latest Adobe Acrobat Reader, you can download it from Adobe's site.
- To become a USENIX Member, please see our Membership Information.