A driver is a piece of software whose aim is to control and manage a particular hardware device, hence the name device driver. From an operating system point of view, it can be either in the kernel space (running in privileged mode) or in the user space (with lower privileges). This book only deals with kernel space drivers, especially Linux kernel drivers. Our definition is that a device driver exposes the functionality of the hardware to user programs.
This book's aim is not to teach you how to become a Linux guru—I'm not even one at all—but there are some concepts you should understand prior to writing a device driver. C programming skills are mandatory; you should be at least familiar with pointers. You should also be familiar with some of the manipulating functions. Some hardware skills are required too. So, this chapter essentially...