Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Memory and Resource Management

Rust’s ownership model is the primary tool for safe resource management in the kernel.

Use RAII for all resource acquisition and release (raii)

Resources — IRQ enable/disable state, port numbers, file handles, DMA buffers, lock guards — must use the Drop trait for automatic cleanup. Manual enable()/disable() call pairs are rejected.

// Good — RAII guard ensures IRQs are re-enabled
fn disable_local() -> DisabledLocalIrqGuard { ... }

impl Drop for DisabledLocalIrqGuard {
    fn drop(&mut self) {
        enable_local_irqs();
    }
}

// Bad — caller can forget to re-enable
fn disable_local_irqs() { ... }
fn enable_local_irqs() { ... }

Prefer lexical lifetimes so the Rust compiler inserts drop automatically, rather than calling drop() manually. When the default drop order is incorrect, use explicit drop() calls.

See also: PR #164.