Further information about kernel programming, especially regarding portable modules and networking, can be found at the following sites.
"Linux Device Drivers, 2nd Edition": Online Book | O'Reilly's book. Worth its weight in gold. |
LWN.net v2.4/v2.6 porting guide | Everything you need to know to write portable kernelspace code |
KernelNewbies.org | Contains a host of useful information. Don't let the name put you off. |
linux kernel cross reference | complete cross references for various kernel versions. Use its identifier search instead of grepping your own sourcetree. |
the linux kernel API (alternate link) | reference manual for the kernel's equivalent of libc |
"the linux kernel" | an aptly named kernel overview |
the linux kernel mailing-list FAQ | read this before posting to the list |
The Linux Kernel Module Programming Guide | module centric documentation |
module init tools FAQ | information on porting modules to the v2.6 kbuild infrastructure |
"HOWTO Add a New Network Protocol in LINUX" | in case you need to hook into the protocol handling subsystem |
BPF(4) man page | for those of you that don't know, the linux socket filter is based on this: the Berkeley Packet Filter. |
LinuxJournal: "Roll your own firewall with netfilter" | a brief primer into netfilter programming |
"HOWTO use netfilter hooks" | more detailed information on netfilter programming |
"The journey of a packet through the linux 2.4 network stack" | a primer into the linux kernel network stack |
"A Map of the Networking Code in Linux Kernel 2.4.20" | you can't get more detailed than this. |
"Network Buffers And Memory Management" | by Alan Cox. Describes the main network datastructure (sk_buff) in great detail, especially regarding memory usage |
the linux kernel procfs guide (alternate link) | Information on using /proc for kernelspace/userspace communication |
"Understanding The Linux Virtual Memory Manager" | All you ever might need to know about linux VM management. Might be a bit outdated, as the VM changed a lot lately. |
Do you know of other useful kernel programming links? Or have you found an error? Please post a message in our kernel programming forum (anonymous posting is allowed).