Chapter 7. Kernel Infrastructure for Component Initialization
To fully understand a kernel component, you have to know not only what a given set of routines does, but also when those routines are invoked and by whom. The initialization of
a subsystem is one of the basic tasks handled by the kernel according to its own model. This infrastructure is worth studying to help you understand how core components of the networking stack are initialized, including NIC device drivers.
The purpose of this chapter is to show how the kernel handles routines used to initialize kernel components, both for components statically included into the kernel and those loaded as kernel modules, with a special emphasis on network devices. We will therefore see:
How initialization functions are named and identified by special macros How these macros are defined, based on the kernel configuration, to optimize memory usage and make sure that the various initializations are done in the correct order When and how the functions are executed
We will not cover all details of the initialization infrastructure, but you'll have a sufficient overview to navigate the source code comfortably.
|