Chapter 5. Network Device Initialization
The flexibility of modern operating systems introduces complexity into initialization
. First, a device driver can be loaded as either a module or a static component of the kernel. Furthermore, devices can be present at boot time or inserted (and removed) at runtime: the latter type of device, called a hot-pluggable
device, includes USB, PCI CardBus, IEEE 1394 (also called FireWire by Apple), and others. We'll see how hot-plugging affects what happens in both the kernel and the user space.
In this first chapter, we will cover:
A piece of the core networking code initialization.
The initialization of
How an NIC uses interrupts, and how IRQ handlers can be allocated and released. We will also look at how drivers can share IRQs.
How the user can provide configuration parameters to device drivers loaded as modules.
Interaction between user space and kernel during device initialization and configuration. We will look at how the kernel can run a user-space helper to either load the correct device driver for an NIC or apply a user-space configuration. In particular, we will look at the Hotplug feature.
How virtual devices differ from real ones with regard to configuration and interaction with the kernel.