2.4 Code: xv6 organization
File | Description |
bio.c | Disk block cache for the file system. |
console.c | Connect to the user keyboard and screen. |
entry.S | Very first boot instructions. |
exec.c | exec() system call. |
file.c | File descriptor support. |
fs.c | File system. |
kalloc.c | Physical page allocator. |
kernelvec.S | Handle traps from kernel. |
log.c | File system logging and crash recovery. |
main.c | Control initialization of other modules during boot. |
pipe.c | Pipes. |
plic.c | RISC-V interrupt controller. |
printf.c | Formatted output to the console. |
proc.c | Processes and scheduling. |
sleeplock.c | Locks that yield the CPU. |
spinlock.c | Locks that don’t yield the CPU. |
start.c | Early machine-mode boot code. |
string.c | C string and byte-array library. |
swtch.S | Thread switching. |
syscall.c | Dispatch system calls to handling function. |
sysfile.c | File-related system calls. |
sysproc.c | Process-related system calls. |
trampoline.S | Assembly code to switch between user and kernel. |
trap.c | C code to handle and return from traps and interrupts. |
uart.c | Serial-port console device driver. |
virtio_disk.c | Disk device driver. |
vm.c | Manage page tables and address spaces. |
The xv6 kernel source is in the kernel/ sub-directory. The
source is divided into files, following a rough notion of modularity;
Figure 2.2 lists the files. The inter-module interfaces
are defined in defs.h
(kernel/defs.h).