A Brief Description of the Linux Source Tree

Several source code directories that will be important in this course. Take a look around!

kernel - Core kernel subsystems. For example, the kernel scheduler code under kernel/sched/, or process fork code under kernel/fork.c

arch - Core architecture dependent code. For example, all x86 specific code is under arch/x86/. The Raspberry Pi 3 has an ARM processor architecture, so for this course we're only interested in arch/arm. Underneath each specific architecture directory you'll find a directory structure that is very similar to the root linux source directory. For example, arch/arm/kernel contains ARM-architecture dependent support for core kernel subsystems. The directory arch/arm/include contains ARM-architecture dependent header files.

include - Contains most kernel header files. Many significant kernel header files will be found under include/linux. These are different from the headers that Linux exports to userspace. Userspace header files are under include/uapi/linux, for example, sched.h in that directory contains the constant defines for each scheduling class supported by Linux (SCHED_NORMAL, SCHED_FIFO, etc.).

Documentation - Lots of in-kernel documentation