The Linux kernel
Andries Brouwer, aeb@cwi.nl
2003-02-01
Some remarks on the Linux Kernel
1. Linux
- 1.1 History
- 1.2 Size
- 1.3 Hardware platforms
- 1.4 Authors
- 1.5 Users and marketshare
- 1.6 Name
- 1.7 Distributions
- 1.8 Copyright, Open Source, GPL
- 1.9 Literature and documentation
2. The kernel source
- 2.1 Kernel versions
- 2.2 Obtaining the kernel source
- 2.3 Compiling the kernel
- 2.4 Booting a new kernel
- 2.5 Modules
- 2.6 Subsystems - layout of the tree
- 2.7 The C code
- 2.8 Logging kernel messages
- 2.9 Keyboard interface to the kernel
- 2.10 Profiling the kernel
- 2.11 Debugging the kernel
- 2.12 Submitting patches
- 2.13 Talking about the kernel
3. User space and the libc interface
- 3.1 Application programs and C library
- 3.2 Kernel and user space
- 3.3 Error return conventions
- 3.4 Alternative C libraries
- 3.5 Initial userspace
- 3.6 Libraries and binary formats
4. System Calls
- 4.1 System call numbers
- 4.2 The call
- 4.3 System call parameters
- 4.4 Error return
- 4.5 Interrupted system calls
- 4.6 Sysenter and the vsyscall page
5. Signals
- 5.1 Sending signals
- 5.2 Receiving signals
- 5.3 Semantics
- 5.4 Blocking signals
- 5.5 Voodoo: wait and SIGCHLD
- 5.6 Returning from a signal handler
- 5.7 ptrace
- 5.8 The Linux "parent death" signal
6. File names and files
- 6.1 The file hierarchy
- 6.2 The Unix filesystem model
- 6.3 The Linux filesystem model
- 6.4 Open files
- 6.5 Path names relative to a file descriptor
7. Filesystems
- 7.1 FAT
- 7.2 Ext2
- 7.3 Journaling filesystems
- 7.4 NFS
- 7.5 The proc filesystem
- 7.6 A baby filesystem example
8. The Linux Virtual File System
- 8.1 Terminology
- 8.2 Filesystem type registration
- 8.3 Struct file_system_type
- 8.4 Mounting
- 8.5 The superblock
- 8.6 Inodes
- 8.7 Dentries
- 8.8 Files
- 8.9 struct vfsmount
- 8.10 fs_struct
- 8.11 nameidata
9. Memory
- 9.1 Physical and virtual memory
- 9.2 Kinds of memory
- 9.3 Kernel memory handling
- 9.4 i386 addressing
- 9.5 Reference
- 9.6 Overcommit and OOM
- 9.7 Stack overflow
10. Processes
11. Character devices
12. Handling of asynchronous events
13. Sysfs and kobjects
- 13.1 atomic_t
- 13.2 struct kref
- 13.3 struct kobject
- 13.4 struct kset
- 13.5 struct kobj_type
- 13.6 struct subsystem
- 13.7 struct kobj_map
- 13.8 Example: floppy
- 13.9 Hotplug