When dealing with a source base as large as the kernel, it certainly helps to have software tools to help understand how the pieces fit together. This page is meant to provide you with pointers to the most commonly used tools to make your first forrays in kernel-land as productive as possible.
Editing Kernel Sources
Perhaps the most important tool is a good programmers's text editor. Popular choices are emacs and any vi clone, vim being the most widely used these days. Generally, text editors written for programmers are programable and have features such as syntax highlighting, text folding, brace matching, and easy integration with source management tools, such as make(1), cvs(1), text reformatting, man page lookups, and more.
If you want to download the lastest kernel source, you need git. You can get it from here.
And some tips while using Git here
The alternative, more "classic", way to download a kernel source tree release is to pull it from http://kernel.org/ as a compressed archive file.
You're now ready to edit the kernel source code or browse it to learn. Where to start? As you read through the code, you'll need many times to lookup the declaration or definition of this or that particular data structure, macro or function. the most basic way to do so is to use a combination of the grep (or egrep) and find` commands;
This searches the current directory [and all subdirectories] for files ending with .c, .h or .S, and runs egrep on each of them for the pattern myregularexpression. Substitute myregularexpression with more complex regular expressions.
While this approach works, other tools allow you to index the entire kernel source tree to faciliate its browsing. This makes learning to find your landmarks in the code a lot easier and allow you to quickly find the declarations / definitions of unknown data structures.
KernelHQ : Another website to browse/navigate the kernel source. Has all the kernel sources since 1.0.
FXR watson FreeBSD and Linux Kernel Cross-Reference
(An archive of all kernel versions was here.)
Alternative tools include: freescope, etags, and idutils which build databases to use when searching for C symbols. Each has their own idiosyncrasies and features. Some integrate better with your text editor of choice. (Look especially for plugins to help with integration.) cgvg is another option, though it doesn't appear to use a database to speed searches.
I've posted (with minor frustrations) a StructDumper python script that scans .h files for definitions and publishes them to an .htm file. Lots of room to criticise.