Several source code directories will be especially important in this course. We encourage you to take a look around!
The
kernel
directory contains source code for core kernel subsystems. For
example, later in the semester we will be talking about the kernel
scheduler code that can be found under the
kernel/sched/
directory, and much sooner than that we will use libraries that
invoke the kernel's process fork code that is implemented in the
kernel/fork.c
file.
The
include
directory contains most kernel header files. Many of the significant kernel header files
(which we will use later in the semester to implement kernel modules) are found under the
include/linux
directory. These kernel header files are different from the header files
found under
include/uapi/linux
that Linux exports to userspace (which we will use from early on in the semester to implement user space programs).
The
arch
directory contains core architecture dependent code. For example, all
x86 specific code is found under the
arch/x86/
directory. The Raspberry Pi (version 3 and later) has an ARM processor architecture,
so for this course we're only really interested in the code found under
arch/arm
.
Underneath each architecture specific directory you'll find a directory structure
that is very similar to the root linux source directory. For example, the
arch/arm/kernel
directory contains ARM architecture specific support for core kernel
subsystems, and the
arch/arm/include
directory contains ARM-architecture dependent header files.
kthread
(a kernel thread, something we will use a lot later in the semester) in the field where it says Search Identifier
, and then click on the magnifying glass icon to the right. This will bring up a page with links to all the places in any directory or file where that symbol is defined or used.