Archive for the ‘Programming’ Category

Peter Jay Salzman
Ori Pomerantz

Copyright © 2001 Peter Jay Salzman

2003-04-04 ver 2.4.0


Table of Contents

Foreword

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. Preliminaries

3.1. Modules vs Programs

4. Character Device Files

4.1. Character Device Drivers

5. The /proc File System

5.1. The /proc File System

6. Using /proc For Input

6.1. Using /proc For Input

7. Talking To Device Files

7.1. Talking to Device Files (writes and IOCTLs)}

8. System Calls

8.1. System Calls

9. Blocking Processes

9.1. Blocking Processes

10. Replacing Printks

10.1. Replacing printk

11. Scheduling Tasks

11.1. Scheduling Tasks

12. Interrupt Handlers

12.1. Interrupt Handlers

13. Symmetric Multi Processing

13.1. Symmetrical Multi-Processing

14. Common Pitfalls

14.1. Common Pitfalls

A. Changes: 2.0 To 2.2

A.1. Changes between 2.0 and 2.2

B. Where To Go From Here

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

original

How to Write an Operating System

Posted: 27 November, 2010 in Programming