linux-insides
Introduction
1.
Booting
1.1.
From bootloader to kernel
1.2.
First steps in the kernel setup code
1.3.
Video mode initialization and transition to protected mode
1.4.
Transition to 64-bit mode
1.5.
Kernel decompression
2.
Initialization
2.1.
First steps in the kernel
2.2.
Early interrupts handler
2.3.
Last preparations before the kernel entry point
2.4.
Kernel entry point
2.5.
Continue architecture-specific boot-time initializations
2.6.
Architecture-specific initializations, again...
2.7.
End of the architecture-specific initializations, almost...
2.8.
Scheduler initialization
2.9.
RCU initialization
2.10.
End of initialization
3.
Interrupts
3.1.
Introduction
3.2.
Start to dive into interrupts
3.3.
Interrupt handlers
3.4.
Initialization of non-early interrupt gates
3.5.
Implementation of some exception handlers
3.6.
Handling Non-Maskable interrupts
3.7.
Dive into external hardware interrupts
3.8.
Initialization of external hardware interrupts structures
3.9.
Softirq, Tasklets and Workqueues
3.10.
Last part
4.
System calls
4.1.
Introduction to system calls
4.2.
How the Linux kernel handles a system call
4.3.
vsyscall and vDSO
4.4.
How the Linux kernel runs a program
5.
Timers and time management
5.1.
Introduction
6.
Memory management
6.1.
Memblock
6.2.
Fixmaps and ioremap
7.
SMP
8.
Concepts
8.1.
Per-CPU variables
8.2.
Cpumasks
9.
Data Structures in the Linux Kernel
9.1.
Doubly linked list
9.2.
Radix tree
10.
Theory
10.1.
Paging
10.2.
Elf64
10.3.
CPUID
10.4.
MSR
11.
Initial ram disk
11.1.
initrd
12.
Misc
12.1.
How the kernel is compiled
12.2.
Linkers
12.3.
Linux kernel development
12.4.
Write and Submit your first Linux kernel Patch
12.5.
Data types in the kernel
13.
Useful links
14.
Contributors
Powered by
GitBook
A
A
Serif
Sans
White
Sepia
Night
Share on Twitter
Share on Google
Share on Facebook
Share on Weibo
Share on Instapaper
linux-insides
Linux kernel concepts
This chapter describes various concepts which are used in the Linux kernel.
Per-CPU variables
CPU masks