Introduction to Linux Kernel Driver Programming
This tutorial will explain the Device Model, the mechanism that the Linux kernel offers to bind drivers to devices and to expose each device to userspace. Even though the way to detect or describe devices can depend on the bus or CPU architecture, the infrastructure binding devices with drivers are universal and therefore applies to all types of device drivers in the Linux kernel. Similarly, exposing devices to user space always follows the same philosophy.
This tutorial won’t have practical labs but will be illustrated by studying several types of drivers, showing various ways of managing multiple devices in the same driver, and implementing the references between devices managed by a bus and devices that userspace sees.
Michael Opdenacker is the founder of Bootlin, an engineering company specializing on cool embedded Linux integration and porting projects. Through Bootlin, he has contributed to the LWD (Linux World Domination) project by training hundreds of engineers from all around the world on embedded Linux and its kernel. By the way, all training materials and conference presentations from Bootlin are freely available on http://bootlin.com/docs/