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

- 31.
Partition Type (Suman Ball)
