Introduction to reading kernel sources

We take as example the FreeBSD kernel. My friend Joe Clark just wouldn't have it any other way.

Sources are under source control. The standard source control systems under Unix are RCS, SCCS and CVS. CVS seems to be the system of choice for the open source world. CVS allows you to sync to a code base across the Internet. Developers can check-out, modify and then check-in code changes and these changes will be immediately delivered to other developers who sync agains the code base regularly.

FreeBSD uses CVSUP. Because it uses Modula-3 I would rather not compile it from source. But binaries are available for both Linux and FreeBSD. See also:

A cvsupfile is required:

*default host=cvsup3.freebsd.org
*default base=/usr/src/freebsd
*default prefix=/usr/src/freebsd
*default release=cvs
*default delte use-rel-suffix
*default tag=.
src-sys
src-base
src-include 
src-bin 
src-sbin 
src-usrbin
src-usrsbin
src-crypto
src-lib
src-libexec
src-secure
src-sys-crypto
src-tools
src-etc
src-kerberosIV
src-kerberos5
the base and prefix options determine the local target directory.
   cvsup cvsupfile
A copy of the kernel base downloaded is this way is in my projects/kernel_sources directory.

Tools help navigate source code. Ctags is a vi add-on that will jump you to a function definition. Cscope is a more advanced tool which will find function definitions as well as all functions which call the function, and so on. Cflow draws a diagram of the interrelations between functions.

LXR is a web-based source code navigation tool. In runs on an http server using Perl scripts. It provides cross referencing for function and type names and, with Glimpse running with it, will do a free-text search on the code base.

In the coming weeks, we will get this up and running. It seems that cscope and the cbrowser GUI front end work on Linux only. gzip's and rpm's.

Wed Feb 7 01:41:10 CST 2001