Structure

This section presents an outline of the document as a whole, explaining the purpose and aim of each individual subsection. Hopefully this will enable the reader to ascertain which parts of the document are of most interest.

Some chapters are by nature, more "hands on". The less practical chapters have a concluding section entitled "Your Turn", which suggests an activity to consolidate the information presented.

The chapter entitled "Linux Kernel Overview" is intended to set the scene for the rest of the document by giving a high level summary of the most basic kernel concepts. This first chapter is designed to be a "taster"; if reading it produces a desire to know more, kernel programming (and therefore the rest of this document) is probably for you. Conversely, it may completely fail to interest you, in which case you may be better off writing yet another text editor or some other equally awe inspiring, user space application. ;)

The chapter entitled "Source Tour" explains what goes where in the kernel source tree. It encourages the bravest readers to get started reading some kernel code by listing some good starting points. Less confident readers may prefer to skim this chapter and come back to it later as reference material.

The chapter entitled "Tools" describes the various tools at the kernel hackers disposal. The idea here is to present relevant, basic, usage along with a source of more in depth documentation.

The chapter entitled "Tasks" outlines some common kernel development activities. It is hoped that these examples will enable a new hacker to work both efficiently and effectively right from the start, without having to read 101 man pages!

The chapter entitled "Basic Functions" aims to present the most fundamental kernel functions that every kernel hacker should know about and use on a day to day basis.

The chapter entitled "Drivers & Modules" is not yet written.

The chapter entitled "Kernel Debugging" describes in detail an example debugging strategy, including how and how not to use a debugger. The aim is to encourage intelligent use of a debugger as a thought stimulation tool, to get to the real root of problems as they come to light.

The chapter entitled "Profiling and Benchmarking" explains what profiling is, how to profile kernel code and will eventually explain how to compare the performance of two kernel versions.

The chapter entitled "The Linux Kernel Development Cycle" explains the evolutionary process by which the kernel is continually improved and extended. It is intended as an aid to making appropriate contributions.

The remaining Tips, More Information, Getting Help, FAQ, To Do, Glossary and References & Acknowledgments are hopefully self explanatory!