Peter Jay Salzman
Ori Pomerantz
Copyright © 2001 Peter Jay Salzman
2003-04-04 ver 2.4.0
Table of Contents
1. Acknowledgements
2. Nota Bene
1. Introduction
1.1. What Is A Kernel Module?
1.2. How Do Modules Get Into The Kernel?
2. Hello World
2.1. Hello, World (part 1): The Simplest Module
2.2. Compiling Kernel Modules
2.3. Hello World (part 2)
2.4. Hello World (part 3): The __init and __exit Macros
2.5. Hello World (part 4): Licensing and Module Documentation
2.6. Passing Command Line Arguments to a Module
2.7. Modules Spanning Multiple Files
3.1. Modules vs Programs
7.1. Talking to Device Files (writes and IOCTLs)}
8. System Calls
8.1. System Calls
9.1. Blocking Processes
10.1. Replacing printk
11. Scheduling Tasks
11.1. Scheduling Tasks
12.1. Interrupt Handlers
13. Symmetric Multi Processing
13.1. Symmetrical Multi-Processing
14. Common Pitfalls
14.1. Common Pitfalls
A.1. Changes between 2.0 and 2.2
B.1. Where From Here?
List of Examples
2-1. hello-1.c 2-2. Makefile for a basic kernel module 2-3. hello-2.c 2-4. Makefile for both our modules 2-5. hello-3.c 2-6. hello-4.c 2-7. hello-5.c 2-8. start.c 2-9. stop.c 2-10. Makefile for a multi-filed module 4-1. chardev.c 4-2. some title 5-1. procfs.c 6-1. procfs.c 7-1. chardev.c 7-2. chardev.h 7-3. ioctl.c 8-1. procfs.c 9-1. sleep.c 10-1. print_string.c 11-1. sched.c 12-1. intrpt.c