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.
Boot-Time Kernel Options
Linux
allows users to pass kernel configuration options to their
boot loaders, which then pass the options to the kernel; experienced users can use this
mechanism to fine-tune the kernel at boot time.[*] During the boot phase, as shown in Figure 5-1 in Chapter 5, the two
calls to parse_args
take care of the boot-time ...
Get Understanding Linux Network Internals now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.