I built an xv6-riscv source explorer to make the small
operating system easier to understand as a whole. It maps how the files
in user/ and kernel/ work together, from building a user program to
entering the kernel through a trap and system call.
The overview connects the main source layers: user programs, the user
library, system call stubs, traps, kernel services, devices, and the
file-system image. It also traces the runtime path from an ecall to
the corresponding kernel implementation and return value.
Every file and system call links to the relevant source. There is also an API index for kernel routines, user library calls, system-call handlers, and user commands. I made it as a companion for reading xv6: start with the architecture, follow a path that interests you, and then jump directly into the code.