The HyperNews Linux KHG Discussion Pages

Linux Kernel Hackers' Guide

Table of Contents

Tour of the Linux Kernel
This is a somewhat incomplete tour of the Linux Kernel, based on Linux 1.0.9 and the 1.1.x development series. Most of it is still relevant.
Device Drivers
The most common Linux kernel programming task is writing a new device driver. The great majority of the code in the kernel is new device drivers; between 1.2.13 and 2.0 the size of the source code more than doubled, and most of that was from adding device drivers.
Filesystems
Adding a filesystem to Linux doesn't have to involve magic...
Linux Memory Management
This is very outdated, but it's still better than nothing. It was more or less correct when it was written, but Linux's memory management has improved remarkably since this was written, and has really undergone nearly complete change. Nevertheless, if you are unable to navigate the current mm code but want to learn how it works, reading this (but not taking it to be necessarily true) may give you the roadmap you need to understand the current source.
How System Calls Work on Linux/i86
Although this was written while Linux 0.99.2 was current, it still applies. A few filenames may need updating. find is your friend--just respond with the changes and they will be added.
Other Sources of Information
The KHG is just one collection of information about the Linux kernel. There are others!

Membership and Notification

At the bottom of the page, you will notice two hyperlinks (among several others): Notification and Membership. Using the KHG to its fullest involves these two hyperlinks, even though you are not required to be a member to read these pages and post responses.

Membership

HyperNews membership is site-wide. That is, you only need to sign up and become a member once for the entire KHG. It doesn't take much to be a member. Each member is identified by a unique name, which can either be a nickname or an email address. We suggest using your email address; that way it will be unique and easy to remember. On the other hand, you may want to choose a nickname if you expect to be changing your email address at any time.

We also want your real name, email address, and home page (if you have one). You can give us your phone and address if you want. You will be asked to choose a password. You can change any of these items at any time by clicking on the Membership hyperlink again.

Notification

Notification is also known as ``subscribing to a page''. It puts you on a mailing list to be sent notification of any new responses to the page to which you are subscribed. You subscribe separately to each page in which you are interested by clicking the Notification link on the page to which you want to subscribe.

Contributing

Please respond to these pages if you have something to add. Think of posting a response rather like posting to an email list, except that an editor might occasionally come along to clean things up and/or put them in the main documents' bodies. So if you would post it to an email list in a similar discussion, it is probably appropriate to post here.

In order to make reading these pages a pleasure for everyone, any incomprehensible, unrelated, outdated, abusive, or other completely unnecessary post may be removed by an administrator. So if you have a message that would be inappropriate on a mailing list, it's probably also inappropriate here.

The administrators have the final say on what's appropriate. We don't expect this to become an issue...

About the new KHG

The Linux Kernel Hackers' Guide has changed quite a bit since its original conception four years ago. I struggled along with the help of many other hackers to produce a document that lived primarily on paper, and was intended to document the kernel in much the same way that a program's user guide is intended to document the program for users.

It was less successful than most user guides, for a number of reasons:

I floundered around, trying to be helpful, and made at least one right decision: most of the people who needed to read the old KHG needed to write device drivers, and the most fully-developed part of the KHG was the device driver section.

There is a clear need for further development of the KHG, and it's clear that my making it a monolithic document stood in the way of progress. The KHG is now a series of more or less independent web pages, with places for readers to leave comments and corrections that can be incorporated in the document at the maintainer's leisure--and are available to readers before they are incorporated.

The KHG is now completely web-based. There will be no official paper version. You need kernel source code nearby to read the KHG anyway, and I want to shift the emphasis from officially documenting the Linux kernel to being a learning resource about the Linux kernel--one that may well be useful to other people who want to document one part or another of the Linux kernel more fully, as well as to people who just want to hack the kernel.

Enjoy!

Copyright (C) 1996 Michael K. Johnson, johnsonm@redhat.com


Responses [Embed Depth: 1 2 3 All] [Outline Depth: 1 2 3 9 All]

1. Note: Help make the new KHG a success (Michael K. Johnson)
2. None: Need easy way to download whole KHG
1. Note: Mirror packages are available, but that's not really enough (Michael K. Johnson)
1. Feedback: Pointer to an HTTP mirror package (Amos Shapira)
2. Idea: postscript version of these documents? (Michael Stiller)
1. Ok: Sure! (Michael K. Johnson)
-> None: Not so Sure! (jeff millar)
-> Disagree: Enough already! (Michael K. Johnson)
3. Idea: an iterator query might not be hard... (Mark Eichin)
1. Agree: Might be harder here... (Michael K. Johnson)
3. Idea: Kernel source code (Gabor J.Toth)
1. Question: The sounds of silence... (Gabor J.Toth)
1. Agree: Breaking the silence :) (Kyle Ferrio)
1. More: Scribbling in the margins (Michael K. Johnson)
2. Idea: It requires thought... (Michael K. Johnson)
2. Note: Kernel source is already browsable online (Axel Boldt)
7. Feedback: Why can't we incorporate new changes in linux kernel in KHG ? (Praveen Kumar Dwivedi)
1. Agree: You can! (Michael K. Johnson)
9. Question: Realtime mods anyone? (bill duncan)
1. None: 100 ms real time should be easy (jeff millar)
2. None: Realtime is already done(!) (Kai Harrekilde-Petersen)
4. Feedback: POSIX.4 scheduler (Peter Monta)
1. Feedback: cli()/sti() latency, hard numbers (Ingo Molnar)
5. Idea: found some hacks ?!? (Mayk Langer)
6. News: Hard real-time now available (Michael K. Johnson)
7. News: Summary of Linux Real-Time Status (Markus Kuhn)
10. Question: Misc questions on the kernel (Hasdi)
1. None: Untitled (benschop@eb.ele.tue.nl)
2. None: Untitled (benschop@eb.ele.tue.nl)
15. Idea: Linux kernel debugging (yylai@hk.net)
1. Question: Device debugging (alombardİiiic.ethz.ch)
2. News: GDB for Linux (David Grothe)
18. Question: What is SOCK_RAW and how do I use it? (arkane)
1. Feedback: What raw sockets are for. (Cameron MacKinnon)
20. Question: proc fs docs? (David Woodruff)
21. Question: Unable to access KHG, port 8080 giving problem. (Srihari Nelakuditi)
1. None: Get a proxy (Michael K. Johnson)
25. None: I'd like to see the scheduler chapter (Tim Bird)
1. None: Untitled (Vijay Gupta)
3. Agree: Go ahead! (Michael K. Johnson)
27. Question: readv/writev & other sock funcs (Dave Wreski)
28. None: Kernel ioctls help needed, please! (Eugene Kanter)
29. Question: How to make paralelism in to the kernel? (Delian Dlechev)
30. News: New document on exception handling (Michael K. Johnson) newer
31. Question: Partition Type (Suman Ball) newer
a Response to: "The Linux Kernel Hackers' Guide"

| Next-in-Thread | Next Response | Previous Response | Next Thread |
| Notification | Admin Mode |
| Membership | Help for HyperNews 1.9B5.6 | Frames |