When searching lately a lot through the UNIX 2.11BSD source code I wanted many times a hyperlinked and cross-referenced rendition of the sources, much like doxygen or lxr does it. For kernel, library, and userland code, for C and assembler.
Since none of the existing tools seemed to do what I wanted, I wrote a Perl script generating such a html'ized version of the source code.
The tool is far from finished, but might already be useful. For a tour
start for example with the code of the cp
command
https://www.retro11.de/ouxr/211bsd/usr/src/bin/cp.c.htmland click along. The links connect C and asm code, the userland code, libc, and kernel code. Look to the
readdir()
call in line 197,
a click gets you into the libc module implementing readdir()
.
A further click on read()
into the assembler stub doing the
system call, and a click on the kernel handler listed there gets you into
the kernel source. Here are the links to the tour
https://www.retro11.de/ouxr/211bsd/usr/src/bin/cp.c.html#n:197 https://www.retro11.de/ouxr/211bsd/usr/src/lib/libc/gen/readdir.c.html#s:_readdir https://www.retro11.de/ouxr/211bsd/usr/src/lib/libc/pdp/sys/__read.s.html#s:_read https://www.retro11.de/ouxr/211bsd/usr/src/sys/sys/sys_generic.c.html#s:_read
The background color tells you in which territory you are in
magenta boot and standalone code red kernel gold network code (running in supervisor) green libraries blue userland code
If you want a kernel tour, start at
https://www.retro11.de/ouxr/211bsd/usr/src/sys/sys/init_main.c.html
Clicking on a symbol definition (or the X in the sidebar) gets you to the cross
referencing info's. To see for example who is using setjmp
see
https://www.retro11.de/ouxr/211bsd/usr/src/lib/libc/pdp/gen/setjmp.s.html#xref:s:_setjmpor who is including
nlist.h
see
https://www.retro11.de/ouxr/211bsd/usr/include/nlist.h.html#xref:i:nlist.h
As said, it's beta stage, the style sheet is still the debug version, not all links end where they should, not all is parsed as it should.
Hope you enjoy it.