嵌入式linux中文站在线图书

Previous Page
Next Page

Chapter 8. Device Registration and Initialization

In Chapters 5 and 6, we saw how NICs are recognized by the kernel, and the initialization that the kernel performs so that the NICs can talk to their device drivers. In this chapter, we will discuss additional stages of initialization:

  • When and how network devices register with the kernel

  • How a network device registers with the network device database and gets assigned an instance of a net_device structure

  • How net_device structures are organized into hash tables and lists to allow different kinds of lookups

  • How net_device instances are initialized, partly by kernel core routines and partly by their device drivers

  • How virtual devices differ from real ones with regard to registration

This chapter does not strive to be a guide on how to write NIC device drivers. I sometimes go into detail on an NIC device driver's code, but I will not cover the entire design of an NIC device driver. We are interested here only in registration and in the interface between device drivers and features such as link state change detection and power management. Refer to Linux Device Drivers (O'Reilly) for a detailed discussion of device drivers.

Before an NIC can be used, its associated net_device data structure must be initialized, added to the kernel network device database, configured, and enabled. It is important not to confuse registration and unregistration with enabling and disabling. They are two different concepts:

  • Registration and unregistration, if we exclude the act of loading a device driver module, are user independent; the kernel drives them. A device that has been only registered is not operative yet. We will see when a device is registered and unregistered in the sections "When a Device Is Registered" and "When a Device Is Unregistered."

  • Enabling and disabling a device require user intervention. Once a device has been registered by the kernel, the user can see it by means of user commands, configure it, and enable it. See the later section "Enabling and Disabling a Network Device."

Let's start by seeing what events trigger the registration and unregistration of network devices.


Previous Page
Next Page