Run, don't walk to get a copy of this book.
At the bottom of the page, you will notice two hyperlinks (among several others): Subscribe and Members. 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.
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.
Subscribing to a page 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 Subscription link on the page to which you want to subscribe. You are also subscribed, by default, to pages that you write.
When you subscribe to a page, you subscribe to that page and all of its responses.
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...
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:
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,1997 Michael K. Johnson, [email protected]
Loading shared objects - How? by Wesley Terpstra
How can I see the current kernel configuration? by Melwin
My mouse no work in X windows by alfonso santana
The crash(1M) command in Linux? by Dmitry
Where can I gen detailed info on VM86 by Sebastien Plante
How to print floating point numbers from the kernel? by [email protected]
PS/2 Mouse Operating in Remote Mode by Andrei Racz
basic module by [email protected]
How to check if the user is local? by [email protected]
Ldt & Privileges by Ganesh
skb queues by Rahul Singh
Page locking (for DMA) and process termination? by Espen Skoglund
SMP code by [email protected]
Porting GC: Difficulties with pthreads by Talin
Linux for "Besta - 88"? by Dmitry
MVME147 Linux by Edward Tulupnikov
/proc/locks by Marco Morandini
syscall by [email protected]
How to run a bigger kernel ? by Kyung D. Ryu
Linux Terminal Device Driver by Nils Appeldoorn
Terminal DD by Doug McNash
DMA to user allocated buffer ? by Chris Read
Patching problems by Maryam
Untitled by [email protected]
Ethernet Collision by jerome bonnet
Segmentation in Linux by Andrew Sampson
How can the kernel copy directly data from one process to another process? by J�rgen Zeller
Remapping Memory Buffer using vmalloc/vma_nopage by Brian W. Taylor
Does memory area assigned by "vmalloc()" get swapped to disk? by Saurabh Desai
Lock the pages in memory by [email protected]
How about assigning a fixed size array...does it get swapped too? by saurabh desai
Creative Lab's DVD Encore by Brandon
TCP sliding window by Olivier
Packets and default route versus direct route by Steve Resnick
IPv6 description - QoS Implementation - 2 IP Queues by wehrle
writing to user file directly from kernel space, How can it be done? by Johan
how can i increase the number of processes running? by ElmerFudd
How do I change the amount of time a process is allowed before it is pre-empted? by [email protected]
Network device stops after a while by Andrew Ordin
Untitled by Andrew
Does MMAP work with Redhat 4.2? by Guy
Yes, it works just fine. by Michael K. Johnson
What about mprotect? by Sengan Baring-Gould
It Works! Thanks! by Guy
multitasking by Dennis J Perkins
Answer by David Welch
multitasking by Dennis J Perkins
answer by David Welch
linux on sparc by darrin hodges
How to call a function in user space from inside the kernel ? by Ronald Tonn
How to call a user routine from kernel mode by David Welch
Can I map kernel (device driver) memory into user space ? by Ronald Tonn
driver x_open,x_release work, x_ioctl,x_write don't by Carl Schwartz
Depmod Unresolved symbols? by Carl Schwartz
How to sleep for x jiffies? by Trent Piepho
Use add_timer/del_timer (in kernel/sched.c) by Amos Shapira
Adding code to the Linux Kernel by Patrick
/dev/random by Simon Green
MSG_WAITALL flag by Leonard Mosescu
possible bug in ipc/msg.c by Michael Adda
scheduler Question by Arne Spetzler
File Descriptor Passing? by The Llamatron
Linux SMP Scheduling by Angela
Finding definitions in the source by Felix Rauch
Re: Linux SMP Scheduling by Franky
Difference between ELF and kernel file by Thomas Prokosch
How kernel communicates with outside when it's started? by Xuan Cao
The way from a kernel hackers' idea to an "official" kernel? by Roger Schreiter
Curious about sleep_on_interruptible() in ancient kernels. by Colin Howell
Server crashes using 2.0.32 and SMP by Steve Resnick
Debugging server crash by Balaji Srinivasan
More Information by Steve Resnick
it should not have happenned... by Balaji Srinivasan
Signals ID definitions by Franky
the segment D000 is not visible by [email protected]
ICMP - Supressing Messages in 2.1.82 Kernel by Brent Johnson
Change /etc/syslog.conf by Balaji Srinivasan
Modem bits by Franky
Untitled by Kostya
I need some way to measure the time a process spend in READY QUEUE by Leandro Gelasi
How to make sockets work whilst my process is in kernel mode? by Mikhail Kourinny
Realtime Problem by Uwe Gaethke
SCHED_FIFO scheduling by Balaji Srinivasan
inodes by Ovsov
Difference between SOCK_RAW SOCK_PACKET by Chris Leung
SOCK_PACKET by Eddie Leung
Need additional termcap entries for TERM=linux by Karl Bullock
Question on Umount or sys_umount by teddy
Passing file descriptors to the kernel by Pradeep Gore
A way to "transform" a file descriptor into a struct file* in a user process by Lorenzo Cavallaro
Dead Man Timer by Jody Winston
raw sockets by lightman
a kernel-hacking newbie by Bradley Lawrence
How to write CD-ROM Driver ? Any Source Code ? by Madhura Upadhya
Measuring the scheduler overhead by Jasleen Kaur
Where can I find the tcpdump or snoop in linux? by wangc@taurus
man which by [email protected]
Timers don't work?? by Joshua Liew
Timers Work... by Balaji Srinivasan
problem of Linux's bridge code by wangc@taurus
Documention on writing kernel modules by Erik Nygren
How to display a clock on my console? by keco
Difference between SCO and Linux drivers. by M COTE
Changing the scheduler from round robin to shortest job first for kernel 2.0 and up by [email protected]
meanings of file->private_data by [email protected]
/dev/signalprocess by flatmax
how to track VM page access sequence? by shawn
Whats the difference between dev_tint(dev) and mark_bh(NET_BH)? by Jaspreet Singh
PCI by [email protected]
RE: PCI by Armin A. Arbinger
Can I make syscall from inside a kernel module? by Shawn Chang
Re: Can I make syscall from inside a kernel module? by Massoud Asgharifard
Make a syscall despite of wrong fs!! by Mikhail Kourinny
code snip to make a sys_* call from a module by Pradeep Gore
Dont use system calls within kernel...(esp sys_mlock) by Balaji Srinivasan
Untitled by Steve Durst
RAW Sockets (Art)
use phy mem by WYB
HyperNews for RH Linux ? by Eigil Krogh Sorensen
Not really needed by Cameron
about raw ethernet frame: how to do it ? by [email protected]
process table by Blaz Novak
Stream drivers by Nick Egorov
Xircom External Ethernet driver anywhere? by mike head
interruptible_sleep_on() too slow! by Bill Blackwell
creating a kernel relocatable module by Simon Kittle
Up to date serial console patches by Simon Green
Kernel-Level Support for Checkpointing on Linux? by Argenis R. Fernandez
Working on it. by Jan Rychter
Problem creating a new system call by sauru
How did the file /arch/i386/kernel/entry.S do its job by Wang Ju
system call returns "Bad Address". Why? by sauru
Re:return values by C.H.Gopinath
Re:return values by Sameer Shah
possible reason for segmentation fault
Creating a new sytem call: solution by C.H.Gopinath
problem with system call slot 167 by Todd Medlock
Kernel Debuggers for Linux by sauru
Resetting interface counters by Keith Dart
writing/accessing modules by Jones MB
Use a device driver and read()/write()/ioctl() by Michael K. Johnson
getting to the kernel's memory by Jones MB
use buffers! by Rubens
Help with CPU scheduler! by Lerris
calling interupts from linux by John J. Binder
DVD-ROM and Linux? (sorry if it's off topic...) by Joel Hardy
DVD-ROM and linux by [email protected]
Response to DVD and Mpeg in Linux by Mike Corrieri
DVD Encryption by Mark Treiber
Untitled by Tim
DVD?
Kernel Makefile Configuration: how? by Simon Green
How to add a driver to the kernel ? by jacek Radajewski
See include/linux/autoconf.h by Balaji Srinivasan
Multiprocessor Linux by Davis Terrell
Improving event timers? by [email protected]
measuring time to load a virtual mem page from disk by kandr
using cli/sti() and save_flags/restore_flags() by george
Protected Mode by ac
'Developers manual' from Intel(download)... by Mats Odman
Advanced 80386 Programming Techniques by Michael K. Johnson
DMA buffer sizes by [email protected]
DMA limits by Albert Cahalan <acahalan at cs.uml.edu>
Not page size, page order by Michael K. Johnson
Problem Getting the Kernel small enough by [email protected]
How to create /proc/sys variables? by Orlando Cantieni
Linux for NeXT black? by Dale Amon
vremap() in kernel modules? by Liam Wickins
giveing compatiblity to win95 for ext2 partitions (for programmers forced to deal with both) by pharos
setsockopt() error when triying to use ipfwadm for masquerading by [email protected]
reset the irq 0 timer after APM suspend by Dong Chen
Re: fixed, patch for kernel 2.0.30 by Dong Chen
Source Code in C for make Linux partitions. by Limbert Sanabria
Untitled by lolley
How can I "cheat" and change the IP address (src,dest) in the sent socket? by Rami
Transparent Proxy by Zygo Blaxell
Untitled by [email protected]
Untitled by [email protected]
Changing your IP address is easy, but... by Zygo Blaxell
You have to know a bit of C (if u wanna learn) ;) by Lorenzo Cavallaro
Untitled
Do it in the kernel by Michael K. Johnson
Where is the source file for accept() by [email protected]
How can I use RAW SOCKETS in UNIX? by Rami
the KHG in spanish? by Jorge Alvarado Revatta
Si tenga preguntas, quisa yo pueda ayudarte. by KernelJock
Tengo una pregunta by [email protected]
Espa�ol by LL2
No esta aqui! Pero... by Michael K. Johnson
How to get a Memory snapshot ? by Manuel Porras Brand
resources hard limits by [email protected]
How to invalidate a chache page by Gerhard Uttenthaler
Where are the tunable parameters of the kernel? by [email protected]
How can my device driver access data structures in user space? by Stephan Theil
Forced Cast data type by Wang Ju
Problem in doing RAW SOCKET Programming by anjali sharma
Problem with ICMP echo-request/reply by Raghavendra Bhat
Tunable Kernel Parameters? by [email protected]
Increasing number of files in system by Simon Cooper
Increasing number of open files parameter by Simon Cooper
sysctl in Linux by Jukka Santala
ELF matters by Carlos Munoz
Droping Packets by Charles Barrasso
The /proc/profile by Charles Barrasso
Can you block or ignore ICMP packets? by [email protected]
ICMP send rate limit / ignoring by Jukka Santala
Using ipfwadm by Charles Barrasso
Icmp.c and kernal ping replies by Don Thomas
encaps documentation by Kuang-chun Cheng
Mounting Caldrea OpenDOS formatted fs's by Trey Childs
finding the address that caused a SIGSEGV. by Ben Shelef
sti() called too late. by Erik Thiele
sti() called too late. by Gadi Oxman
Module Development Info? by Mark S. Mathews
Needed here too by ajay
Help needed here too! by ajay
Need quicker timer than 100 ms in kernel-module by Erik Thiele
10 ms timer patch by Reinhold J. Gerharz
please send me 10 ms timer patch by Tolga Ayav
Please send me the patch by Jin Hwang
UTIME: Microsecond Resolution Timers by BalajiSrinivasan
Need help with finding the linked list of unacked sk_buffs in TCP by Vijay Gupta
Partition Type by Suman Ball
New document on exception handling by Michael K. Johnson
How to make paralelism in to the kernel? by Delian Dlechev
readv/writev & other sock funcs by Dave Wreski
I'd like to see the scheduler chapter by Tim Bird
Untitled by Vijay Gupta
Go ahead! by Michael K. Johnson
Unable to access KHG, port 8080 giving problem. by Srihari Nelakuditi
proc fs docs? by David Woodruff
What is SOCK_RAW and how do I use it? by arkane
What raw sockets are for. by Cameron MacKinnon
Linux kernel debugging by [email protected]
GDB for Linux by David Grothe
Another kernel debugging tool by David Hinds
Kernel debugging with breakpoints by Keith Owens
Need help for debugging by C.H.Gopinath
gdb debugging of kernel now available by David Grothe
Device debugging by alombard�iiic.ethz.ch
Realtime mods anyone? by bill duncan
Summary of Linux Real-Time Status by Markus Kuhn
Hard real-time now available by Michael K. Johnson
Shortcomings of RT-Linux by Balaji Srinivasan
Firm Realtime available by Balaji Srinivasan
found some hacks ?!? by Mayk Langer
POSIX.4 scheduler by Peter Monta
cli()/sti() latency, hard numbers by Ingo Molnar
Realtime is already done(!) by Kai Harrekilde-Petersen
100 ms real time should be easy by jeff millar
Real-Time Applications with Linux POSIX.4 Scheduling by P. Woolley
Why can't we incorporate new changes in linux kernel in KHG ? by Praveen Kumar Dwivedi
You can! by Michael K. Johnson
Kernel source code by Gabor J.Toth
Need easy way to download whole KHG
KHG being mirrored nightly for download! by Michael K. Johnson
postscript version of these documents? by Michael Stiller
Sure! by Michael K. Johnson
Not so Sure! by jeff millar
Enough already! by Michael K. Johnson
Mirror packages are available, but that's not really enough by Michael K. Johnson
Mirror whole KHG package, off line reading and Post to this site by Kim In-Sung
Untitled by Jim Van Zandt
That works. (using it now). Two tips: by Richard Braakman
Help make the new KHG a success by Michael K. Johnson