Here you can find guides on how Tock works and its internal interfaces. For short tutorials and longer courses on how to use Tock, see the Tock OS Book.
- Overview - Overview of the OS and this repository.
- Design - Design of the Tock primitives that make safety and security possible.
- Threat Model - Detailed description of Tock's security properties.
- Lifetimes - How Rust lifetimes are used in Tock.
- Mutable References - How Tock safely shares resources between components.
- Soundness - How Tock safely uses unsafe code.
- Compilation - How the kernel and applications are compiled.
- Tock Binary Format - How Tock application binaries are specified.
- Memory Layout - How memory is divided for Tock.
- Memory Isolation - How memory is isolated in Tock.
- Registers - How memory-mapped registers are handled in Tock.
- Startup - What happens when Tock boots.
- Syscalls - Kernel/Userland abstraction.
- Userland - Description of userland applications.
- Networking Stack - Design of the networking stack in Tock.
- Configuration - Configuration options for the kernel.
- External Dependencies - Policy for including external dependencies.
- Syscall Interfaces - API between userland and the kernel.
- Internal Kernel Interfaces - Hardware Interface Layers (HILs) for kernel components.
- Getting Started - Installing the Tock toolchain and programming hardware.
- Process Console - Using the process console to inspect the kernel and control userspace processes.
- Porting Tock - Guide to add new platforms.
- Out of Tree Boards - Best practices for maintaining boards not in Tock master.
- Debugging Help - Guides for various debugging techniques.
- Style - Stylistic aspects of Tock code.
- Code Size - Guide for how to write code and configure Tock to reduce code size.
- Working Groups - Development groups for specific aspects of Tock.
- Code Review Process - Process for pull request reviews.
- Tock Management - Management processes for Tock, including releases.