This paper provides an overview of many of the different types of device abstractions available under Linux. The paper includes source code, taken from an
ARM-linux-2.6.12 kernel.