SYMBOL INDEX (6228 symbols across 724 files) FILE: 01_wait_forever/build.rs function main (line 3) | fn main() { FILE: 01_wait_forever/src/panic_wait.rs function panic (line 14) | fn panic(_info: &PanicInfo) -> ! { FILE: 02_runtime_init/build.rs function main (line 3) | fn main() { FILE: 02_runtime_init/src/_arch/aarch64/cpu.rs function wait_forever (line 22) | pub fn wait_forever() -> ! { FILE: 02_runtime_init/src/_arch/aarch64/cpu/boot.rs function _start_rust (line 30) | pub unsafe fn _start_rust() -> ! { FILE: 02_runtime_init/src/main.rs function kernel_init (line 122) | unsafe fn kernel_init() -> ! { FILE: 02_runtime_init/src/panic_wait.rs function panic (line 15) | fn panic(_info: &PanicInfo) -> ! { FILE: 03_hacky_hello_world/build.rs function main (line 3) | fn main() { FILE: 03_hacky_hello_world/src/_arch/aarch64/cpu.rs function wait_forever (line 22) | pub fn wait_forever() -> ! { FILE: 03_hacky_hello_world/src/_arch/aarch64/cpu/boot.rs function _start_rust (line 30) | pub unsafe fn _start_rust() -> ! { FILE: 03_hacky_hello_world/src/bsp/raspberrypi/console.rs type QEMUOutput (line 15) | struct QEMUOutput; method write_str (line 29) | fn write_str(&mut self, s: &str) -> fmt::Result { function console (line 45) | pub fn console() -> impl console::interface::Write { FILE: 03_hacky_hello_world/src/console.rs function console (line 30) | pub fn console() -> impl interface::Write { FILE: 03_hacky_hello_world/src/main.rs function kernel_init (line 126) | unsafe fn kernel_init() -> ! { FILE: 03_hacky_hello_world/src/panic_wait.rs function panic_prevent_reenter (line 26) | fn panic_prevent_reenter() { function panic (line 44) | fn panic(info: &PanicInfo) -> ! { FILE: 03_hacky_hello_world/src/print.rs function _print (line 15) | pub fn _print(args: fmt::Arguments) { FILE: 04_safe_globals/build.rs function main (line 3) | fn main() { FILE: 04_safe_globals/src/_arch/aarch64/cpu.rs function wait_forever (line 22) | pub fn wait_forever() -> ! { FILE: 04_safe_globals/src/_arch/aarch64/cpu/boot.rs function _start_rust (line 30) | pub unsafe fn _start_rust() -> ! { FILE: 04_safe_globals/src/bsp/raspberrypi/console.rs type QEMUOutputInner (line 17) | struct QEMUOutputInner { method new (line 41) | const fn new() -> QEMUOutputInner { method write_char (line 46) | fn write_char(&mut self, c: char) { method write_str (line 65) | fn write_str(&mut self, s: &str) -> fmt::Result { type QEMUOutput (line 26) | pub struct QEMUOutput { method new (line 85) | pub const fn new() -> QEMUOutput { method write_fmt (line 105) | fn write_fmt(&self, args: core::fmt::Arguments) -> fmt::Result { method chars_written (line 113) | fn chars_written(&self) -> usize { function console (line 93) | pub fn console() -> &'static dyn console::interface::All { FILE: 04_safe_globals/src/console.rs type Write (line 18) | pub trait Write { method write_fmt (line 20) | fn write_fmt(&self, args: fmt::Arguments) -> fmt::Result; type Statistics (line 24) | pub trait Statistics { method chars_written (line 26) | fn chars_written(&self) -> usize { type All (line 32) | pub trait All: Write + Statistics {} function console (line 42) | pub fn console() -> &'static dyn interface::All { FILE: 04_safe_globals/src/main.rs function kernel_init (line 128) | unsafe fn kernel_init() -> ! { FILE: 04_safe_globals/src/panic_wait.rs function panic_prevent_reenter (line 26) | fn panic_prevent_reenter() { function panic (line 44) | fn panic(info: &PanicInfo) -> ! { FILE: 04_safe_globals/src/print.rs function _print (line 15) | pub fn _print(args: fmt::Arguments) { FILE: 04_safe_globals/src/synchronization.rs type Mutex (line 24) | pub trait Mutex { method lock (line 29) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; type NullLock (line 40) | pub struct NullLock function new (line 56) | pub const fn new(data: T) -> Self { type Data (line 68) | type Data = T; function lock (line 70) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { FILE: 05_drivers_gpio_uart/build.rs function main (line 3) | fn main() { FILE: 05_drivers_gpio_uart/src/_arch/aarch64/cpu.rs function spin_for_cycles (line 25) | pub fn spin_for_cycles(n: usize) { function wait_forever (line 33) | pub fn wait_forever() -> ! { FILE: 05_drivers_gpio_uart/src/_arch/aarch64/cpu/boot.rs function _start_rust (line 30) | pub unsafe fn _start_rust() -> ! { FILE: 05_drivers_gpio_uart/src/bsp/device_driver/bcm/bcm2xxx_gpio.rs type Registers (line 109) | type Registers = MMIODerefWrapper; type GPIOInner (line 111) | struct GPIOInner { method new (line 134) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method disable_pud_14_15_bcm2837 (line 142) | fn disable_pud_14_15_bcm2837(&mut self) { method disable_pud_14_15_bcm2711 (line 169) | fn disable_pud_14_15_bcm2711(&mut self) { method map_pl011_uart (line 180) | pub fn map_pl011_uart(&mut self) { type GPIO (line 120) | pub struct GPIO { constant COMPATIBLE (line 200) | pub const COMPATIBLE: &'static str = "BCM GPIO"; method new (line 207) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method map_pl011_uart (line 214) | pub fn map_pl011_uart(&self) { method compatible (line 225) | fn compatible(&self) -> &'static str { FILE: 05_drivers_gpio_uart/src/bsp/device_driver/bcm/bcm2xxx_pl011_uart.rs type Registers (line 162) | type Registers = MMIODerefWrapper; type BlockingMode (line 165) | enum BlockingMode { type PL011UartInner (line 170) | struct PL011UartInner { method new (line 195) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method init (line 220) | pub fn init(&mut self) { method write_char (line 257) | fn write_char(&mut self, c: char) { method flush (line 270) | fn flush(&self) { method read_char_converting (line 278) | fn read_char_converting(&mut self, blocking_mode: BlockingMode) -> Opt... method write_str (line 317) | fn write_str(&mut self, s: &str) -> fmt::Result { type PL011Uart (line 181) | pub struct PL011Uart { constant COMPATIBLE (line 331) | pub const COMPATIBLE: &'static str = "BCM PL011 UART"; method new (line 338) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method compatible (line 351) | fn compatible(&self) -> &'static str { method init (line 355) | unsafe fn init(&self) -> Result<(), &'static str> { method write_char (line 365) | fn write_char(&self, c: char) { method write_fmt (line 369) | fn write_fmt(&self, args: core::fmt::Arguments) -> fmt::Result { method flush (line 375) | fn flush(&self) { method read_char (line 382) | fn read_char(&self) -> char { method clear_rx (line 387) | fn clear_rx(&self) { method chars_written (line 398) | fn chars_written(&self) -> usize { method chars_read (line 402) | fn chars_read(&self) -> usize { FILE: 05_drivers_gpio_uart/src/bsp/device_driver/common.rs type MMIODerefWrapper (line 13) | pub struct MMIODerefWrapper { function new (line 24) | pub const unsafe fn new(start_addr: usize) -> Self { type Target (line 33) | type Target = T; function deref (line 35) | fn deref(&self) -> &Self::Target { FILE: 05_drivers_gpio_uart/src/bsp/raspberrypi.rs function board_name (line 16) | pub fn board_name() -> &'static str { FILE: 05_drivers_gpio_uart/src/bsp/raspberrypi/console.rs function console (line 14) | pub fn console() -> &'static dyn console::interface::All { FILE: 05_drivers_gpio_uart/src/bsp/raspberrypi/driver.rs function post_init_uart (line 24) | fn post_init_uart() -> Result<(), &'static str> { function post_init_gpio (line 31) | fn post_init_gpio() -> Result<(), &'static str> { function driver_uart (line 36) | fn driver_uart() -> Result<(), &'static str> { function driver_gpio (line 44) | fn driver_gpio() -> Result<(), &'static str> { function init (line 60) | pub unsafe fn init() -> Result<(), &'static str> { FILE: 05_drivers_gpio_uart/src/bsp/raspberrypi/memory.rs constant GPIO_OFFSET (line 15) | pub const GPIO_OFFSET: usize = 0x0020_0000; constant UART_OFFSET (line 16) | pub const UART_OFFSET: usize = 0x0020_1000; constant START (line 23) | pub const START: usize = 0x3F00_0000; constant GPIO_START (line 24) | pub const GPIO_START: usize = START + GPIO_OFFSET; constant PL011_UART_START (line 25) | pub const PL011_UART_START: usize = START + UART_OFFSET; constant START (line 33) | pub const START: usize = 0xFE00_0000; constant GPIO_START (line 34) | pub const GPIO_START: usize = START + GPIO_OFFSET; constant PL011_UART_START (line 35) | pub const PL011_UART_START: usize = START + UART_OFFSET; FILE: 05_drivers_gpio_uart/src/console.rs type Write (line 20) | pub trait Write { method write_char (line 22) | fn write_char(&self, c: char); method write_fmt (line 25) | fn write_fmt(&self, args: fmt::Arguments) -> fmt::Result; method flush (line 28) | fn flush(&self); type Read (line 32) | pub trait Read { method read_char (line 34) | fn read_char(&self) -> char { method clear_rx (line 39) | fn clear_rx(&self); type Statistics (line 43) | pub trait Statistics { method chars_written (line 45) | fn chars_written(&self) -> usize { method chars_read (line 50) | fn chars_read(&self) -> usize { type All (line 56) | pub trait All: Write + Read + Statistics {} function register_console (line 72) | pub fn register_console(new_console: &'static (dyn interface::All + Sync... function console (line 79) | pub fn console() -> &'static dyn interface::All { FILE: 05_drivers_gpio_uart/src/console/null_console.rs type NullConsole (line 14) | pub struct NullConsole; method write_char (line 27) | fn write_char(&self, _c: char) {} method write_fmt (line 29) | fn write_fmt(&self, _args: fmt::Arguments) -> fmt::Result { method flush (line 33) | fn flush(&self) {} method clear_rx (line 37) | fn clear_rx(&self) {} FILE: 05_drivers_gpio_uart/src/driver.rs constant NUM_DRIVERS (line 16) | const NUM_DRIVERS: usize = 5; type DriverManagerInner (line 18) | struct DriverManagerInner { method new (line 72) | pub const fn new() -> Self { type DeviceDriver (line 30) | pub trait DeviceDriver { method compatible (line 32) | fn compatible(&self) -> &'static str; method init (line 39) | unsafe fn init(&self) -> Result<(), &'static str> { type DeviceDriverPostInitCallback (line 46) | pub type DeviceDriverPostInitCallback = unsafe fn() -> Result<(), &'stat... type DeviceDriverDescriptor (line 50) | pub struct DeviceDriverDescriptor { method new (line 86) | pub fn new( type DriverManager (line 56) | pub struct DriverManager { method new (line 104) | pub const fn new() -> Self { method register_driver (line 111) | pub fn register_driver(&self, descriptor: DeviceDriverDescriptor) { method for_each_descriptor (line 119) | fn for_each_descriptor<'a>(&'a self, f: impl FnMut(&'a DeviceDriverDes... method init_drivers (line 134) | pub unsafe fn init_drivers(&self) { method enumerate (line 159) | pub fn enumerate(&self) { function driver_manager (line 98) | pub fn driver_manager() -> &'static DriverManager { FILE: 05_drivers_gpio_uart/src/main.rs function kernel_init (line 131) | unsafe fn kernel_init() -> ! { function kernel_main (line 146) | fn kernel_main() -> ! { FILE: 05_drivers_gpio_uart/src/panic_wait.rs function panic_prevent_reenter (line 26) | fn panic_prevent_reenter() { function panic (line 44) | fn panic(info: &PanicInfo) -> ! { FILE: 05_drivers_gpio_uart/src/print.rs function _print (line 15) | pub fn _print(args: fmt::Arguments) { FILE: 05_drivers_gpio_uart/src/synchronization.rs type Mutex (line 24) | pub trait Mutex { method lock (line 29) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; type NullLock (line 40) | pub struct NullLock function new (line 56) | pub const fn new(data: T) -> Self { type Data (line 68) | type Data = T; function lock (line 70) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { FILE: 06_uart_chainloader/build.rs function main (line 3) | fn main() { FILE: 06_uart_chainloader/src/_arch/aarch64/cpu.rs function spin_for_cycles (line 25) | pub fn spin_for_cycles(n: usize) { function wait_forever (line 33) | pub fn wait_forever() -> ! { FILE: 06_uart_chainloader/src/_arch/aarch64/cpu/boot.rs function _start_rust (line 30) | pub unsafe fn _start_rust() -> ! { FILE: 06_uart_chainloader/src/bsp/device_driver/bcm/bcm2xxx_gpio.rs type Registers (line 109) | type Registers = MMIODerefWrapper; type GPIOInner (line 111) | struct GPIOInner { method new (line 134) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method disable_pud_14_15_bcm2837 (line 142) | fn disable_pud_14_15_bcm2837(&mut self) { method disable_pud_14_15_bcm2711 (line 169) | fn disable_pud_14_15_bcm2711(&mut self) { method map_pl011_uart (line 180) | pub fn map_pl011_uart(&mut self) { type GPIO (line 120) | pub struct GPIO { constant COMPATIBLE (line 200) | pub const COMPATIBLE: &'static str = "BCM GPIO"; method new (line 207) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method map_pl011_uart (line 214) | pub fn map_pl011_uart(&self) { method compatible (line 225) | fn compatible(&self) -> &'static str { FILE: 06_uart_chainloader/src/bsp/device_driver/bcm/bcm2xxx_pl011_uart.rs type Registers (line 162) | type Registers = MMIODerefWrapper; type BlockingMode (line 165) | enum BlockingMode { type PL011UartInner (line 170) | struct PL011UartInner { method new (line 195) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method init (line 220) | pub fn init(&mut self) { method write_char (line 257) | fn write_char(&mut self, c: char) { method flush (line 270) | fn flush(&self) { method read_char (line 278) | fn read_char(&mut self, blocking_mode: BlockingMode) -> Option { method write_str (line 312) | fn write_str(&mut self, s: &str) -> fmt::Result { type PL011Uart (line 181) | pub struct PL011Uart { constant COMPATIBLE (line 326) | pub const COMPATIBLE: &'static str = "BCM PL011 UART"; method new (line 333) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method compatible (line 346) | fn compatible(&self) -> &'static str { method init (line 350) | unsafe fn init(&self) -> Result<(), &'static str> { method write_char (line 360) | fn write_char(&self, c: char) { method write_fmt (line 364) | fn write_fmt(&self, args: core::fmt::Arguments) -> fmt::Result { method flush (line 370) | fn flush(&self) { method read_char (line 377) | fn read_char(&self) -> char { method clear_rx (line 382) | fn clear_rx(&self) { method chars_written (line 393) | fn chars_written(&self) -> usize { method chars_read (line 397) | fn chars_read(&self) -> usize { FILE: 06_uart_chainloader/src/bsp/device_driver/common.rs type MMIODerefWrapper (line 13) | pub struct MMIODerefWrapper { function new (line 24) | pub const unsafe fn new(start_addr: usize) -> Self { type Target (line 33) | type Target = T; function deref (line 35) | fn deref(&self) -> &Self::Target { FILE: 06_uart_chainloader/src/bsp/raspberrypi.rs function board_name (line 16) | pub fn board_name() -> &'static str { FILE: 06_uart_chainloader/src/bsp/raspberrypi/driver.rs function post_init_uart (line 24) | fn post_init_uart() -> Result<(), &'static str> { function post_init_gpio (line 31) | fn post_init_gpio() -> Result<(), &'static str> { function driver_uart (line 36) | fn driver_uart() -> Result<(), &'static str> { function driver_gpio (line 44) | fn driver_gpio() -> Result<(), &'static str> { function init (line 60) | pub unsafe fn init() -> Result<(), &'static str> { FILE: 06_uart_chainloader/src/bsp/raspberrypi/memory.rs constant BOARD_DEFAULT_LOAD_ADDRESS (line 14) | pub const BOARD_DEFAULT_LOAD_ADDRESS: usize = 0x8_0000; constant GPIO_OFFSET (line 16) | pub const GPIO_OFFSET: usize = 0x0020_0000; constant UART_OFFSET (line 17) | pub const UART_OFFSET: usize = 0x0020_1000; constant START (line 24) | pub const START: usize = 0x3F00_0000; constant GPIO_START (line 25) | pub const GPIO_START: usize = START + GPIO_OFFSET; constant PL011_UART_START (line 26) | pub const PL011_UART_START: usize = START + UART_OFFSET; constant START (line 34) | pub const START: usize = 0xFE00_0000; constant GPIO_START (line 35) | pub const GPIO_START: usize = START + GPIO_OFFSET; constant PL011_UART_START (line 36) | pub const PL011_UART_START: usize = START + UART_OFFSET; function board_default_load_addr (line 46) | pub fn board_default_load_addr() -> *const u64 { FILE: 06_uart_chainloader/src/console.rs type Write (line 20) | pub trait Write { method write_char (line 22) | fn write_char(&self, c: char); method write_fmt (line 25) | fn write_fmt(&self, args: fmt::Arguments) -> fmt::Result; method flush (line 28) | fn flush(&self); type Read (line 32) | pub trait Read { method read_char (line 34) | fn read_char(&self) -> char { method clear_rx (line 39) | fn clear_rx(&self); type Statistics (line 43) | pub trait Statistics { method chars_written (line 45) | fn chars_written(&self) -> usize { method chars_read (line 50) | fn chars_read(&self) -> usize { type All (line 56) | pub trait All: Write + Read + Statistics {} function register_console (line 72) | pub fn register_console(new_console: &'static (dyn interface::All + Sync... function console (line 79) | pub fn console() -> &'static dyn interface::All { FILE: 06_uart_chainloader/src/console/null_console.rs type NullConsole (line 14) | pub struct NullConsole; method write_char (line 27) | fn write_char(&self, _c: char) {} method write_fmt (line 29) | fn write_fmt(&self, _args: fmt::Arguments) -> fmt::Result { method flush (line 33) | fn flush(&self) {} method clear_rx (line 37) | fn clear_rx(&self) {} FILE: 06_uart_chainloader/src/driver.rs constant NUM_DRIVERS (line 13) | const NUM_DRIVERS: usize = 5; type DriverManagerInner (line 15) | struct DriverManagerInner { method new (line 69) | pub const fn new() -> Self { type DeviceDriver (line 27) | pub trait DeviceDriver { method compatible (line 29) | fn compatible(&self) -> &'static str; method init (line 36) | unsafe fn init(&self) -> Result<(), &'static str> { type DeviceDriverPostInitCallback (line 43) | pub type DeviceDriverPostInitCallback = unsafe fn() -> Result<(), &'stat... type DeviceDriverDescriptor (line 47) | pub struct DeviceDriverDescriptor { method new (line 83) | pub fn new( type DriverManager (line 53) | pub struct DriverManager { method new (line 101) | pub const fn new() -> Self { method register_driver (line 108) | pub fn register_driver(&self, descriptor: DeviceDriverDescriptor) { method for_each_descriptor (line 116) | fn for_each_descriptor<'a>(&'a self, f: impl FnMut(&'a DeviceDriverDes... method init_drivers (line 131) | pub unsafe fn init_drivers(&self) { function driver_manager (line 95) | pub fn driver_manager() -> &'static DriverManager { FILE: 06_uart_chainloader/src/main.rs function kernel_init (line 131) | unsafe fn kernel_init() -> ! { constant MINILOAD_LOGO (line 145) | const MINILOAD_LOGO: &str = r#" function kernel_main (line 153) | fn kernel_main() -> ! { FILE: 06_uart_chainloader/src/panic_wait.rs function panic_prevent_reenter (line 26) | fn panic_prevent_reenter() { function panic (line 44) | fn panic(info: &PanicInfo) -> ! { FILE: 06_uart_chainloader/src/print.rs function _print (line 15) | pub fn _print(args: fmt::Arguments) { FILE: 06_uart_chainloader/src/synchronization.rs type Mutex (line 24) | pub trait Mutex { method lock (line 29) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; type NullLock (line 40) | pub struct NullLock function new (line 56) | pub const fn new(data: T) -> Self { type Data (line 68) | type Data = T; function lock (line 70) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { FILE: 06_uart_chainloader/tests/chainboot_test.rb class PowerTargetRequestTest (line 15) | class PowerTargetRequestTest < SubtestBase method initialize (line 18) | def initialize(qemu_cmd, pty_main) method name (line 24) | def name method run (line 28) | def run(qemu_out, _qemu_in) class ChainbootTest (line 39) | class ChainbootTest < BootTest method initialize (line 42) | def initialize(qemu_cmd, payload_path) method setup (line 53) | def setup method finish (line 66) | def finish FILE: 07_timestamps/build.rs function main (line 3) | fn main() { FILE: 07_timestamps/src/_arch/aarch64/cpu.rs function wait_forever (line 24) | pub fn wait_forever() -> ! { FILE: 07_timestamps/src/_arch/aarch64/cpu/boot.rs function _start_rust (line 30) | pub unsafe fn _start_rust() -> ! { FILE: 07_timestamps/src/_arch/aarch64/time.rs constant NANOSEC_PER_SEC (line 27) | const NANOSEC_PER_SEC: NonZeroU64 = NonZeroU64::new(1_000_000_000).unwra... type GenericTimerCounterValue (line 30) | struct GenericTimerCounterValue(u64); constant MAX (line 55) | pub const MAX: Self = GenericTimerCounterValue(u64::MAX); type Error (line 96) | type Error = &'static str; method try_from (line 98) | fn try_from(duration: Duration) -> Result { function arch_timer_counter_frequency (line 45) | fn arch_timer_counter_frequency() -> NonZeroU32 { type Output (line 59) | type Output = Self; method add (line 61) | fn add(self, other: Self) -> Self { method from (line 67) | fn from(counter_value: GenericTimerCounterValue) -> Self { function max_duration (line 91) | fn max_duration() -> Duration { function read_cntpct (line 121) | fn read_cntpct() -> GenericTimerCounterValue { function resolution (line 134) | pub fn resolution() -> Duration { function uptime (line 141) | pub fn uptime() -> Duration { function spin_for (line 146) | pub fn spin_for(duration: Duration) { FILE: 07_timestamps/src/bsp/device_driver/bcm/bcm2xxx_gpio.rs type Registers (line 109) | type Registers = MMIODerefWrapper; type GPIOInner (line 111) | struct GPIOInner { method new (line 134) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method disable_pud_14_15_bcm2837 (line 142) | fn disable_pud_14_15_bcm2837(&mut self) { method disable_pud_14_15_bcm2711 (line 163) | fn disable_pud_14_15_bcm2711(&mut self) { method map_pl011_uart (line 174) | pub fn map_pl011_uart(&mut self) { type GPIO (line 120) | pub struct GPIO { constant COMPATIBLE (line 194) | pub const COMPATIBLE: &'static str = "BCM GPIO"; method new (line 201) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method map_pl011_uart (line 208) | pub fn map_pl011_uart(&self) { method compatible (line 219) | fn compatible(&self) -> &'static str { FILE: 07_timestamps/src/bsp/device_driver/bcm/bcm2xxx_pl011_uart.rs type Registers (line 162) | type Registers = MMIODerefWrapper; type BlockingMode (line 165) | enum BlockingMode { type PL011UartInner (line 170) | struct PL011UartInner { method new (line 195) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method init (line 220) | pub fn init(&mut self) { method write_char (line 257) | fn write_char(&mut self, c: char) { method flush (line 270) | fn flush(&self) { method read_char_converting (line 278) | fn read_char_converting(&mut self, blocking_mode: BlockingMode) -> Opt... method write_str (line 317) | fn write_str(&mut self, s: &str) -> fmt::Result { type PL011Uart (line 181) | pub struct PL011Uart { constant COMPATIBLE (line 331) | pub const COMPATIBLE: &'static str = "BCM PL011 UART"; method new (line 338) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method compatible (line 351) | fn compatible(&self) -> &'static str { method init (line 355) | unsafe fn init(&self) -> Result<(), &'static str> { method write_char (line 365) | fn write_char(&self, c: char) { method write_fmt (line 369) | fn write_fmt(&self, args: core::fmt::Arguments) -> fmt::Result { method flush (line 375) | fn flush(&self) { method read_char (line 382) | fn read_char(&self) -> char { method clear_rx (line 387) | fn clear_rx(&self) { method chars_written (line 398) | fn chars_written(&self) -> usize { method chars_read (line 402) | fn chars_read(&self) -> usize { FILE: 07_timestamps/src/bsp/device_driver/common.rs type MMIODerefWrapper (line 13) | pub struct MMIODerefWrapper { function new (line 24) | pub const unsafe fn new(start_addr: usize) -> Self { type Target (line 33) | type Target = T; function deref (line 35) | fn deref(&self) -> &Self::Target { FILE: 07_timestamps/src/bsp/raspberrypi.rs function board_name (line 16) | pub fn board_name() -> &'static str { FILE: 07_timestamps/src/bsp/raspberrypi/driver.rs function post_init_uart (line 24) | fn post_init_uart() -> Result<(), &'static str> { function post_init_gpio (line 31) | fn post_init_gpio() -> Result<(), &'static str> { function driver_uart (line 36) | fn driver_uart() -> Result<(), &'static str> { function driver_gpio (line 44) | fn driver_gpio() -> Result<(), &'static str> { function init (line 71) | pub unsafe fn init() -> Result<(), &'static str> { FILE: 07_timestamps/src/bsp/raspberrypi/memory.rs constant GPIO_OFFSET (line 15) | pub const GPIO_OFFSET: usize = 0x0020_0000; constant UART_OFFSET (line 16) | pub const UART_OFFSET: usize = 0x0020_1000; constant START (line 23) | pub const START: usize = 0x3F00_0000; constant GPIO_START (line 24) | pub const GPIO_START: usize = START + GPIO_OFFSET; constant PL011_UART_START (line 25) | pub const PL011_UART_START: usize = START + UART_OFFSET; constant START (line 33) | pub const START: usize = 0xFE00_0000; constant GPIO_START (line 34) | pub const GPIO_START: usize = START + GPIO_OFFSET; constant PL011_UART_START (line 35) | pub const PL011_UART_START: usize = START + UART_OFFSET; FILE: 07_timestamps/src/console.rs type Write (line 20) | pub trait Write { method write_char (line 22) | fn write_char(&self, c: char); method write_fmt (line 25) | fn write_fmt(&self, args: fmt::Arguments) -> fmt::Result; method flush (line 28) | fn flush(&self); type Read (line 32) | pub trait Read { method read_char (line 34) | fn read_char(&self) -> char { method clear_rx (line 39) | fn clear_rx(&self); type Statistics (line 43) | pub trait Statistics { method chars_written (line 45) | fn chars_written(&self) -> usize { method chars_read (line 50) | fn chars_read(&self) -> usize { type All (line 56) | pub trait All: Write + Read + Statistics {} function register_console (line 72) | pub fn register_console(new_console: &'static (dyn interface::All + Sync... function console (line 79) | pub fn console() -> &'static dyn interface::All { FILE: 07_timestamps/src/console/null_console.rs type NullConsole (line 14) | pub struct NullConsole; method write_char (line 27) | fn write_char(&self, _c: char) {} method write_fmt (line 29) | fn write_fmt(&self, _args: fmt::Arguments) -> fmt::Result { method flush (line 33) | fn flush(&self) {} method clear_rx (line 37) | fn clear_rx(&self) {} FILE: 07_timestamps/src/driver.rs constant NUM_DRIVERS (line 16) | const NUM_DRIVERS: usize = 5; type DriverManagerInner (line 18) | struct DriverManagerInner { method new (line 72) | pub const fn new() -> Self { type DeviceDriver (line 30) | pub trait DeviceDriver { method compatible (line 32) | fn compatible(&self) -> &'static str; method init (line 39) | unsafe fn init(&self) -> Result<(), &'static str> { type DeviceDriverPostInitCallback (line 46) | pub type DeviceDriverPostInitCallback = unsafe fn() -> Result<(), &'stat... type DeviceDriverDescriptor (line 50) | pub struct DeviceDriverDescriptor { method new (line 86) | pub fn new( type DriverManager (line 56) | pub struct DriverManager { method new (line 104) | pub const fn new() -> Self { method register_driver (line 111) | pub fn register_driver(&self, descriptor: DeviceDriverDescriptor) { method for_each_descriptor (line 119) | fn for_each_descriptor<'a>(&'a self, f: impl FnMut(&'a DeviceDriverDes... method init_drivers (line 134) | pub unsafe fn init_drivers(&self) { method enumerate (line 159) | pub fn enumerate(&self) { function driver_manager (line 98) | pub fn driver_manager() -> &'static DriverManager { FILE: 07_timestamps/src/main.rs function kernel_init (line 135) | unsafe fn kernel_init() -> ! { function kernel_main (line 150) | fn kernel_main() -> ! { FILE: 07_timestamps/src/panic_wait.rs function panic_prevent_reenter (line 26) | fn panic_prevent_reenter() { function panic (line 44) | fn panic(info: &PanicInfo) -> ! { FILE: 07_timestamps/src/print.rs function _print (line 15) | pub fn _print(args: fmt::Arguments) { FILE: 07_timestamps/src/synchronization.rs type Mutex (line 24) | pub trait Mutex { method lock (line 29) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; type NullLock (line 40) | pub struct NullLock function new (line 56) | pub const fn new(data: T) -> Self { type Data (line 68) | type Data = T; function lock (line 70) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { FILE: 07_timestamps/src/time.rs type TimeManager (line 18) | pub struct TimeManager; method new (line 37) | pub const fn new() -> Self { method resolution (line 42) | pub fn resolution(&self) -> Duration { method uptime (line 49) | pub fn uptime(&self) -> Duration { method spin_for (line 54) | pub fn spin_for(&self, duration: Duration) { function time_manager (line 31) | pub fn time_manager() -> &'static TimeManager { FILE: 08_hw_debug_JTAG/build.rs function main (line 3) | fn main() { FILE: 08_hw_debug_JTAG/src/_arch/aarch64/cpu.rs function wait_forever (line 24) | pub fn wait_forever() -> ! { FILE: 08_hw_debug_JTAG/src/_arch/aarch64/cpu/boot.rs function _start_rust (line 30) | pub unsafe fn _start_rust() -> ! { FILE: 08_hw_debug_JTAG/src/_arch/aarch64/time.rs constant NANOSEC_PER_SEC (line 27) | const NANOSEC_PER_SEC: NonZeroU64 = NonZeroU64::new(1_000_000_000).unwra... type GenericTimerCounterValue (line 30) | struct GenericTimerCounterValue(u64); constant MAX (line 55) | pub const MAX: Self = GenericTimerCounterValue(u64::MAX); type Error (line 96) | type Error = &'static str; method try_from (line 98) | fn try_from(duration: Duration) -> Result { function arch_timer_counter_frequency (line 45) | fn arch_timer_counter_frequency() -> NonZeroU32 { type Output (line 59) | type Output = Self; method add (line 61) | fn add(self, other: Self) -> Self { method from (line 67) | fn from(counter_value: GenericTimerCounterValue) -> Self { function max_duration (line 91) | fn max_duration() -> Duration { function read_cntpct (line 121) | fn read_cntpct() -> GenericTimerCounterValue { function resolution (line 134) | pub fn resolution() -> Duration { function uptime (line 141) | pub fn uptime() -> Duration { function spin_for (line 146) | pub fn spin_for(duration: Duration) { FILE: 08_hw_debug_JTAG/src/bsp/device_driver/bcm/bcm2xxx_gpio.rs type Registers (line 109) | type Registers = MMIODerefWrapper; type GPIOInner (line 111) | struct GPIOInner { method new (line 134) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method disable_pud_14_15_bcm2837 (line 142) | fn disable_pud_14_15_bcm2837(&mut self) { method disable_pud_14_15_bcm2711 (line 163) | fn disable_pud_14_15_bcm2711(&mut self) { method map_pl011_uart (line 174) | pub fn map_pl011_uart(&mut self) { type GPIO (line 120) | pub struct GPIO { constant COMPATIBLE (line 194) | pub const COMPATIBLE: &'static str = "BCM GPIO"; method new (line 201) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method map_pl011_uart (line 208) | pub fn map_pl011_uart(&self) { method compatible (line 219) | fn compatible(&self) -> &'static str { FILE: 08_hw_debug_JTAG/src/bsp/device_driver/bcm/bcm2xxx_pl011_uart.rs type Registers (line 162) | type Registers = MMIODerefWrapper; type BlockingMode (line 165) | enum BlockingMode { type PL011UartInner (line 170) | struct PL011UartInner { method new (line 195) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method init (line 220) | pub fn init(&mut self) { method write_char (line 257) | fn write_char(&mut self, c: char) { method flush (line 270) | fn flush(&self) { method read_char_converting (line 278) | fn read_char_converting(&mut self, blocking_mode: BlockingMode) -> Opt... method write_str (line 317) | fn write_str(&mut self, s: &str) -> fmt::Result { type PL011Uart (line 181) | pub struct PL011Uart { constant COMPATIBLE (line 331) | pub const COMPATIBLE: &'static str = "BCM PL011 UART"; method new (line 338) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method compatible (line 351) | fn compatible(&self) -> &'static str { method init (line 355) | unsafe fn init(&self) -> Result<(), &'static str> { method write_char (line 365) | fn write_char(&self, c: char) { method write_fmt (line 369) | fn write_fmt(&self, args: core::fmt::Arguments) -> fmt::Result { method flush (line 375) | fn flush(&self) { method read_char (line 382) | fn read_char(&self) -> char { method clear_rx (line 387) | fn clear_rx(&self) { method chars_written (line 398) | fn chars_written(&self) -> usize { method chars_read (line 402) | fn chars_read(&self) -> usize { FILE: 08_hw_debug_JTAG/src/bsp/device_driver/common.rs type MMIODerefWrapper (line 13) | pub struct MMIODerefWrapper { function new (line 24) | pub const unsafe fn new(start_addr: usize) -> Self { type Target (line 33) | type Target = T; function deref (line 35) | fn deref(&self) -> &Self::Target { FILE: 08_hw_debug_JTAG/src/bsp/raspberrypi.rs function board_name (line 16) | pub fn board_name() -> &'static str { FILE: 08_hw_debug_JTAG/src/bsp/raspberrypi/driver.rs function post_init_uart (line 24) | fn post_init_uart() -> Result<(), &'static str> { function post_init_gpio (line 31) | fn post_init_gpio() -> Result<(), &'static str> { function driver_uart (line 36) | fn driver_uart() -> Result<(), &'static str> { function driver_gpio (line 44) | fn driver_gpio() -> Result<(), &'static str> { function init (line 60) | pub unsafe fn init() -> Result<(), &'static str> { FILE: 08_hw_debug_JTAG/src/bsp/raspberrypi/memory.rs constant GPIO_OFFSET (line 15) | pub const GPIO_OFFSET: usize = 0x0020_0000; constant UART_OFFSET (line 16) | pub const UART_OFFSET: usize = 0x0020_1000; constant START (line 23) | pub const START: usize = 0x3F00_0000; constant GPIO_START (line 24) | pub const GPIO_START: usize = START + GPIO_OFFSET; constant PL011_UART_START (line 25) | pub const PL011_UART_START: usize = START + UART_OFFSET; constant START (line 33) | pub const START: usize = 0xFE00_0000; constant GPIO_START (line 34) | pub const GPIO_START: usize = START + GPIO_OFFSET; constant PL011_UART_START (line 35) | pub const PL011_UART_START: usize = START + UART_OFFSET; FILE: 08_hw_debug_JTAG/src/console.rs type Write (line 20) | pub trait Write { method write_char (line 22) | fn write_char(&self, c: char); method write_fmt (line 25) | fn write_fmt(&self, args: fmt::Arguments) -> fmt::Result; method flush (line 28) | fn flush(&self); type Read (line 32) | pub trait Read { method read_char (line 34) | fn read_char(&self) -> char { method clear_rx (line 39) | fn clear_rx(&self); type Statistics (line 43) | pub trait Statistics { method chars_written (line 45) | fn chars_written(&self) -> usize { method chars_read (line 50) | fn chars_read(&self) -> usize { type All (line 56) | pub trait All: Write + Read + Statistics {} function register_console (line 72) | pub fn register_console(new_console: &'static (dyn interface::All + Sync... function console (line 79) | pub fn console() -> &'static dyn interface::All { FILE: 08_hw_debug_JTAG/src/console/null_console.rs type NullConsole (line 14) | pub struct NullConsole; method write_char (line 27) | fn write_char(&self, _c: char) {} method write_fmt (line 29) | fn write_fmt(&self, _args: fmt::Arguments) -> fmt::Result { method flush (line 33) | fn flush(&self) {} method clear_rx (line 37) | fn clear_rx(&self) {} FILE: 08_hw_debug_JTAG/src/driver.rs constant NUM_DRIVERS (line 16) | const NUM_DRIVERS: usize = 5; type DriverManagerInner (line 18) | struct DriverManagerInner { method new (line 72) | pub const fn new() -> Self { type DeviceDriver (line 30) | pub trait DeviceDriver { method compatible (line 32) | fn compatible(&self) -> &'static str; method init (line 39) | unsafe fn init(&self) -> Result<(), &'static str> { type DeviceDriverPostInitCallback (line 46) | pub type DeviceDriverPostInitCallback = unsafe fn() -> Result<(), &'stat... type DeviceDriverDescriptor (line 50) | pub struct DeviceDriverDescriptor { method new (line 86) | pub fn new( type DriverManager (line 56) | pub struct DriverManager { method new (line 104) | pub const fn new() -> Self { method register_driver (line 111) | pub fn register_driver(&self, descriptor: DeviceDriverDescriptor) { method for_each_descriptor (line 119) | fn for_each_descriptor<'a>(&'a self, f: impl FnMut(&'a DeviceDriverDes... method init_drivers (line 134) | pub unsafe fn init_drivers(&self) { method enumerate (line 159) | pub fn enumerate(&self) { function driver_manager (line 98) | pub fn driver_manager() -> &'static DriverManager { FILE: 08_hw_debug_JTAG/src/main.rs function kernel_init (line 135) | unsafe fn kernel_init() -> ! { function kernel_main (line 150) | fn kernel_main() -> ! { FILE: 08_hw_debug_JTAG/src/panic_wait.rs function panic_prevent_reenter (line 26) | fn panic_prevent_reenter() { function panic (line 44) | fn panic(info: &PanicInfo) -> ! { FILE: 08_hw_debug_JTAG/src/print.rs function _print (line 15) | pub fn _print(args: fmt::Arguments) { FILE: 08_hw_debug_JTAG/src/synchronization.rs type Mutex (line 24) | pub trait Mutex { method lock (line 29) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; type NullLock (line 40) | pub struct NullLock function new (line 56) | pub const fn new(data: T) -> Self { type Data (line 68) | type Data = T; function lock (line 70) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { FILE: 08_hw_debug_JTAG/src/time.rs type TimeManager (line 18) | pub struct TimeManager; method new (line 37) | pub const fn new() -> Self { method resolution (line 42) | pub fn resolution(&self) -> Duration { method uptime (line 49) | pub fn uptime(&self) -> Duration { method spin_for (line 54) | pub fn spin_for(&self, duration: Duration) { function time_manager (line 31) | pub fn time_manager() -> &'static TimeManager { FILE: 09_privilege_level/build.rs function main (line 3) | fn main() { FILE: 09_privilege_level/src/_arch/aarch64/cpu.rs function wait_forever (line 24) | pub fn wait_forever() -> ! { FILE: 09_privilege_level/src/_arch/aarch64/cpu/boot.rs function prepare_el2_to_el1_transition (line 36) | unsafe fn prepare_el2_to_el1_transition(phys_boot_core_stack_end_exclusi... function _start_rust (line 78) | pub unsafe extern "C" fn _start_rust(phys_boot_core_stack_end_exclusive_... FILE: 09_privilege_level/src/_arch/aarch64/exception.rs function current_privilege_level (line 23) | pub fn current_privilege_level() -> (PrivilegeLevel, &'static str) { FILE: 09_privilege_level/src/_arch/aarch64/exception/asynchronous.rs type DaifField (line 21) | trait DaifField { method daif_field (line 22) | fn daif_field() -> tock_registers::fields::Field; method daif_field (line 35) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 41) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 47) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 53) | fn daif_field() -> tock_registers::fields::Field { type Debug (line 25) | struct Debug; type SError (line 26) | struct SError; type IRQ (line 27) | struct IRQ; type FIQ (line 28) | struct FIQ; function is_masked (line 58) | fn is_masked() -> bool function print_state (line 71) | pub fn print_state() { FILE: 09_privilege_level/src/_arch/aarch64/time.rs constant NANOSEC_PER_SEC (line 27) | const NANOSEC_PER_SEC: NonZeroU64 = NonZeroU64::new(1_000_000_000).unwra... type GenericTimerCounterValue (line 30) | struct GenericTimerCounterValue(u64); constant MAX (line 55) | pub const MAX: Self = GenericTimerCounterValue(u64::MAX); type Error (line 96) | type Error = &'static str; method try_from (line 98) | fn try_from(duration: Duration) -> Result { function arch_timer_counter_frequency (line 45) | fn arch_timer_counter_frequency() -> NonZeroU32 { type Output (line 59) | type Output = Self; method add (line 61) | fn add(self, other: Self) -> Self { method from (line 67) | fn from(counter_value: GenericTimerCounterValue) -> Self { function max_duration (line 91) | fn max_duration() -> Duration { function read_cntpct (line 121) | fn read_cntpct() -> GenericTimerCounterValue { function resolution (line 134) | pub fn resolution() -> Duration { function uptime (line 141) | pub fn uptime() -> Duration { function spin_for (line 146) | pub fn spin_for(duration: Duration) { FILE: 09_privilege_level/src/bsp/device_driver/bcm/bcm2xxx_gpio.rs type Registers (line 109) | type Registers = MMIODerefWrapper; type GPIOInner (line 111) | struct GPIOInner { method new (line 134) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method disable_pud_14_15_bcm2837 (line 142) | fn disable_pud_14_15_bcm2837(&mut self) { method disable_pud_14_15_bcm2711 (line 163) | fn disable_pud_14_15_bcm2711(&mut self) { method map_pl011_uart (line 174) | pub fn map_pl011_uart(&mut self) { type GPIO (line 120) | pub struct GPIO { constant COMPATIBLE (line 194) | pub const COMPATIBLE: &'static str = "BCM GPIO"; method new (line 201) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method map_pl011_uart (line 208) | pub fn map_pl011_uart(&self) { method compatible (line 219) | fn compatible(&self) -> &'static str { FILE: 09_privilege_level/src/bsp/device_driver/bcm/bcm2xxx_pl011_uart.rs type Registers (line 162) | type Registers = MMIODerefWrapper; type BlockingMode (line 165) | enum BlockingMode { type PL011UartInner (line 170) | struct PL011UartInner { method new (line 195) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method init (line 220) | pub fn init(&mut self) { method write_char (line 257) | fn write_char(&mut self, c: char) { method flush (line 270) | fn flush(&self) { method read_char_converting (line 278) | fn read_char_converting(&mut self, blocking_mode: BlockingMode) -> Opt... method write_str (line 317) | fn write_str(&mut self, s: &str) -> fmt::Result { type PL011Uart (line 181) | pub struct PL011Uart { constant COMPATIBLE (line 331) | pub const COMPATIBLE: &'static str = "BCM PL011 UART"; method new (line 338) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method compatible (line 351) | fn compatible(&self) -> &'static str { method init (line 355) | unsafe fn init(&self) -> Result<(), &'static str> { method write_char (line 365) | fn write_char(&self, c: char) { method write_fmt (line 369) | fn write_fmt(&self, args: core::fmt::Arguments) -> fmt::Result { method flush (line 375) | fn flush(&self) { method read_char (line 382) | fn read_char(&self) -> char { method clear_rx (line 387) | fn clear_rx(&self) { method chars_written (line 398) | fn chars_written(&self) -> usize { method chars_read (line 402) | fn chars_read(&self) -> usize { FILE: 09_privilege_level/src/bsp/device_driver/common.rs type MMIODerefWrapper (line 13) | pub struct MMIODerefWrapper { function new (line 24) | pub const unsafe fn new(start_addr: usize) -> Self { type Target (line 33) | type Target = T; function deref (line 35) | fn deref(&self) -> &Self::Target { FILE: 09_privilege_level/src/bsp/raspberrypi.rs function board_name (line 16) | pub fn board_name() -> &'static str { FILE: 09_privilege_level/src/bsp/raspberrypi/driver.rs function post_init_uart (line 24) | fn post_init_uart() -> Result<(), &'static str> { function post_init_gpio (line 31) | fn post_init_gpio() -> Result<(), &'static str> { function driver_uart (line 36) | fn driver_uart() -> Result<(), &'static str> { function driver_gpio (line 44) | fn driver_gpio() -> Result<(), &'static str> { function init (line 60) | pub unsafe fn init() -> Result<(), &'static str> { FILE: 09_privilege_level/src/bsp/raspberrypi/memory.rs constant GPIO_OFFSET (line 15) | pub const GPIO_OFFSET: usize = 0x0020_0000; constant UART_OFFSET (line 16) | pub const UART_OFFSET: usize = 0x0020_1000; constant START (line 23) | pub const START: usize = 0x3F00_0000; constant GPIO_START (line 24) | pub const GPIO_START: usize = START + GPIO_OFFSET; constant PL011_UART_START (line 25) | pub const PL011_UART_START: usize = START + UART_OFFSET; constant START (line 33) | pub const START: usize = 0xFE00_0000; constant GPIO_START (line 34) | pub const GPIO_START: usize = START + GPIO_OFFSET; constant PL011_UART_START (line 35) | pub const PL011_UART_START: usize = START + UART_OFFSET; FILE: 09_privilege_level/src/console.rs type Write (line 20) | pub trait Write { method write_char (line 22) | fn write_char(&self, c: char); method write_fmt (line 25) | fn write_fmt(&self, args: fmt::Arguments) -> fmt::Result; method flush (line 28) | fn flush(&self); type Read (line 32) | pub trait Read { method read_char (line 34) | fn read_char(&self) -> char { method clear_rx (line 39) | fn clear_rx(&self); type Statistics (line 43) | pub trait Statistics { method chars_written (line 45) | fn chars_written(&self) -> usize { method chars_read (line 50) | fn chars_read(&self) -> usize { type All (line 56) | pub trait All: Write + Read + Statistics {} function register_console (line 72) | pub fn register_console(new_console: &'static (dyn interface::All + Sync... function console (line 79) | pub fn console() -> &'static dyn interface::All { FILE: 09_privilege_level/src/console/null_console.rs type NullConsole (line 14) | pub struct NullConsole; method write_char (line 27) | fn write_char(&self, _c: char) {} method write_fmt (line 29) | fn write_fmt(&self, _args: fmt::Arguments) -> fmt::Result { method flush (line 33) | fn flush(&self) {} method clear_rx (line 37) | fn clear_rx(&self) {} FILE: 09_privilege_level/src/driver.rs constant NUM_DRIVERS (line 16) | const NUM_DRIVERS: usize = 5; type DriverManagerInner (line 18) | struct DriverManagerInner { method new (line 72) | pub const fn new() -> Self { type DeviceDriver (line 30) | pub trait DeviceDriver { method compatible (line 32) | fn compatible(&self) -> &'static str; method init (line 39) | unsafe fn init(&self) -> Result<(), &'static str> { type DeviceDriverPostInitCallback (line 46) | pub type DeviceDriverPostInitCallback = unsafe fn() -> Result<(), &'stat... type DeviceDriverDescriptor (line 50) | pub struct DeviceDriverDescriptor { method new (line 86) | pub fn new( type DriverManager (line 56) | pub struct DriverManager { method new (line 104) | pub const fn new() -> Self { method register_driver (line 111) | pub fn register_driver(&self, descriptor: DeviceDriverDescriptor) { method for_each_descriptor (line 119) | fn for_each_descriptor<'a>(&'a self, f: impl FnMut(&'a DeviceDriverDes... method init_drivers (line 134) | pub unsafe fn init_drivers(&self) { method enumerate (line 159) | pub fn enumerate(&self) { function driver_manager (line 98) | pub fn driver_manager() -> &'static DriverManager { FILE: 09_privilege_level/src/exception.rs type PrivilegeLevel (line 25) | pub enum PrivilegeLevel { FILE: 09_privilege_level/src/main.rs function kernel_init (line 136) | unsafe fn kernel_init() -> ! { function kernel_main (line 151) | fn kernel_main() -> ! { FILE: 09_privilege_level/src/panic_wait.rs function panic_prevent_reenter (line 26) | fn panic_prevent_reenter() { function panic (line 44) | fn panic(info: &PanicInfo) -> ! { FILE: 09_privilege_level/src/print.rs function _print (line 15) | pub fn _print(args: fmt::Arguments) { FILE: 09_privilege_level/src/synchronization.rs type Mutex (line 24) | pub trait Mutex { method lock (line 29) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; type NullLock (line 40) | pub struct NullLock function new (line 56) | pub const fn new(data: T) -> Self { type Data (line 68) | type Data = T; function lock (line 70) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { FILE: 09_privilege_level/src/time.rs type TimeManager (line 18) | pub struct TimeManager; method new (line 37) | pub const fn new() -> Self { method resolution (line 42) | pub fn resolution(&self) -> Duration { method uptime (line 49) | pub fn uptime(&self) -> Duration { method spin_for (line 54) | pub fn spin_for(&self, duration: Duration) { function time_manager (line 31) | pub fn time_manager() -> &'static TimeManager { FILE: 10_virtual_mem_part1_identity_mapping/build.rs function main (line 3) | fn main() { FILE: 10_virtual_mem_part1_identity_mapping/src/_arch/aarch64/cpu.rs function wait_forever (line 24) | pub fn wait_forever() -> ! { FILE: 10_virtual_mem_part1_identity_mapping/src/_arch/aarch64/cpu/boot.rs function prepare_el2_to_el1_transition (line 36) | unsafe fn prepare_el2_to_el1_transition(phys_boot_core_stack_end_exclusi... function _start_rust (line 78) | pub unsafe extern "C" fn _start_rust(phys_boot_core_stack_end_exclusive_... FILE: 10_virtual_mem_part1_identity_mapping/src/_arch/aarch64/exception.rs function current_privilege_level (line 23) | pub fn current_privilege_level() -> (PrivilegeLevel, &'static str) { FILE: 10_virtual_mem_part1_identity_mapping/src/_arch/aarch64/exception/asynchronous.rs type DaifField (line 21) | trait DaifField { method daif_field (line 22) | fn daif_field() -> tock_registers::fields::Field; method daif_field (line 35) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 41) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 47) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 53) | fn daif_field() -> tock_registers::fields::Field { type Debug (line 25) | struct Debug; type SError (line 26) | struct SError; type IRQ (line 27) | struct IRQ; type FIQ (line 28) | struct FIQ; function is_masked (line 58) | fn is_masked() -> bool function print_state (line 71) | pub fn print_state() { FILE: 10_virtual_mem_part1_identity_mapping/src/_arch/aarch64/memory/mmu.rs type MemoryManagementUnit (line 29) | struct MemoryManagementUnit; method set_up_mair (line 76) | fn set_up_mair(&self) { method configure_translation_control (line 89) | fn configure_translation_control(&self) { method enable_mmu_and_caching (line 122) | unsafe fn enable_mmu_and_caching(&self) -> Result<(), MMUEnableError> { method is_enabled (line 162) | fn is_enabled(&self) -> bool { type Granule512MiB (line 35) | pub type Granule512MiB = TranslationGranule<{ 512 * 1024 * 1024 }>; type Granule64KiB (line 36) | pub type Granule64KiB = TranslationGranule<{ 64 * 1024 }>; constant DEVICE (line 41) | pub const DEVICE: u64 = 0; constant NORMAL (line 42) | pub const NORMAL: u64 = 1; function arch_address_space_size_sanity_checks (line 64) | pub const fn arch_address_space_size_sanity_checks() { function mmu (line 112) | pub fn mmu() -> &'static impl memory::mmu::interface::MMU { FILE: 10_virtual_mem_part1_identity_mapping/src/_arch/aarch64/memory/mmu/translation_table.rs type TableDescriptor (line 110) | struct TableDescriptor { method new_zeroed (line 168) | pub const fn new_zeroed() -> Self { method from_next_lvl_table_addr (line 173) | pub fn from_next_lvl_table_addr(phys_next_lvl_table_addr: usize) -> Se... type PageDescriptor (line 119) | struct PageDescriptor { method new_zeroed (line 228) | pub const fn new_zeroed() -> Self { method from_output_addr (line 233) | pub fn from_output_addr(phys_output_addr: usize, attribute_fields: &At... type StartAddr (line 123) | trait StartAddr { method phys_start_addr_u64 (line 124) | fn phys_start_addr_u64(&self) -> u64; method phys_start_addr_usize (line 125) | fn phys_start_addr_usize(&self) -> usize; method phys_start_addr_u64 (line 155) | fn phys_start_addr_u64(&self) -> u64 { method phys_start_addr_usize (line 159) | fn phys_start_addr_usize(&self) -> usize { constant NUM_LVL2_TABLES (line 128) | const NUM_LVL2_TABLES: usize = bsp::memory::mmu::KernelAddrSpace::SIZE >... type FixedSizeTranslationTable (line 138) | pub struct FixedSizeTranslationTable { type KernelTranslationTable (line 147) | pub type KernelTranslationTable = FixedSizeTranslationTable Self { function new (line 255) | pub const fn new() -> Self { function populate_tt_entries (line 270) | pub unsafe fn populate_tt_entries(&mut self) -> Result<(), &'static str> { function phys_base_address (line 289) | pub fn phys_base_address(&self) -> u64 { FILE: 10_virtual_mem_part1_identity_mapping/src/_arch/aarch64/time.rs constant NANOSEC_PER_SEC (line 27) | const NANOSEC_PER_SEC: NonZeroU64 = NonZeroU64::new(1_000_000_000).unwra... type GenericTimerCounterValue (line 30) | struct GenericTimerCounterValue(u64); constant MAX (line 55) | pub const MAX: Self = GenericTimerCounterValue(u64::MAX); type Error (line 96) | type Error = &'static str; method try_from (line 98) | fn try_from(duration: Duration) -> Result { function arch_timer_counter_frequency (line 45) | fn arch_timer_counter_frequency() -> NonZeroU32 { type Output (line 59) | type Output = Self; method add (line 61) | fn add(self, other: Self) -> Self { method from (line 67) | fn from(counter_value: GenericTimerCounterValue) -> Self { function max_duration (line 91) | fn max_duration() -> Duration { function read_cntpct (line 121) | fn read_cntpct() -> GenericTimerCounterValue { function resolution (line 134) | pub fn resolution() -> Duration { function uptime (line 141) | pub fn uptime() -> Duration { function spin_for (line 146) | pub fn spin_for(duration: Duration) { FILE: 10_virtual_mem_part1_identity_mapping/src/bsp/device_driver/bcm/bcm2xxx_gpio.rs type Registers (line 109) | type Registers = MMIODerefWrapper; type GPIOInner (line 111) | struct GPIOInner { method new (line 134) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method disable_pud_14_15_bcm2837 (line 142) | fn disable_pud_14_15_bcm2837(&mut self) { method disable_pud_14_15_bcm2711 (line 163) | fn disable_pud_14_15_bcm2711(&mut self) { method map_pl011_uart (line 174) | pub fn map_pl011_uart(&mut self) { type GPIO (line 120) | pub struct GPIO { constant COMPATIBLE (line 194) | pub const COMPATIBLE: &'static str = "BCM GPIO"; method new (line 201) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method map_pl011_uart (line 208) | pub fn map_pl011_uart(&self) { method compatible (line 219) | fn compatible(&self) -> &'static str { FILE: 10_virtual_mem_part1_identity_mapping/src/bsp/device_driver/bcm/bcm2xxx_pl011_uart.rs type Registers (line 162) | type Registers = MMIODerefWrapper; type BlockingMode (line 165) | enum BlockingMode { type PL011UartInner (line 170) | struct PL011UartInner { method new (line 195) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method init (line 220) | pub fn init(&mut self) { method write_char (line 257) | fn write_char(&mut self, c: char) { method flush (line 270) | fn flush(&self) { method read_char_converting (line 278) | fn read_char_converting(&mut self, blocking_mode: BlockingMode) -> Opt... method write_str (line 317) | fn write_str(&mut self, s: &str) -> fmt::Result { type PL011Uart (line 181) | pub struct PL011Uart { constant COMPATIBLE (line 331) | pub const COMPATIBLE: &'static str = "BCM PL011 UART"; method new (line 338) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method compatible (line 351) | fn compatible(&self) -> &'static str { method init (line 355) | unsafe fn init(&self) -> Result<(), &'static str> { method write_char (line 365) | fn write_char(&self, c: char) { method write_fmt (line 369) | fn write_fmt(&self, args: core::fmt::Arguments) -> fmt::Result { method flush (line 375) | fn flush(&self) { method read_char (line 382) | fn read_char(&self) -> char { method clear_rx (line 387) | fn clear_rx(&self) { method chars_written (line 398) | fn chars_written(&self) -> usize { method chars_read (line 402) | fn chars_read(&self) -> usize { FILE: 10_virtual_mem_part1_identity_mapping/src/bsp/device_driver/common.rs type MMIODerefWrapper (line 13) | pub struct MMIODerefWrapper { function new (line 24) | pub const unsafe fn new(start_addr: usize) -> Self { type Target (line 33) | type Target = T; function deref (line 35) | fn deref(&self) -> &Self::Target { FILE: 10_virtual_mem_part1_identity_mapping/src/bsp/raspberrypi.rs function board_name (line 16) | pub fn board_name() -> &'static str { FILE: 10_virtual_mem_part1_identity_mapping/src/bsp/raspberrypi/driver.rs function post_init_uart (line 24) | fn post_init_uart() -> Result<(), &'static str> { function post_init_gpio (line 31) | fn post_init_gpio() -> Result<(), &'static str> { function driver_uart (line 36) | fn driver_uart() -> Result<(), &'static str> { function driver_gpio (line 44) | fn driver_gpio() -> Result<(), &'static str> { function init (line 60) | pub unsafe fn init() -> Result<(), &'static str> { FILE: 10_virtual_mem_part1_identity_mapping/src/bsp/raspberrypi/memory.rs constant END_INCLUSIVE (line 66) | pub const END_INCLUSIVE: usize = 0xFFFF_FFFF; constant GPIO_OFFSET (line 68) | pub const GPIO_OFFSET: usize = 0x0020_0000; constant UART_OFFSET (line 69) | pub const UART_OFFSET: usize = 0x0020_1000; constant START (line 76) | pub const START: usize = 0x3F00_0000; constant GPIO_START (line 77) | pub const GPIO_START: usize = START + GPIO_OFFSET; constant PL011_UART_START (line 78) | pub const PL011_UART_START: usize = START + UART_OFFSET; constant END_INCLUSIVE (line 79) | pub const END_INCLUSIVE: usize = 0x4000_FFFF; constant START (line 87) | pub const START: usize = 0xFE00_0000; constant GPIO_START (line 88) | pub const GPIO_START: usize = START + GPIO_OFFSET; constant PL011_UART_START (line 89) | pub const PL011_UART_START: usize = START + UART_OFFSET; constant END_INCLUSIVE (line 90) | pub const END_INCLUSIVE: usize = 0xFF84_FFFF; function code_start (line 104) | fn code_start() -> usize { function code_end_exclusive (line 113) | fn code_end_exclusive() -> usize { FILE: 10_virtual_mem_part1_identity_mapping/src/bsp/raspberrypi/memory/mmu.rs type KernelAddrSpace (line 16) | pub type KernelAddrSpace = AddressSpace<{ memory_map::END_INCLUSIVE + 1 }>; constant NUM_MEM_RANGES (line 18) | const NUM_MEM_RANGES: usize = 3; function code_range_inclusive (line 64) | fn code_range_inclusive() -> RangeInclusive { function remapped_mmio_range_inclusive (line 70) | fn remapped_mmio_range_inclusive() -> RangeInclusive { function mmio_range_inclusive (line 75) | fn mmio_range_inclusive() -> RangeInclusive { function virt_mem_layout (line 84) | pub fn virt_mem_layout() -> &'static KernelVirtualLayout { FILE: 10_virtual_mem_part1_identity_mapping/src/common.rs function size_human_readable_ceil (line 8) | pub const fn size_human_readable_ceil(size: usize) -> (usize, &'static s... FILE: 10_virtual_mem_part1_identity_mapping/src/console.rs type Write (line 20) | pub trait Write { method write_char (line 22) | fn write_char(&self, c: char); method write_fmt (line 25) | fn write_fmt(&self, args: fmt::Arguments) -> fmt::Result; method flush (line 28) | fn flush(&self); type Read (line 32) | pub trait Read { method read_char (line 34) | fn read_char(&self) -> char { method clear_rx (line 39) | fn clear_rx(&self); type Statistics (line 43) | pub trait Statistics { method chars_written (line 45) | fn chars_written(&self) -> usize { method chars_read (line 50) | fn chars_read(&self) -> usize { type All (line 56) | pub trait All: Write + Read + Statistics {} function register_console (line 72) | pub fn register_console(new_console: &'static (dyn interface::All + Sync... function console (line 79) | pub fn console() -> &'static dyn interface::All { FILE: 10_virtual_mem_part1_identity_mapping/src/console/null_console.rs type NullConsole (line 14) | pub struct NullConsole; method write_char (line 27) | fn write_char(&self, _c: char) {} method write_fmt (line 29) | fn write_fmt(&self, _args: fmt::Arguments) -> fmt::Result { method flush (line 33) | fn flush(&self) {} method clear_rx (line 37) | fn clear_rx(&self) {} FILE: 10_virtual_mem_part1_identity_mapping/src/driver.rs constant NUM_DRIVERS (line 16) | const NUM_DRIVERS: usize = 5; type DriverManagerInner (line 18) | struct DriverManagerInner { method new (line 72) | pub const fn new() -> Self { type DeviceDriver (line 30) | pub trait DeviceDriver { method compatible (line 32) | fn compatible(&self) -> &'static str; method init (line 39) | unsafe fn init(&self) -> Result<(), &'static str> { type DeviceDriverPostInitCallback (line 46) | pub type DeviceDriverPostInitCallback = unsafe fn() -> Result<(), &'stat... type DeviceDriverDescriptor (line 50) | pub struct DeviceDriverDescriptor { method new (line 86) | pub fn new( type DriverManager (line 56) | pub struct DriverManager { method new (line 104) | pub const fn new() -> Self { method register_driver (line 111) | pub fn register_driver(&self, descriptor: DeviceDriverDescriptor) { method for_each_descriptor (line 119) | fn for_each_descriptor<'a>(&'a self, f: impl FnMut(&'a DeviceDriverDes... method init_drivers (line 134) | pub unsafe fn init_drivers(&self) { method enumerate (line 159) | pub fn enumerate(&self) { function driver_manager (line 98) | pub fn driver_manager() -> &'static DriverManager { FILE: 10_virtual_mem_part1_identity_mapping/src/exception.rs type PrivilegeLevel (line 25) | pub enum PrivilegeLevel { FILE: 10_virtual_mem_part1_identity_mapping/src/main.rs function kernel_init (line 144) | unsafe fn kernel_init() -> ! { function kernel_main (line 165) | fn kernel_main() -> ! { FILE: 10_virtual_mem_part1_identity_mapping/src/memory/mmu.rs type MMUEnableError (line 38) | pub enum MMUEnableError { method fmt (line 125) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { type MMU (line 48) | pub trait MMU { method enable_mmu_and_caching (line 55) | unsafe fn enable_mmu_and_caching(&self) -> Result<(), MMUEnableError>; method is_enabled (line 58) | fn is_enabled(&self) -> bool; type TranslationGranule (line 63) | pub struct TranslationGranule; type AddressSpace (line 66) | pub struct AddressSpace; type Translation (line 72) | pub enum Translation { type MemAttributes (line 80) | pub enum MemAttributes { type AccessPermissions (line 88) | pub enum AccessPermissions { type AttributeFields (line 96) | pub struct AttributeFields { type TranslationDescriptor (line 104) | pub struct TranslationDescriptor { method fmt (line 176) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type KernelVirtualLayout (line 112) | pub struct KernelVirtualLayout { constant SIZE (line 135) | pub const SIZE: usize = Self::size_checked(); constant SHIFT (line 138) | pub const SHIFT: usize = Self::SIZE.trailing_zeros() as usize; function size_checked (line 140) | const fn size_checked() -> usize { constant SIZE (line 149) | pub const SIZE: usize = Self::size_checked(); constant SIZE_SHIFT (line 152) | pub const SIZE_SHIFT: usize = Self::SIZE.trailing_zeros() as usize; function size_checked (line 154) | const fn size_checked() -> usize { method default (line 165) | fn default() -> AttributeFields { function new (line 211) | pub const fn new(max: usize, layout: [TranslationDescriptor; NUM_SPECIAL... function virt_addr_properties (line 223) | pub fn virt_addr_properties( function print_layout (line 246) | pub fn print_layout(&self) { FILE: 10_virtual_mem_part1_identity_mapping/src/panic_wait.rs function panic_prevent_reenter (line 26) | fn panic_prevent_reenter() { function panic (line 44) | fn panic(info: &PanicInfo) -> ! { FILE: 10_virtual_mem_part1_identity_mapping/src/print.rs function _print (line 15) | pub fn _print(args: fmt::Arguments) { FILE: 10_virtual_mem_part1_identity_mapping/src/synchronization.rs type Mutex (line 24) | pub trait Mutex { method lock (line 29) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; type NullLock (line 40) | pub struct NullLock function new (line 56) | pub const fn new(data: T) -> Self { type Data (line 68) | type Data = T; function lock (line 70) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { FILE: 10_virtual_mem_part1_identity_mapping/src/time.rs type TimeManager (line 18) | pub struct TimeManager; method new (line 37) | pub const fn new() -> Self { method resolution (line 42) | pub fn resolution(&self) -> Duration { method uptime (line 49) | pub fn uptime(&self) -> Duration { method spin_for (line 54) | pub fn spin_for(&self, duration: Duration) { function time_manager (line 31) | pub fn time_manager() -> &'static TimeManager { FILE: 11_exceptions_part1_groundwork/build.rs function main (line 3) | fn main() { FILE: 11_exceptions_part1_groundwork/src/_arch/aarch64/cpu.rs function wait_forever (line 24) | pub fn wait_forever() -> ! { FILE: 11_exceptions_part1_groundwork/src/_arch/aarch64/cpu/boot.rs function prepare_el2_to_el1_transition (line 36) | unsafe fn prepare_el2_to_el1_transition(phys_boot_core_stack_end_exclusi... function _start_rust (line 78) | pub unsafe extern "C" fn _start_rust(phys_boot_core_stack_end_exclusive_... FILE: 11_exceptions_part1_groundwork/src/_arch/aarch64/exception.rs type SpsrEL1 (line 30) | struct SpsrEL1(InMemoryRegister); method fmt (line 160) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type EsrEL1 (line 31) | struct EsrEL1(InMemoryRegister); method exception_class (line 192) | fn exception_class(&self) -> Option { method fmt (line 200) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type ExceptionContext (line 35) | struct ExceptionContext { method exception_class (line 221) | fn exception_class(&self) -> Option { method fault_address_valid (line 226) | fn fault_address_valid(&self) -> bool { method fmt (line 247) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { function default_exception_handler (line 57) | fn default_exception_handler(exc: &ExceptionContext) { function current_el0_synchronous (line 70) | extern "C" fn current_el0_synchronous(_e: &mut ExceptionContext) { function current_el0_irq (line 75) | extern "C" fn current_el0_irq(_e: &mut ExceptionContext) { function current_el0_serror (line 80) | extern "C" fn current_el0_serror(_e: &mut ExceptionContext) { function current_elx_synchronous (line 89) | extern "C" fn current_elx_synchronous(e: &mut ExceptionContext) { function current_elx_irq (line 106) | extern "C" fn current_elx_irq(e: &mut ExceptionContext) { function current_elx_serror (line 111) | extern "C" fn current_elx_serror(e: &mut ExceptionContext) { function lower_aarch64_synchronous (line 120) | extern "C" fn lower_aarch64_synchronous(e: &mut ExceptionContext) { function lower_aarch64_irq (line 125) | extern "C" fn lower_aarch64_irq(e: &mut ExceptionContext) { function lower_aarch64_serror (line 130) | extern "C" fn lower_aarch64_serror(e: &mut ExceptionContext) { function lower_aarch32_synchronous (line 139) | extern "C" fn lower_aarch32_synchronous(e: &mut ExceptionContext) { function lower_aarch32_irq (line 144) | extern "C" fn lower_aarch32_irq(e: &mut ExceptionContext) { function lower_aarch32_serror (line 149) | extern "C" fn lower_aarch32_serror(e: &mut ExceptionContext) { function current_privilege_level (line 278) | pub fn current_privilege_level() -> (PrivilegeLevel, &'static str) { function handling_init (line 296) | pub unsafe fn handling_init() { FILE: 11_exceptions_part1_groundwork/src/_arch/aarch64/exception/asynchronous.rs type DaifField (line 21) | trait DaifField { method daif_field (line 22) | fn daif_field() -> tock_registers::fields::Field; method daif_field (line 35) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 41) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 47) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 53) | fn daif_field() -> tock_registers::fields::Field { type Debug (line 25) | struct Debug; type SError (line 26) | struct SError; type IRQ (line 27) | struct IRQ; type FIQ (line 28) | struct FIQ; function is_masked (line 58) | fn is_masked() -> bool function print_state (line 71) | pub fn print_state() { FILE: 11_exceptions_part1_groundwork/src/_arch/aarch64/memory/mmu.rs type MemoryManagementUnit (line 29) | struct MemoryManagementUnit; method set_up_mair (line 76) | fn set_up_mair(&self) { method configure_translation_control (line 89) | fn configure_translation_control(&self) { method enable_mmu_and_caching (line 122) | unsafe fn enable_mmu_and_caching(&self) -> Result<(), MMUEnableError> { method is_enabled (line 162) | fn is_enabled(&self) -> bool { type Granule512MiB (line 35) | pub type Granule512MiB = TranslationGranule<{ 512 * 1024 * 1024 }>; type Granule64KiB (line 36) | pub type Granule64KiB = TranslationGranule<{ 64 * 1024 }>; constant DEVICE (line 41) | pub const DEVICE: u64 = 0; constant NORMAL (line 42) | pub const NORMAL: u64 = 1; function arch_address_space_size_sanity_checks (line 64) | pub const fn arch_address_space_size_sanity_checks() { function mmu (line 112) | pub fn mmu() -> &'static impl memory::mmu::interface::MMU { FILE: 11_exceptions_part1_groundwork/src/_arch/aarch64/memory/mmu/translation_table.rs type TableDescriptor (line 110) | struct TableDescriptor { method new_zeroed (line 168) | pub const fn new_zeroed() -> Self { method from_next_lvl_table_addr (line 173) | pub fn from_next_lvl_table_addr(phys_next_lvl_table_addr: usize) -> Se... type PageDescriptor (line 119) | struct PageDescriptor { method new_zeroed (line 228) | pub const fn new_zeroed() -> Self { method from_output_addr (line 233) | pub fn from_output_addr(phys_output_addr: usize, attribute_fields: &At... type StartAddr (line 123) | trait StartAddr { method phys_start_addr_u64 (line 124) | fn phys_start_addr_u64(&self) -> u64; method phys_start_addr_usize (line 125) | fn phys_start_addr_usize(&self) -> usize; method phys_start_addr_u64 (line 155) | fn phys_start_addr_u64(&self) -> u64 { method phys_start_addr_usize (line 159) | fn phys_start_addr_usize(&self) -> usize { constant NUM_LVL2_TABLES (line 128) | const NUM_LVL2_TABLES: usize = bsp::memory::mmu::KernelAddrSpace::SIZE >... type FixedSizeTranslationTable (line 138) | pub struct FixedSizeTranslationTable { type KernelTranslationTable (line 147) | pub type KernelTranslationTable = FixedSizeTranslationTable Self { function new (line 255) | pub const fn new() -> Self { function populate_tt_entries (line 270) | pub unsafe fn populate_tt_entries(&mut self) -> Result<(), &'static str> { function phys_base_address (line 289) | pub fn phys_base_address(&self) -> u64 { FILE: 11_exceptions_part1_groundwork/src/_arch/aarch64/time.rs constant NANOSEC_PER_SEC (line 27) | const NANOSEC_PER_SEC: NonZeroU64 = NonZeroU64::new(1_000_000_000).unwra... type GenericTimerCounterValue (line 30) | struct GenericTimerCounterValue(u64); constant MAX (line 55) | pub const MAX: Self = GenericTimerCounterValue(u64::MAX); type Error (line 96) | type Error = &'static str; method try_from (line 98) | fn try_from(duration: Duration) -> Result { function arch_timer_counter_frequency (line 45) | fn arch_timer_counter_frequency() -> NonZeroU32 { type Output (line 59) | type Output = Self; method add (line 61) | fn add(self, other: Self) -> Self { method from (line 67) | fn from(counter_value: GenericTimerCounterValue) -> Self { function max_duration (line 91) | fn max_duration() -> Duration { function read_cntpct (line 121) | fn read_cntpct() -> GenericTimerCounterValue { function resolution (line 134) | pub fn resolution() -> Duration { function uptime (line 141) | pub fn uptime() -> Duration { function spin_for (line 146) | pub fn spin_for(duration: Duration) { FILE: 11_exceptions_part1_groundwork/src/bsp/device_driver/bcm/bcm2xxx_gpio.rs type Registers (line 109) | type Registers = MMIODerefWrapper; type GPIOInner (line 111) | struct GPIOInner { method new (line 134) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method disable_pud_14_15_bcm2837 (line 142) | fn disable_pud_14_15_bcm2837(&mut self) { method disable_pud_14_15_bcm2711 (line 163) | fn disable_pud_14_15_bcm2711(&mut self) { method map_pl011_uart (line 174) | pub fn map_pl011_uart(&mut self) { type GPIO (line 120) | pub struct GPIO { constant COMPATIBLE (line 194) | pub const COMPATIBLE: &'static str = "BCM GPIO"; method new (line 201) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method map_pl011_uart (line 208) | pub fn map_pl011_uart(&self) { method compatible (line 219) | fn compatible(&self) -> &'static str { FILE: 11_exceptions_part1_groundwork/src/bsp/device_driver/bcm/bcm2xxx_pl011_uart.rs type Registers (line 162) | type Registers = MMIODerefWrapper; type BlockingMode (line 165) | enum BlockingMode { type PL011UartInner (line 170) | struct PL011UartInner { method new (line 195) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method init (line 220) | pub fn init(&mut self) { method write_char (line 257) | fn write_char(&mut self, c: char) { method flush (line 270) | fn flush(&self) { method read_char_converting (line 278) | fn read_char_converting(&mut self, blocking_mode: BlockingMode) -> Opt... method write_str (line 317) | fn write_str(&mut self, s: &str) -> fmt::Result { type PL011Uart (line 181) | pub struct PL011Uart { constant COMPATIBLE (line 331) | pub const COMPATIBLE: &'static str = "BCM PL011 UART"; method new (line 338) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method compatible (line 351) | fn compatible(&self) -> &'static str { method init (line 355) | unsafe fn init(&self) -> Result<(), &'static str> { method write_char (line 365) | fn write_char(&self, c: char) { method write_fmt (line 369) | fn write_fmt(&self, args: core::fmt::Arguments) -> fmt::Result { method flush (line 375) | fn flush(&self) { method read_char (line 382) | fn read_char(&self) -> char { method clear_rx (line 387) | fn clear_rx(&self) { method chars_written (line 398) | fn chars_written(&self) -> usize { method chars_read (line 402) | fn chars_read(&self) -> usize { FILE: 11_exceptions_part1_groundwork/src/bsp/device_driver/common.rs type MMIODerefWrapper (line 13) | pub struct MMIODerefWrapper { function new (line 24) | pub const unsafe fn new(start_addr: usize) -> Self { type Target (line 33) | type Target = T; function deref (line 35) | fn deref(&self) -> &Self::Target { FILE: 11_exceptions_part1_groundwork/src/bsp/raspberrypi.rs function board_name (line 16) | pub fn board_name() -> &'static str { FILE: 11_exceptions_part1_groundwork/src/bsp/raspberrypi/driver.rs function post_init_uart (line 24) | fn post_init_uart() -> Result<(), &'static str> { function post_init_gpio (line 31) | fn post_init_gpio() -> Result<(), &'static str> { function driver_uart (line 36) | fn driver_uart() -> Result<(), &'static str> { function driver_gpio (line 44) | fn driver_gpio() -> Result<(), &'static str> { function init (line 60) | pub unsafe fn init() -> Result<(), &'static str> { FILE: 11_exceptions_part1_groundwork/src/bsp/raspberrypi/memory.rs constant END_INCLUSIVE (line 66) | pub const END_INCLUSIVE: usize = 0xFFFF_FFFF; constant GPIO_OFFSET (line 68) | pub const GPIO_OFFSET: usize = 0x0020_0000; constant UART_OFFSET (line 69) | pub const UART_OFFSET: usize = 0x0020_1000; constant START (line 76) | pub const START: usize = 0x3F00_0000; constant GPIO_START (line 77) | pub const GPIO_START: usize = START + GPIO_OFFSET; constant PL011_UART_START (line 78) | pub const PL011_UART_START: usize = START + UART_OFFSET; constant END_INCLUSIVE (line 79) | pub const END_INCLUSIVE: usize = 0x4000_FFFF; constant START (line 87) | pub const START: usize = 0xFE00_0000; constant GPIO_START (line 88) | pub const GPIO_START: usize = START + GPIO_OFFSET; constant PL011_UART_START (line 89) | pub const PL011_UART_START: usize = START + UART_OFFSET; constant END_INCLUSIVE (line 90) | pub const END_INCLUSIVE: usize = 0xFF84_FFFF; function code_start (line 104) | fn code_start() -> usize { function code_end_exclusive (line 113) | fn code_end_exclusive() -> usize { FILE: 11_exceptions_part1_groundwork/src/bsp/raspberrypi/memory/mmu.rs type KernelAddrSpace (line 16) | pub type KernelAddrSpace = AddressSpace<{ memory_map::END_INCLUSIVE + 1 }>; constant NUM_MEM_RANGES (line 18) | const NUM_MEM_RANGES: usize = 2; function code_range_inclusive (line 54) | fn code_range_inclusive() -> RangeInclusive { function mmio_range_inclusive (line 60) | fn mmio_range_inclusive() -> RangeInclusive { function virt_mem_layout (line 69) | pub fn virt_mem_layout() -> &'static KernelVirtualLayout { FILE: 11_exceptions_part1_groundwork/src/common.rs function size_human_readable_ceil (line 8) | pub const fn size_human_readable_ceil(size: usize) -> (usize, &'static s... FILE: 11_exceptions_part1_groundwork/src/console.rs type Write (line 20) | pub trait Write { method write_char (line 22) | fn write_char(&self, c: char); method write_fmt (line 25) | fn write_fmt(&self, args: fmt::Arguments) -> fmt::Result; method flush (line 28) | fn flush(&self); type Read (line 32) | pub trait Read { method read_char (line 34) | fn read_char(&self) -> char { method clear_rx (line 39) | fn clear_rx(&self); type Statistics (line 43) | pub trait Statistics { method chars_written (line 45) | fn chars_written(&self) -> usize { method chars_read (line 50) | fn chars_read(&self) -> usize { type All (line 56) | pub trait All: Write + Read + Statistics {} function register_console (line 72) | pub fn register_console(new_console: &'static (dyn interface::All + Sync... function console (line 79) | pub fn console() -> &'static dyn interface::All { FILE: 11_exceptions_part1_groundwork/src/console/null_console.rs type NullConsole (line 14) | pub struct NullConsole; method write_char (line 27) | fn write_char(&self, _c: char) {} method write_fmt (line 29) | fn write_fmt(&self, _args: fmt::Arguments) -> fmt::Result { method flush (line 33) | fn flush(&self) {} method clear_rx (line 37) | fn clear_rx(&self) {} FILE: 11_exceptions_part1_groundwork/src/driver.rs constant NUM_DRIVERS (line 16) | const NUM_DRIVERS: usize = 5; type DriverManagerInner (line 18) | struct DriverManagerInner { method new (line 72) | pub const fn new() -> Self { type DeviceDriver (line 30) | pub trait DeviceDriver { method compatible (line 32) | fn compatible(&self) -> &'static str; method init (line 39) | unsafe fn init(&self) -> Result<(), &'static str> { type DeviceDriverPostInitCallback (line 46) | pub type DeviceDriverPostInitCallback = unsafe fn() -> Result<(), &'stat... type DeviceDriverDescriptor (line 50) | pub struct DeviceDriverDescriptor { method new (line 86) | pub fn new( type DriverManager (line 56) | pub struct DriverManager { method new (line 104) | pub const fn new() -> Self { method register_driver (line 111) | pub fn register_driver(&self, descriptor: DeviceDriverDescriptor) { method for_each_descriptor (line 119) | fn for_each_descriptor<'a>(&'a self, f: impl FnMut(&'a DeviceDriverDes... method init_drivers (line 134) | pub unsafe fn init_drivers(&self) { method enumerate (line 159) | pub fn enumerate(&self) { function driver_manager (line 98) | pub fn driver_manager() -> &'static DriverManager { FILE: 11_exceptions_part1_groundwork/src/exception.rs type PrivilegeLevel (line 25) | pub enum PrivilegeLevel { FILE: 11_exceptions_part1_groundwork/src/main.rs function kernel_init (line 144) | unsafe fn kernel_init() -> ! { function kernel_main (line 167) | fn kernel_main() -> ! { FILE: 11_exceptions_part1_groundwork/src/memory/mmu.rs type MMUEnableError (line 38) | pub enum MMUEnableError { method fmt (line 125) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { type MMU (line 48) | pub trait MMU { method enable_mmu_and_caching (line 55) | unsafe fn enable_mmu_and_caching(&self) -> Result<(), MMUEnableError>; method is_enabled (line 58) | fn is_enabled(&self) -> bool; type TranslationGranule (line 63) | pub struct TranslationGranule; type AddressSpace (line 66) | pub struct AddressSpace; type Translation (line 72) | pub enum Translation { type MemAttributes (line 80) | pub enum MemAttributes { type AccessPermissions (line 88) | pub enum AccessPermissions { type AttributeFields (line 96) | pub struct AttributeFields { type TranslationDescriptor (line 104) | pub struct TranslationDescriptor { method fmt (line 176) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type KernelVirtualLayout (line 112) | pub struct KernelVirtualLayout { constant SIZE (line 135) | pub const SIZE: usize = Self::size_checked(); constant SHIFT (line 138) | pub const SHIFT: usize = Self::SIZE.trailing_zeros() as usize; function size_checked (line 140) | const fn size_checked() -> usize { constant SIZE (line 149) | pub const SIZE: usize = Self::size_checked(); constant SIZE_SHIFT (line 152) | pub const SIZE_SHIFT: usize = Self::SIZE.trailing_zeros() as usize; function size_checked (line 154) | const fn size_checked() -> usize { method default (line 165) | fn default() -> AttributeFields { function new (line 211) | pub const fn new(max: usize, layout: [TranslationDescriptor; NUM_SPECIAL... function virt_addr_properties (line 223) | pub fn virt_addr_properties( function print_layout (line 246) | pub fn print_layout(&self) { FILE: 11_exceptions_part1_groundwork/src/panic_wait.rs function panic_prevent_reenter (line 26) | fn panic_prevent_reenter() { function panic (line 44) | fn panic(info: &PanicInfo) -> ! { FILE: 11_exceptions_part1_groundwork/src/print.rs function _print (line 15) | pub fn _print(args: fmt::Arguments) { FILE: 11_exceptions_part1_groundwork/src/synchronization.rs type Mutex (line 24) | pub trait Mutex { method lock (line 29) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; type NullLock (line 40) | pub struct NullLock function new (line 56) | pub const fn new(data: T) -> Self { type Data (line 68) | type Data = T; function lock (line 70) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { FILE: 11_exceptions_part1_groundwork/src/time.rs type TimeManager (line 18) | pub struct TimeManager; method new (line 37) | pub const fn new() -> Self { method resolution (line 42) | pub fn resolution(&self) -> Duration { method uptime (line 49) | pub fn uptime(&self) -> Duration { method spin_for (line 54) | pub fn spin_for(&self, duration: Duration) { function time_manager (line 31) | pub fn time_manager() -> &'static TimeManager { FILE: 12_integrated_testing/kernel/build.rs function main (line 3) | fn main() { FILE: 12_integrated_testing/kernel/src/_arch/aarch64/cpu.rs function wait_forever (line 24) | pub fn wait_forever() -> ! { constant QEMU_EXIT_HANDLE (line 37) | const QEMU_EXIT_HANDLE: qemu_exit::AArch64 = qemu_exit::AArch64::new(); function qemu_exit_failure (line 41) | pub fn qemu_exit_failure() -> ! { function qemu_exit_success (line 47) | pub fn qemu_exit_success() -> ! { FILE: 12_integrated_testing/kernel/src/_arch/aarch64/cpu/boot.rs function prepare_el2_to_el1_transition (line 36) | unsafe fn prepare_el2_to_el1_transition(phys_boot_core_stack_end_exclusi... function _start_rust (line 78) | pub unsafe extern "C" fn _start_rust(phys_boot_core_stack_end_exclusive_... FILE: 12_integrated_testing/kernel/src/_arch/aarch64/exception.rs type SpsrEL1 (line 30) | struct SpsrEL1(InMemoryRegister); method fmt (line 159) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type EsrEL1 (line 31) | struct EsrEL1(InMemoryRegister); method exception_class (line 191) | fn exception_class(&self) -> Option { method iss (line 197) | fn iss(&self) -> u64 { method fmt (line 205) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type ExceptionContext (line 35) | struct ExceptionContext { method exception_class (line 226) | fn exception_class(&self) -> Option { method fault_address_valid (line 231) | fn fault_address_valid(&self) -> bool { method fmt (line 252) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { function default_exception_handler (line 57) | fn default_exception_handler(exc: &ExceptionContext) { function current_el0_synchronous (line 70) | extern "C" fn current_el0_synchronous(_e: &mut ExceptionContext) { function current_el0_irq (line 75) | extern "C" fn current_el0_irq(_e: &mut ExceptionContext) { function current_el0_serror (line 80) | extern "C" fn current_el0_serror(_e: &mut ExceptionContext) { function current_elx_synchronous (line 89) | extern "C" fn current_elx_synchronous(e: &mut ExceptionContext) { function current_elx_irq (line 105) | extern "C" fn current_elx_irq(e: &mut ExceptionContext) { function current_elx_serror (line 110) | extern "C" fn current_elx_serror(e: &mut ExceptionContext) { function lower_aarch64_synchronous (line 119) | extern "C" fn lower_aarch64_synchronous(e: &mut ExceptionContext) { function lower_aarch64_irq (line 124) | extern "C" fn lower_aarch64_irq(e: &mut ExceptionContext) { function lower_aarch64_serror (line 129) | extern "C" fn lower_aarch64_serror(e: &mut ExceptionContext) { function lower_aarch32_synchronous (line 138) | extern "C" fn lower_aarch32_synchronous(e: &mut ExceptionContext) { function lower_aarch32_irq (line 143) | extern "C" fn lower_aarch32_irq(e: &mut ExceptionContext) { function lower_aarch32_serror (line 148) | extern "C" fn lower_aarch32_serror(e: &mut ExceptionContext) { function current_privilege_level (line 283) | pub fn current_privilege_level() -> (PrivilegeLevel, &'static str) { function handling_init (line 301) | pub unsafe fn handling_init() { FILE: 12_integrated_testing/kernel/src/_arch/aarch64/exception/asynchronous.rs type DaifField (line 21) | trait DaifField { method daif_field (line 22) | fn daif_field() -> tock_registers::fields::Field; method daif_field (line 35) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 41) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 47) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 53) | fn daif_field() -> tock_registers::fields::Field { type Debug (line 25) | struct Debug; type SError (line 26) | struct SError; type IRQ (line 27) | struct IRQ; type FIQ (line 28) | struct FIQ; function is_masked (line 58) | fn is_masked() -> bool function print_state (line 71) | pub fn print_state() { FILE: 12_integrated_testing/kernel/src/_arch/aarch64/memory/mmu.rs type MemoryManagementUnit (line 29) | struct MemoryManagementUnit; method set_up_mair (line 76) | fn set_up_mair(&self) { method configure_translation_control (line 89) | fn configure_translation_control(&self) { method enable_mmu_and_caching (line 122) | unsafe fn enable_mmu_and_caching(&self) -> Result<(), MMUEnableError> { method is_enabled (line 162) | fn is_enabled(&self) -> bool { type Granule512MiB (line 35) | pub type Granule512MiB = TranslationGranule<{ 512 * 1024 * 1024 }>; type Granule64KiB (line 36) | pub type Granule64KiB = TranslationGranule<{ 64 * 1024 }>; constant DEVICE (line 41) | pub const DEVICE: u64 = 0; constant NORMAL (line 42) | pub const NORMAL: u64 = 1; function arch_address_space_size_sanity_checks (line 64) | pub const fn arch_address_space_size_sanity_checks() { function mmu (line 112) | pub fn mmu() -> &'static impl memory::mmu::interface::MMU { function kernel_tables_in_bss (line 179) | fn kernel_tables_in_bss() { FILE: 12_integrated_testing/kernel/src/_arch/aarch64/memory/mmu/translation_table.rs type TableDescriptor (line 110) | struct TableDescriptor { method new_zeroed (line 168) | pub const fn new_zeroed() -> Self { method from_next_lvl_table_addr (line 173) | pub fn from_next_lvl_table_addr(phys_next_lvl_table_addr: usize) -> Se... type PageDescriptor (line 119) | struct PageDescriptor { method new_zeroed (line 228) | pub const fn new_zeroed() -> Self { method from_output_addr (line 233) | pub fn from_output_addr(phys_output_addr: usize, attribute_fields: &At... type StartAddr (line 123) | trait StartAddr { method phys_start_addr_u64 (line 124) | fn phys_start_addr_u64(&self) -> u64; method phys_start_addr_usize (line 125) | fn phys_start_addr_usize(&self) -> usize; method phys_start_addr_u64 (line 155) | fn phys_start_addr_u64(&self) -> u64 { method phys_start_addr_usize (line 159) | fn phys_start_addr_usize(&self) -> usize { constant NUM_LVL2_TABLES (line 128) | const NUM_LVL2_TABLES: usize = bsp::memory::mmu::KernelAddrSpace::SIZE >... type FixedSizeTranslationTable (line 138) | pub struct FixedSizeTranslationTable { type KernelTranslationTable (line 147) | pub type KernelTranslationTable = FixedSizeTranslationTable Self { function new (line 255) | pub const fn new() -> Self { function populate_tt_entries (line 270) | pub unsafe fn populate_tt_entries(&mut self) -> Result<(), &'static str> { function phys_base_address (line 289) | pub fn phys_base_address(&self) -> u64 { function size_of_tabledescriptor_equals_64_bit (line 305) | fn size_of_tabledescriptor_equals_64_bit() { function size_of_pagedescriptor_equals_64_bit (line 314) | fn size_of_pagedescriptor_equals_64_bit() { FILE: 12_integrated_testing/kernel/src/_arch/aarch64/time.rs constant NANOSEC_PER_SEC (line 27) | const NANOSEC_PER_SEC: NonZeroU64 = NonZeroU64::new(1_000_000_000).unwra... type GenericTimerCounterValue (line 30) | struct GenericTimerCounterValue(u64); constant MAX (line 55) | pub const MAX: Self = GenericTimerCounterValue(u64::MAX); type Error (line 96) | type Error = &'static str; method try_from (line 98) | fn try_from(duration: Duration) -> Result { function arch_timer_counter_frequency (line 45) | fn arch_timer_counter_frequency() -> NonZeroU32 { type Output (line 59) | type Output = Self; method add (line 61) | fn add(self, other: Self) -> Self { method from (line 67) | fn from(counter_value: GenericTimerCounterValue) -> Self { function max_duration (line 91) | fn max_duration() -> Duration { function read_cntpct (line 121) | fn read_cntpct() -> GenericTimerCounterValue { function resolution (line 134) | pub fn resolution() -> Duration { function uptime (line 141) | pub fn uptime() -> Duration { function spin_for (line 146) | pub fn spin_for(duration: Duration) { FILE: 12_integrated_testing/kernel/src/bsp/device_driver/bcm/bcm2xxx_gpio.rs type Registers (line 109) | type Registers = MMIODerefWrapper; type GPIOInner (line 111) | struct GPIOInner { method new (line 134) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method disable_pud_14_15_bcm2837 (line 142) | fn disable_pud_14_15_bcm2837(&mut self) { method disable_pud_14_15_bcm2711 (line 163) | fn disable_pud_14_15_bcm2711(&mut self) { method map_pl011_uart (line 174) | pub fn map_pl011_uart(&mut self) { type GPIO (line 120) | pub struct GPIO { constant COMPATIBLE (line 194) | pub const COMPATIBLE: &'static str = "BCM GPIO"; method new (line 201) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method map_pl011_uart (line 208) | pub fn map_pl011_uart(&self) { method compatible (line 219) | fn compatible(&self) -> &'static str { FILE: 12_integrated_testing/kernel/src/bsp/device_driver/bcm/bcm2xxx_pl011_uart.rs type Registers (line 162) | type Registers = MMIODerefWrapper; type BlockingMode (line 165) | enum BlockingMode { type PL011UartInner (line 170) | struct PL011UartInner { method new (line 195) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method init (line 220) | pub fn init(&mut self) { method write_char (line 257) | fn write_char(&mut self, c: char) { method flush (line 270) | fn flush(&self) { method read_char_converting (line 278) | fn read_char_converting(&mut self, blocking_mode: BlockingMode) -> Opt... method write_str (line 317) | fn write_str(&mut self, s: &str) -> fmt::Result { type PL011Uart (line 181) | pub struct PL011Uart { constant COMPATIBLE (line 331) | pub const COMPATIBLE: &'static str = "BCM PL011 UART"; method new (line 338) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method compatible (line 351) | fn compatible(&self) -> &'static str { method init (line 355) | unsafe fn init(&self) -> Result<(), &'static str> { method write_char (line 365) | fn write_char(&self, c: char) { method write_fmt (line 369) | fn write_fmt(&self, args: core::fmt::Arguments) -> fmt::Result { method flush (line 375) | fn flush(&self) { method read_char (line 382) | fn read_char(&self) -> char { method clear_rx (line 387) | fn clear_rx(&self) { method chars_written (line 398) | fn chars_written(&self) -> usize { method chars_read (line 402) | fn chars_read(&self) -> usize { FILE: 12_integrated_testing/kernel/src/bsp/device_driver/common.rs type MMIODerefWrapper (line 13) | pub struct MMIODerefWrapper { function new (line 24) | pub const unsafe fn new(start_addr: usize) -> Self { type Target (line 33) | type Target = T; function deref (line 35) | fn deref(&self) -> &Self::Target { FILE: 12_integrated_testing/kernel/src/bsp/raspberrypi.rs function board_name (line 16) | pub fn board_name() -> &'static str { FILE: 12_integrated_testing/kernel/src/bsp/raspberrypi/driver.rs function post_init_uart (line 24) | fn post_init_uart() -> Result<(), &'static str> { function post_init_gpio (line 31) | fn post_init_gpio() -> Result<(), &'static str> { function driver_uart (line 36) | fn driver_uart() -> Result<(), &'static str> { function driver_gpio (line 44) | fn driver_gpio() -> Result<(), &'static str> { function init (line 60) | pub unsafe fn init() -> Result<(), &'static str> { function qemu_bring_up_console (line 76) | pub fn qemu_bring_up_console() { FILE: 12_integrated_testing/kernel/src/bsp/raspberrypi/memory.rs constant END_INCLUSIVE (line 66) | pub const END_INCLUSIVE: usize = 0xFFFF_FFFF; constant GPIO_OFFSET (line 68) | pub const GPIO_OFFSET: usize = 0x0020_0000; constant UART_OFFSET (line 69) | pub const UART_OFFSET: usize = 0x0020_1000; constant START (line 76) | pub const START: usize = 0x3F00_0000; constant GPIO_START (line 77) | pub const GPIO_START: usize = START + GPIO_OFFSET; constant PL011_UART_START (line 78) | pub const PL011_UART_START: usize = START + UART_OFFSET; constant END_INCLUSIVE (line 79) | pub const END_INCLUSIVE: usize = 0x4000_FFFF; constant START (line 87) | pub const START: usize = 0xFE00_0000; constant GPIO_START (line 88) | pub const GPIO_START: usize = START + GPIO_OFFSET; constant PL011_UART_START (line 89) | pub const PL011_UART_START: usize = START + UART_OFFSET; constant END_INCLUSIVE (line 90) | pub const END_INCLUSIVE: usize = 0xFF84_FFFF; function code_start (line 104) | fn code_start() -> usize { function code_end_exclusive (line 113) | fn code_end_exclusive() -> usize { FILE: 12_integrated_testing/kernel/src/bsp/raspberrypi/memory/mmu.rs type KernelAddrSpace (line 16) | pub type KernelAddrSpace = AddressSpace<{ memory_map::END_INCLUSIVE + 1 }>; constant NUM_MEM_RANGES (line 18) | const NUM_MEM_RANGES: usize = 2; function code_range_inclusive (line 54) | fn code_range_inclusive() -> RangeInclusive { function mmio_range_inclusive (line 60) | fn mmio_range_inclusive() -> RangeInclusive { function virt_mem_layout (line 69) | pub fn virt_mem_layout() -> &'static KernelVirtualLayout { function virt_mem_layout_sections_are_64KiB_aligned (line 84) | fn virt_mem_layout_sections_are_64KiB_aligned() { function virt_mem_layout_has_no_overlaps (line 99) | fn virt_mem_layout_has_no_overlaps() { FILE: 12_integrated_testing/kernel/src/common.rs function size_human_readable_ceil (line 8) | pub const fn size_human_readable_ceil(size: usize) -> (usize, &'static s... FILE: 12_integrated_testing/kernel/src/console.rs type Write (line 20) | pub trait Write { method write_char (line 22) | fn write_char(&self, c: char); method write_fmt (line 25) | fn write_fmt(&self, args: fmt::Arguments) -> fmt::Result; method flush (line 28) | fn flush(&self); type Read (line 32) | pub trait Read { method read_char (line 34) | fn read_char(&self) -> char { method clear_rx (line 39) | fn clear_rx(&self); type Statistics (line 43) | pub trait Statistics { method chars_written (line 45) | fn chars_written(&self) -> usize { method chars_read (line 50) | fn chars_read(&self) -> usize { type All (line 56) | pub trait All: Write + Read + Statistics {} function register_console (line 72) | pub fn register_console(new_console: &'static (dyn interface::All + Sync... function console (line 79) | pub fn console() -> &'static dyn interface::All { FILE: 12_integrated_testing/kernel/src/console/null_console.rs type NullConsole (line 14) | pub struct NullConsole; method write_char (line 27) | fn write_char(&self, _c: char) {} method write_fmt (line 29) | fn write_fmt(&self, _args: fmt::Arguments) -> fmt::Result { method flush (line 33) | fn flush(&self) {} method clear_rx (line 37) | fn clear_rx(&self) {} FILE: 12_integrated_testing/kernel/src/driver.rs constant NUM_DRIVERS (line 16) | const NUM_DRIVERS: usize = 5; type DriverManagerInner (line 18) | struct DriverManagerInner { method new (line 72) | pub const fn new() -> Self { type DeviceDriver (line 30) | pub trait DeviceDriver { method compatible (line 32) | fn compatible(&self) -> &'static str; method init (line 39) | unsafe fn init(&self) -> Result<(), &'static str> { type DeviceDriverPostInitCallback (line 46) | pub type DeviceDriverPostInitCallback = unsafe fn() -> Result<(), &'stat... type DeviceDriverDescriptor (line 50) | pub struct DeviceDriverDescriptor { method new (line 86) | pub fn new( type DriverManager (line 56) | pub struct DriverManager { method new (line 104) | pub const fn new() -> Self { method register_driver (line 111) | pub fn register_driver(&self, descriptor: DeviceDriverDescriptor) { method for_each_descriptor (line 119) | fn for_each_descriptor<'a>(&'a self, f: impl FnMut(&'a DeviceDriverDes... method init_drivers (line 134) | pub unsafe fn init_drivers(&self) { method enumerate (line 159) | pub fn enumerate(&self) { function driver_manager (line 98) | pub fn driver_manager() -> &'static DriverManager { FILE: 12_integrated_testing/kernel/src/exception.rs type PrivilegeLevel (line 25) | pub enum PrivilegeLevel { function test_runner_executes_in_kernel_mode (line 43) | fn test_runner_executes_in_kernel_mode() { FILE: 12_integrated_testing/kernel/src/lib.rs function version (line 148) | pub fn version() -> &'static str { function kernel_init (line 158) | fn kernel_init() -> !; function test_runner (line 166) | pub fn test_runner(tests: &[&test_types::UnitTest]) { function kernel_init (line 184) | unsafe fn kernel_init() -> ! { FILE: 12_integrated_testing/kernel/src/main.rs function kernel_init (line 28) | unsafe fn kernel_init() -> ! { function kernel_main (line 51) | fn kernel_main() -> ! { FILE: 12_integrated_testing/kernel/src/memory/mmu.rs type MMUEnableError (line 38) | pub enum MMUEnableError { method fmt (line 124) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { type MMU (line 48) | pub trait MMU { method enable_mmu_and_caching (line 55) | unsafe fn enable_mmu_and_caching(&self) -> Result<(), MMUEnableError>; method is_enabled (line 58) | fn is_enabled(&self) -> bool; type TranslationGranule (line 63) | pub struct TranslationGranule; type AddressSpace (line 66) | pub struct AddressSpace; type Translation (line 71) | pub enum Translation { type MemAttributes (line 79) | pub enum MemAttributes { type AccessPermissions (line 87) | pub enum AccessPermissions { type AttributeFields (line 95) | pub struct AttributeFields { type TranslationDescriptor (line 103) | pub struct TranslationDescriptor { method fmt (line 175) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type KernelVirtualLayout (line 111) | pub struct KernelVirtualLayout { constant SIZE (line 134) | pub const SIZE: usize = Self::size_checked(); constant SHIFT (line 137) | pub const SHIFT: usize = Self::SIZE.trailing_zeros() as usize; function size_checked (line 139) | const fn size_checked() -> usize { constant SIZE (line 148) | pub const SIZE: usize = Self::size_checked(); constant SIZE_SHIFT (line 151) | pub const SIZE_SHIFT: usize = Self::SIZE.trailing_zeros() as usize; function size_checked (line 153) | const fn size_checked() -> usize { method default (line 164) | fn default() -> AttributeFields { function new (line 210) | pub const fn new(max: usize, layout: [TranslationDescriptor; NUM_SPECIAL... function virt_addr_properties (line 222) | pub fn virt_addr_properties( function print_layout (line 245) | pub fn print_layout(&self) { function inner (line 254) | pub fn inner(&self) -> &[TranslationDescriptor; NUM_SPECIAL_RANGES] { FILE: 12_integrated_testing/kernel/src/panic_wait.rs function _panic_exit (line 19) | fn _panic_exit() -> ! { function panic_prevent_reenter (line 43) | fn panic_prevent_reenter() { function panic (line 61) | fn panic(info: &PanicInfo) -> ! { FILE: 12_integrated_testing/kernel/src/print.rs function _print (line 15) | pub fn _print(args: fmt::Arguments) { FILE: 12_integrated_testing/kernel/src/synchronization.rs type Mutex (line 24) | pub trait Mutex { method lock (line 29) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; type NullLock (line 40) | pub struct NullLock function new (line 56) | pub const fn new(data: T) -> Self { type Data (line 68) | type Data = T; function lock (line 70) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { FILE: 12_integrated_testing/kernel/src/time.rs type TimeManager (line 18) | pub struct TimeManager; method new (line 37) | pub const fn new() -> Self { method resolution (line 42) | pub fn resolution(&self) -> Duration { method uptime (line 49) | pub fn uptime(&self) -> Duration { method spin_for (line 54) | pub fn spin_for(&self, duration: Duration) { function time_manager (line 31) | pub fn time_manager() -> &'static TimeManager { FILE: 12_integrated_testing/kernel/tests/00_console_sanity.rb class TxRxHandshakeTest (line 10) | class TxRxHandshakeTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, qemu_in) class TxStatisticsTest (line 22) | class TxStatisticsTest < SubtestBase method name (line 23) | def name method run (line 27) | def run(qemu_out, _qemu_in) class RxStatisticsTest (line 33) | class RxStatisticsTest < SubtestBase method name (line 34) | def name method run (line 38) | def run(qemu_out, _qemu_in) function subtest_collection (line 46) | def subtest_collection FILE: 12_integrated_testing/kernel/tests/00_console_sanity.rs function kernel_init (line 17) | unsafe fn kernel_init() -> ! { FILE: 12_integrated_testing/kernel/tests/01_timer_sanity.rs function kernel_init (line 18) | unsafe fn kernel_init() -> ! { function timer_is_counting (line 31) | fn timer_is_counting() { function timer_resolution_is_sufficient (line 37) | fn timer_resolution_is_sufficient() { function spin_accuracy_check_1_second (line 44) | fn spin_accuracy_check_1_second() { FILE: 12_integrated_testing/kernel/tests/02_exception_sync_page_fault.rs function kernel_init (line 23) | unsafe fn kernel_init() -> ! { FILE: 12_integrated_testing/kernel/tests/03_exception_restore_sanity.rb class ExceptionRestoreTest (line 10) | class ExceptionRestoreTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, _qemu_in) function subtest_collection (line 23) | def subtest_collection FILE: 12_integrated_testing/kernel/tests/03_exception_restore_sanity.rs function nested_system_call (line 18) | fn nested_system_call() { function kernel_init (line 32) | unsafe fn kernel_init() -> ! { FILE: 12_integrated_testing/kernel/tests/panic_exit_success/mod.rs function _panic_exit (line 7) | fn _panic_exit() -> ! { FILE: 12_integrated_testing/kernel/tests/panic_wait_forever/mod.rs function _panic_exit (line 7) | fn _panic_exit() -> ! { FILE: 12_integrated_testing/libraries/test-macros/src/lib.rs function kernel_test (line 11) | pub fn kernel_test(_attr: TokenStream, input: TokenStream) -> TokenStream { FILE: 12_integrated_testing/libraries/test-types/src/lib.rs type UnitTest (line 10) | pub struct UnitTest { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/build.rs function main (line 3) | fn main() { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/_arch/aarch64/cpu.rs function wait_forever (line 24) | pub fn wait_forever() -> ! { constant QEMU_EXIT_HANDLE (line 37) | const QEMU_EXIT_HANDLE: qemu_exit::AArch64 = qemu_exit::AArch64::new(); function qemu_exit_failure (line 41) | pub fn qemu_exit_failure() -> ! { function qemu_exit_success (line 47) | pub fn qemu_exit_success() -> ! { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/_arch/aarch64/cpu/boot.rs function prepare_el2_to_el1_transition (line 36) | unsafe fn prepare_el2_to_el1_transition(phys_boot_core_stack_end_exclusi... function _start_rust (line 78) | pub unsafe extern "C" fn _start_rust(phys_boot_core_stack_end_exclusive_... FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/_arch/aarch64/cpu/smp.rs function core_id (line 23) | pub fn core_id() -> T FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/_arch/aarch64/exception.rs type SpsrEL1 (line 31) | struct SpsrEL1(InMemoryRegister); method fmt (line 161) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type EsrEL1 (line 32) | struct EsrEL1(InMemoryRegister); method exception_class (line 193) | fn exception_class(&self) -> Option { method iss (line 199) | fn iss(&self) -> u64 { method fmt (line 207) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type ExceptionContext (line 36) | struct ExceptionContext { method exception_class (line 228) | fn exception_class(&self) -> Option { method fault_address_valid (line 233) | fn fault_address_valid(&self) -> bool { method fmt (line 254) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { function default_exception_handler (line 58) | fn default_exception_handler(exc: &ExceptionContext) { function current_el0_synchronous (line 71) | extern "C" fn current_el0_synchronous(_e: &mut ExceptionContext) { function current_el0_irq (line 76) | extern "C" fn current_el0_irq(_e: &mut ExceptionContext) { function current_el0_serror (line 81) | extern "C" fn current_el0_serror(_e: &mut ExceptionContext) { function current_elx_synchronous (line 90) | extern "C" fn current_elx_synchronous(e: &mut ExceptionContext) { function current_elx_irq (line 106) | extern "C" fn current_elx_irq(_e: &mut ExceptionContext) { function current_elx_serror (line 112) | extern "C" fn current_elx_serror(e: &mut ExceptionContext) { function lower_aarch64_synchronous (line 121) | extern "C" fn lower_aarch64_synchronous(e: &mut ExceptionContext) { function lower_aarch64_irq (line 126) | extern "C" fn lower_aarch64_irq(e: &mut ExceptionContext) { function lower_aarch64_serror (line 131) | extern "C" fn lower_aarch64_serror(e: &mut ExceptionContext) { function lower_aarch32_synchronous (line 140) | extern "C" fn lower_aarch32_synchronous(e: &mut ExceptionContext) { function lower_aarch32_irq (line 145) | extern "C" fn lower_aarch32_irq(e: &mut ExceptionContext) { function lower_aarch32_serror (line 150) | extern "C" fn lower_aarch32_serror(e: &mut ExceptionContext) { function current_privilege_level (line 285) | pub fn current_privilege_level() -> (PrivilegeLevel, &'static str) { function handling_init (line 303) | pub unsafe fn handling_init() { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/_arch/aarch64/exception/asynchronous.rs constant IRQ (line 23) | pub const IRQ: u8 = 0b0010; type DaifField (line 26) | trait DaifField { method daif_field (line 27) | fn daif_field() -> tock_registers::fields::Field; method daif_field (line 40) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 46) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 52) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 58) | fn daif_field() -> tock_registers::fields::Field { type Debug (line 30) | struct Debug; type SError (line 31) | struct SError; type IRQ (line 32) | struct IRQ; type FIQ (line 33) | struct FIQ; function is_masked (line 63) | fn is_masked() -> bool function is_local_irq_masked (line 75) | pub fn is_local_irq_masked() -> bool { function local_irq_unmask (line 87) | pub fn local_irq_unmask() { function local_irq_mask (line 99) | pub fn local_irq_mask() { function local_irq_mask_save (line 111) | pub fn local_irq_mask_save() -> u64 { function local_irq_restore (line 124) | pub fn local_irq_restore(saved: u64) { function print_state (line 130) | pub fn print_state() { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/_arch/aarch64/memory/mmu.rs type MemoryManagementUnit (line 29) | struct MemoryManagementUnit; method set_up_mair (line 76) | fn set_up_mair(&self) { method configure_translation_control (line 89) | fn configure_translation_control(&self) { method enable_mmu_and_caching (line 122) | unsafe fn enable_mmu_and_caching(&self) -> Result<(), MMUEnableError> { method is_enabled (line 162) | fn is_enabled(&self) -> bool { type Granule512MiB (line 35) | pub type Granule512MiB = TranslationGranule<{ 512 * 1024 * 1024 }>; type Granule64KiB (line 36) | pub type Granule64KiB = TranslationGranule<{ 64 * 1024 }>; constant DEVICE (line 41) | pub const DEVICE: u64 = 0; constant NORMAL (line 42) | pub const NORMAL: u64 = 1; function arch_address_space_size_sanity_checks (line 64) | pub const fn arch_address_space_size_sanity_checks() { function mmu (line 112) | pub fn mmu() -> &'static impl memory::mmu::interface::MMU { function kernel_tables_in_bss (line 179) | fn kernel_tables_in_bss() { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/_arch/aarch64/memory/mmu/translation_table.rs type TableDescriptor (line 110) | struct TableDescriptor { method new_zeroed (line 168) | pub const fn new_zeroed() -> Self { method from_next_lvl_table_addr (line 173) | pub fn from_next_lvl_table_addr(phys_next_lvl_table_addr: usize) -> Se... type PageDescriptor (line 119) | struct PageDescriptor { method new_zeroed (line 228) | pub const fn new_zeroed() -> Self { method from_output_addr (line 233) | pub fn from_output_addr(phys_output_addr: usize, attribute_fields: &At... type StartAddr (line 123) | trait StartAddr { method phys_start_addr_u64 (line 124) | fn phys_start_addr_u64(&self) -> u64; method phys_start_addr_usize (line 125) | fn phys_start_addr_usize(&self) -> usize; method phys_start_addr_u64 (line 155) | fn phys_start_addr_u64(&self) -> u64 { method phys_start_addr_usize (line 159) | fn phys_start_addr_usize(&self) -> usize { constant NUM_LVL2_TABLES (line 128) | const NUM_LVL2_TABLES: usize = bsp::memory::mmu::KernelAddrSpace::SIZE >... type FixedSizeTranslationTable (line 138) | pub struct FixedSizeTranslationTable { type KernelTranslationTable (line 147) | pub type KernelTranslationTable = FixedSizeTranslationTable Self { function new (line 255) | pub const fn new() -> Self { function populate_tt_entries (line 270) | pub unsafe fn populate_tt_entries(&mut self) -> Result<(), &'static str> { function phys_base_address (line 289) | pub fn phys_base_address(&self) -> u64 { function size_of_tabledescriptor_equals_64_bit (line 305) | fn size_of_tabledescriptor_equals_64_bit() { function size_of_pagedescriptor_equals_64_bit (line 314) | fn size_of_pagedescriptor_equals_64_bit() { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/_arch/aarch64/time.rs constant NANOSEC_PER_SEC (line 27) | const NANOSEC_PER_SEC: NonZeroU64 = NonZeroU64::new(1_000_000_000).unwra... type GenericTimerCounterValue (line 30) | struct GenericTimerCounterValue(u64); constant MAX (line 55) | pub const MAX: Self = GenericTimerCounterValue(u64::MAX); type Error (line 96) | type Error = &'static str; method try_from (line 98) | fn try_from(duration: Duration) -> Result { function arch_timer_counter_frequency (line 45) | fn arch_timer_counter_frequency() -> NonZeroU32 { type Output (line 59) | type Output = Self; method add (line 61) | fn add(self, other: Self) -> Self { method from (line 67) | fn from(counter_value: GenericTimerCounterValue) -> Self { function max_duration (line 91) | fn max_duration() -> Duration { function read_cntpct (line 121) | fn read_cntpct() -> GenericTimerCounterValue { function resolution (line 134) | pub fn resolution() -> Duration { function uptime (line 141) | pub fn uptime() -> Duration { function spin_for (line 146) | pub fn spin_for(duration: Duration) { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/bsp/device_driver/arm/gicv2.rs type HandlerTable (line 92) | type HandlerTable = [Option; type GICv2 (line 103) | pub struct GICv2 { constant MAX_IRQ_NUMBER (line 119) | const MAX_IRQ_NUMBER: usize = 300; constant COMPATIBLE (line 121) | pub const COMPATIBLE: &'static str = "GICv2 (ARM Generic Interrupt Con... method new (line 128) | pub const unsafe fn new(gicd_mmio_start_addr: usize, gicc_mmio_start_a... type IRQNumberType (line 143) | type IRQNumberType = IRQNumber; method compatible (line 145) | fn compatible(&self) -> &'static str { method init (line 149) | unsafe fn init(&self) -> Result<(), &'static str> { type IRQNumberType (line 162) | type IRQNumberType = IRQNumber; method register_handler (line 164) | fn register_handler( method enable (line 181) | fn enable(&self, irq_number: &Self::IRQNumberType) { method handle_pending_irqs (line 185) | fn handle_pending_irqs<'irq_context>( method print_handler (line 213) | fn print_handler(&self) { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/bsp/device_driver/arm/gicv2/gicc.rs type Registers (line 55) | type Registers = MMIODerefWrapper; type GICC (line 62) | pub struct GICC { method new (line 76) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method priority_accept_all (line 93) | pub fn priority_accept_all(&self) { method enable (line 103) | pub fn enable(&self) { method pending_irq_number (line 116) | pub fn pending_irq_number<'irq_context>( method mark_comleted (line 134) | pub fn mark_comleted<'irq_context>( FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/bsp/device_driver/arm/gicv2/gicd.rs type SharedRegisters (line 71) | type SharedRegisters = MMIODerefWrapper; method num_irqs (line 96) | fn num_irqs(&mut self) -> usize { method implemented_itargets_slice (line 105) | fn implemented_itargets_slice(&mut self) -> &[ReadWrite; type GICD (line 81) | pub struct GICD { method new (line 131) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method local_gic_target_mask (line 144) | fn local_gic_target_mask(&self) -> u32 { method boot_core_init (line 149) | pub fn boot_core_init(&self) { method enable (line 173) | pub fn enable(&self, irq_num: &super::IRQNumber) { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/bsp/device_driver/bcm/bcm2xxx_gpio.rs type Registers (line 109) | type Registers = MMIODerefWrapper; type GPIOInner (line 111) | struct GPIOInner { method new (line 134) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method disable_pud_14_15_bcm2837 (line 142) | fn disable_pud_14_15_bcm2837(&mut self) { method disable_pud_14_15_bcm2711 (line 163) | fn disable_pud_14_15_bcm2711(&mut self) { method map_pl011_uart (line 174) | pub fn map_pl011_uart(&mut self) { type GPIO (line 120) | pub struct GPIO { constant COMPATIBLE (line 194) | pub const COMPATIBLE: &'static str = "BCM GPIO"; method new (line 201) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method map_pl011_uart (line 208) | pub fn map_pl011_uart(&self) { type IRQNumberType (line 219) | type IRQNumberType = IRQNumber; method compatible (line 221) | fn compatible(&self) -> &'static str { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/bsp/device_driver/bcm/bcm2xxx_interrupt_controller.rs type PendingIRQs (line 21) | struct PendingIRQs { method new (line 50) | pub fn new(bitmask: u64) -> Self { type LocalIRQ (line 29) | pub type LocalIRQ = BoundedUsize<{ InterruptController::MAX_LOCAL_IRQ_NU... type PeripheralIRQ (line 30) | pub type PeripheralIRQ = BoundedUsize<{ InterruptController::MAX_PERIPHE... type IRQNumber (line 35) | pub enum IRQNumber { method fmt (line 74) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type InterruptController (line 41) | pub struct InterruptController { constant MAX_LOCAL_IRQ_NUMBER (line 84) | const MAX_LOCAL_IRQ_NUMBER: usize = 3; constant MAX_PERIPHERAL_IRQ_NUMBER (line 85) | const MAX_PERIPHERAL_IRQ_NUMBER: usize = 63; constant COMPATIBLE (line 87) | pub const COMPATIBLE: &'static str = "BCM Interrupt Controller"; method new (line 94) | pub const unsafe fn new(periph_mmio_start_addr: usize) -> Self { type IRQNumberType (line 106) | type IRQNumberType = IRQNumber; method compatible (line 108) | fn compatible(&self) -> &'static str { type IRQNumberType (line 114) | type IRQNumberType = IRQNumber; method register_handler (line 116) | fn register_handler( method enable (line 134) | fn enable(&self, irq: &Self::IRQNumberType) { method handle_pending_irqs (line 141) | fn handle_pending_irqs<'irq_context>( method print_handler (line 149) | fn print_handler(&self) { type Item (line 56) | type Item = usize; method next (line 58) | fn next(&mut self) -> Option { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/bsp/device_driver/bcm/bcm2xxx_interrupt_controller/peripheral_ic.rs type WriteOnlyRegisters (line 48) | type WriteOnlyRegisters = MMIODerefWrapper; type ReadOnlyRegisters (line 51) | type ReadOnlyRegisters = MMIODerefWrapper; type HandlerTable (line 53) | type HandlerTable = [Option Self { method pending_irqs (line 91) | fn pending_irqs(&self) -> PendingIRQs { type IRQNumberType (line 105) | type IRQNumberType = PeripheralIRQ; method register_handler (line 107) | fn register_handler( method enable (line 124) | fn enable(&self, irq: &Self::IRQNumberType) { method handle_pending_irqs (line 140) | fn handle_pending_irqs<'irq_context>( method print_handler (line 157) | fn print_handler(&self) { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/bsp/device_driver/bcm/bcm2xxx_pl011_uart.rs type Registers (line 214) | type Registers = MMIODerefWrapper; type BlockingMode (line 217) | enum BlockingMode { type PL011UartInner (line 222) | struct PL011UartInner { method new (line 247) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method init (line 272) | pub fn init(&mut self) { method write_char (line 317) | fn write_char(&mut self, c: char) { method flush (line 330) | fn flush(&self) { method read_char_converting (line 338) | fn read_char_converting(&mut self, blocking_mode: BlockingMode) -> Opt... method write_str (line 377) | fn write_str(&mut self, s: &str) -> fmt::Result { type PL011Uart (line 233) | pub struct PL011Uart { constant COMPATIBLE (line 391) | pub const COMPATIBLE: &'static str = "BCM PL011 UART"; method new (line 398) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { type IRQNumberType (line 411) | type IRQNumberType = IRQNumber; method compatible (line 413) | fn compatible(&self) -> &'static str { method init (line 417) | unsafe fn init(&self) -> Result<(), &'static str> { method register_and_enable_irq_handler (line 423) | fn register_and_enable_irq_handler( method write_char (line 441) | fn write_char(&self, c: char) { method write_fmt (line 445) | fn write_fmt(&self, args: core::fmt::Arguments) -> fmt::Result { method flush (line 451) | fn flush(&self) { method read_char (line 458) | fn read_char(&self) -> char { method clear_rx (line 463) | fn clear_rx(&self) { method chars_written (line 474) | fn chars_written(&self) -> usize { method chars_read (line 478) | fn chars_read(&self) -> usize { method handle (line 486) | fn handle(&self) -> Result<(), &'static str> { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/bsp/device_driver/common.rs type MMIODerefWrapper (line 13) | pub struct MMIODerefWrapper { type BoundedUsize (line 20) | pub struct BoundedUsize(usize); function new (line 28) | pub const unsafe fn new(start_addr: usize) -> Self { type Target (line 37) | type Target = T; function deref (line 39) | fn deref(&self) -> &Self::Target { constant MAX_INCLUSIVE (line 45) | pub const MAX_INCLUSIVE: usize = MAX_INCLUSIVE; function new (line 48) | pub const fn new(number: usize) -> Self { function get (line 55) | pub const fn get(self) -> usize { function fmt (line 61) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/bsp/raspberrypi.rs function board_name (line 17) | pub fn board_name() -> &'static str { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/bsp/raspberrypi/driver.rs function post_init_uart (line 36) | fn post_init_uart() -> Result<(), &'static str> { function post_init_gpio (line 43) | fn post_init_gpio() -> Result<(), &'static str> { function post_init_interrupt_controller (line 49) | fn post_init_interrupt_controller() -> Result<(), &'static str> { function driver_uart (line 55) | fn driver_uart() -> Result<(), &'static str> { function driver_gpio (line 66) | fn driver_gpio() -> Result<(), &'static str> { function driver_interrupt_controller (line 74) | fn driver_interrupt_controller() -> Result<(), &'static str> { function init (line 94) | pub unsafe fn init() -> Result<(), &'static str> { function qemu_bring_up_console (line 111) | pub fn qemu_bring_up_console() { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/bsp/raspberrypi/exception/asynchronous.rs constant PL011_UART (line 20) | pub const PL011_UART: IRQNumber = IRQNumber::Peripheral(PeripheralIRQ::n... constant PL011_UART (line 27) | pub const PL011_UART: IRQNumber = IRQNumber::new(153); FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/bsp/raspberrypi/memory.rs constant END_INCLUSIVE (line 66) | pub const END_INCLUSIVE: usize = 0xFFFF_FFFF; constant GPIO_OFFSET (line 68) | pub const GPIO_OFFSET: usize = 0x0020_0000; constant UART_OFFSET (line 69) | pub const UART_OFFSET: usize = 0x0020_1000; constant START (line 76) | pub const START: usize = 0x3F00_0000; constant PERIPHERAL_IC_START (line 77) | pub const PERIPHERAL_IC_START: usize = START + 0x0000_B200; constant GPIO_START (line 78) | pub const GPIO_START: usize = START + GPIO_OFFSET; constant PL011_UART_START (line 79) | pub const PL011_UART_START: usize = START + UART_OFFSET; constant END_INCLUSIVE (line 80) | pub const END_INCLUSIVE: usize = 0x4000_FFFF; constant START (line 88) | pub const START: usize = 0xFE00_0000; constant GPIO_START (line 89) | pub const GPIO_START: usize = START + GPIO_OFFSET; constant PL011_UART_START (line 90) | pub const PL011_UART_START: usize = START + UART_OFFSET; constant GICD_START (line 91) | pub const GICD_START: usize = 0xFF84_1000; constant GICC_START (line 92) | pub const GICC_START: usize = 0xFF84_2000; constant END_INCLUSIVE (line 93) | pub const END_INCLUSIVE: usize = 0xFF84_FFFF; function code_start (line 107) | fn code_start() -> usize { function code_end_exclusive (line 116) | fn code_end_exclusive() -> usize { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/bsp/raspberrypi/memory/mmu.rs type KernelAddrSpace (line 16) | pub type KernelAddrSpace = AddressSpace<{ memory_map::END_INCLUSIVE + 1 }>; constant NUM_MEM_RANGES (line 18) | const NUM_MEM_RANGES: usize = 2; function code_range_inclusive (line 54) | fn code_range_inclusive() -> RangeInclusive { function mmio_range_inclusive (line 60) | fn mmio_range_inclusive() -> RangeInclusive { function virt_mem_layout (line 69) | pub fn virt_mem_layout() -> &'static KernelVirtualLayout { function virt_mem_layout_sections_are_64KiB_aligned (line 84) | fn virt_mem_layout_sections_are_64KiB_aligned() { function virt_mem_layout_has_no_overlaps (line 99) | fn virt_mem_layout_has_no_overlaps() { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/common.rs function size_human_readable_ceil (line 8) | pub const fn size_human_readable_ceil(size: usize) -> (usize, &'static s... FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/console.rs type Write (line 20) | pub trait Write { method write_char (line 22) | fn write_char(&self, c: char); method write_fmt (line 25) | fn write_fmt(&self, args: fmt::Arguments) -> fmt::Result; method flush (line 28) | fn flush(&self); type Read (line 32) | pub trait Read { method read_char (line 34) | fn read_char(&self) -> char { method clear_rx (line 39) | fn clear_rx(&self); type Statistics (line 43) | pub trait Statistics { method chars_written (line 45) | fn chars_written(&self) -> usize { method chars_read (line 50) | fn chars_read(&self) -> usize { type All (line 56) | pub trait All: Write + Read + Statistics {} function register_console (line 72) | pub fn register_console(new_console: &'static (dyn interface::All + Sync... function console (line 79) | pub fn console() -> &'static dyn interface::All { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/console/null_console.rs type NullConsole (line 14) | pub struct NullConsole; method write_char (line 27) | fn write_char(&self, _c: char) {} method write_fmt (line 29) | fn write_fmt(&self, _args: fmt::Arguments) -> fmt::Result { method flush (line 33) | fn flush(&self) {} method clear_rx (line 37) | fn clear_rx(&self) {} FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/driver.rs constant NUM_DRIVERS (line 17) | const NUM_DRIVERS: usize = 5; type DriverManagerInner (line 19) | struct DriverManagerInner type DeviceDriver (line 34) | pub trait DeviceDriver { method compatible (line 39) | fn compatible(&self) -> &'static str; method init (line 46) | unsafe fn init(&self) -> Result<(), &'static str> { method register_and_enable_irq_handler (line 54) | fn register_and_enable_irq_handler( type DeviceDriverPostInitCallback (line 68) | pub type DeviceDriverPostInitCallback = unsafe fn() -> Result<(), &'stat... type DeviceDriverDescriptor (line 72) | pub struct DeviceDriverDescriptor type DriverManager (line 82) | pub struct DriverManager function new (line 104) | pub const fn new() -> Self { function new (line 118) | pub fn new( function driver_manager (line 132) | pub fn driver_manager() -> &'static DriverManager Self { function register_driver (line 148) | pub fn register_driver(&self, descriptor: DeviceDriverDescriptor) { function for_each_descriptor (line 156) | fn for_each_descriptor<'a>(&'a self, f: impl FnMut(&'a DeviceDriverDescr... function init_drivers_and_irqs (line 171) | pub unsafe fn init_drivers_and_irqs(&self) { function enumerate (line 213) | pub fn enumerate(&self) { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/exception.rs type PrivilegeLevel (line 25) | pub enum PrivilegeLevel { function test_runner_executes_in_kernel_mode (line 43) | fn test_runner_executes_in_kernel_mode() { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/exception/asynchronous.rs type IRQNumber (line 28) | pub type IRQNumber = bsp::exception::asynchronous::IRQNumber; type IRQHandlerDescriptor (line 32) | pub struct IRQHandlerDescriptor type IRQContext (line 54) | pub struct IRQContext<'irq_context> { type IRQHandler (line 62) | pub trait IRQHandler { method handle (line 64) | fn handle(&self) -> Result<(), &'static str>; type IRQManager (line 71) | pub trait IRQManager { method register_handler (line 76) | fn register_handler( method enable (line 82) | fn enable(&self, irq_number: &Self::IRQNumberType); method handle_pending_irqs (line 92) | fn handle_pending_irqs<'irq_context>( method print_handler (line 98) | fn print_handler(&self) {} function new (line 120) | pub const fn new( function number (line 133) | pub const fn number(&self) -> T { function name (line 138) | pub const fn name(&self) -> &'static str { function handler (line 143) | pub const fn handler(&self) -> &'static (dyn interface::IRQHandler + Syn... function new (line 160) | pub unsafe fn new() -> Self { function exec_with_irq_masked (line 170) | pub fn exec_with_irq_masked(f: impl FnOnce() -> T) -> T { function register_irq_manager (line 179) | pub fn register_irq_manager( function irq_manager (line 188) | pub fn irq_manager() -> &'static dyn interface::IRQManager(&'irq_context self, _ic: &IRQCont... FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/lib.rs function version (line 149) | pub fn version() -> &'static str { function kernel_init (line 159) | fn kernel_init() -> !; function test_runner (line 167) | pub fn test_runner(tests: &[&test_types::UnitTest]) { function kernel_init (line 185) | unsafe fn kernel_init() -> ! { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/main.rs function kernel_init (line 28) | unsafe fn kernel_init() -> ! { function kernel_main (line 56) | fn kernel_main() -> ! { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/memory/mmu.rs type MMUEnableError (line 38) | pub enum MMUEnableError { method fmt (line 124) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { type MMU (line 48) | pub trait MMU { method enable_mmu_and_caching (line 55) | unsafe fn enable_mmu_and_caching(&self) -> Result<(), MMUEnableError>; method is_enabled (line 58) | fn is_enabled(&self) -> bool; type TranslationGranule (line 63) | pub struct TranslationGranule; type AddressSpace (line 66) | pub struct AddressSpace; type Translation (line 71) | pub enum Translation { type MemAttributes (line 79) | pub enum MemAttributes { type AccessPermissions (line 87) | pub enum AccessPermissions { type AttributeFields (line 95) | pub struct AttributeFields { type TranslationDescriptor (line 103) | pub struct TranslationDescriptor { method fmt (line 175) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type KernelVirtualLayout (line 111) | pub struct KernelVirtualLayout { constant SIZE (line 134) | pub const SIZE: usize = Self::size_checked(); constant SHIFT (line 137) | pub const SHIFT: usize = Self::SIZE.trailing_zeros() as usize; function size_checked (line 139) | const fn size_checked() -> usize { constant SIZE (line 148) | pub const SIZE: usize = Self::size_checked(); constant SIZE_SHIFT (line 151) | pub const SIZE_SHIFT: usize = Self::SIZE.trailing_zeros() as usize; function size_checked (line 153) | const fn size_checked() -> usize { method default (line 164) | fn default() -> AttributeFields { function new (line 210) | pub const fn new(max: usize, layout: [TranslationDescriptor; NUM_SPECIAL... function virt_addr_properties (line 222) | pub fn virt_addr_properties( function print_layout (line 245) | pub fn print_layout(&self) { function inner (line 254) | pub fn inner(&self) -> &[TranslationDescriptor; NUM_SPECIAL_RANGES] { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/panic_wait.rs function _panic_exit (line 19) | fn _panic_exit() -> ! { function panic_prevent_reenter (line 43) | fn panic_prevent_reenter() { function panic (line 61) | fn panic(info: &PanicInfo) -> ! { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/print.rs function _print (line 15) | pub fn _print(args: fmt::Arguments) { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/state.rs type State (line 15) | enum State { type StateManager (line 33) | pub struct StateManager(AtomicU8); constant INIT (line 51) | const INIT: u8 = 0; constant SINGLE_CORE_MAIN (line 52) | const SINGLE_CORE_MAIN: u8 = 1; constant MULTI_CORE_MAIN (line 53) | const MULTI_CORE_MAIN: u8 = 2; method new (line 56) | pub const fn new() -> Self { method state (line 61) | fn state(&self) -> State { method is_init (line 73) | pub fn is_init(&self) -> bool { method transition_to_single_core_main (line 78) | pub fn transition_to_single_core_main(&self) { function state_manager (line 46) | pub fn state_manager() -> &'static StateManager { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/synchronization.rs type Mutex (line 24) | pub trait Mutex { method lock (line 29) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; type ReadWriteEx (line 36) | pub trait ReadWriteEx { method write (line 41) | fn write<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; method read (line 44) | fn read<'a, R>(&'a self, f: impl FnOnce(&'a Self::Data) -> R) -> R; type IRQSafeNullLock (line 55) | pub struct IRQSafeNullLock type InitStateLock (line 65) | pub struct InitStateLock function new (line 81) | pub const fn new(data: T) -> Self { function new (line 93) | pub const fn new(data: T) -> Self { type Data (line 106) | type Data = T; function lock (line 108) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { type Data (line 119) | type Data = T; function write (line 121) | fn write<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { function read (line 136) | fn read<'a, R>(&'a self, f: impl FnOnce(&'a Self::Data) -> R) -> R { function init_state_lock_is_transparent (line 154) | fn init_state_lock_is_transparent() { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/src/time.rs type TimeManager (line 18) | pub struct TimeManager; method new (line 37) | pub const fn new() -> Self { method resolution (line 42) | pub fn resolution(&self) -> Duration { method uptime (line 49) | pub fn uptime(&self) -> Duration { method spin_for (line 54) | pub fn spin_for(&self, duration: Duration) { function time_manager (line 31) | pub fn time_manager() -> &'static TimeManager { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/tests/00_console_sanity.rb class TxRxHandshakeTest (line 10) | class TxRxHandshakeTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, qemu_in) class TxStatisticsTest (line 22) | class TxStatisticsTest < SubtestBase method name (line 23) | def name method run (line 27) | def run(qemu_out, _qemu_in) class RxStatisticsTest (line 33) | class RxStatisticsTest < SubtestBase method name (line 34) | def name method run (line 38) | def run(qemu_out, _qemu_in) function subtest_collection (line 46) | def subtest_collection FILE: 13_exceptions_part2_peripheral_IRQs/kernel/tests/00_console_sanity.rs function kernel_init (line 17) | unsafe fn kernel_init() -> ! { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/tests/01_timer_sanity.rs function kernel_init (line 18) | unsafe fn kernel_init() -> ! { function timer_is_counting (line 31) | fn timer_is_counting() { function timer_resolution_is_sufficient (line 37) | fn timer_resolution_is_sufficient() { function spin_accuracy_check_1_second (line 44) | fn spin_accuracy_check_1_second() { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/tests/02_exception_sync_page_fault.rs function kernel_init (line 23) | unsafe fn kernel_init() -> ! { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/tests/03_exception_restore_sanity.rb class ExceptionRestoreTest (line 10) | class ExceptionRestoreTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, _qemu_in) function subtest_collection (line 23) | def subtest_collection FILE: 13_exceptions_part2_peripheral_IRQs/kernel/tests/03_exception_restore_sanity.rs function nested_system_call (line 18) | fn nested_system_call() { function kernel_init (line 32) | unsafe fn kernel_init() -> ! { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/tests/04_exception_irq_sanity.rs function kernel_init (line 17) | unsafe fn kernel_init() -> ! { function local_irq_mask_works (line 30) | fn local_irq_mask_works() { function local_irq_unmask_works (line 43) | fn local_irq_unmask_works() { function local_irq_mask_save_works (line 54) | fn local_irq_mask_save_works() { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/tests/panic_exit_success/mod.rs function _panic_exit (line 7) | fn _panic_exit() -> ! { FILE: 13_exceptions_part2_peripheral_IRQs/kernel/tests/panic_wait_forever/mod.rs function _panic_exit (line 7) | fn _panic_exit() -> ! { FILE: 13_exceptions_part2_peripheral_IRQs/libraries/test-macros/src/lib.rs function kernel_test (line 11) | pub fn kernel_test(_attr: TokenStream, input: TokenStream) -> TokenStream { FILE: 13_exceptions_part2_peripheral_IRQs/libraries/test-types/src/lib.rs type UnitTest (line 10) | pub struct UnitTest { FILE: 14_virtual_mem_part2_mmio_remap/kernel/build.rs function main (line 3) | fn main() { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/_arch/aarch64/cpu.rs function wait_forever (line 24) | pub fn wait_forever() -> ! { constant QEMU_EXIT_HANDLE (line 37) | const QEMU_EXIT_HANDLE: qemu_exit::AArch64 = qemu_exit::AArch64::new(); function qemu_exit_failure (line 41) | pub fn qemu_exit_failure() -> ! { function qemu_exit_success (line 47) | pub fn qemu_exit_success() -> ! { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/_arch/aarch64/cpu/boot.rs function prepare_el2_to_el1_transition (line 36) | unsafe fn prepare_el2_to_el1_transition(phys_boot_core_stack_end_exclusi... function _start_rust (line 78) | pub unsafe extern "C" fn _start_rust(phys_boot_core_stack_end_exclusive_... FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/_arch/aarch64/cpu/smp.rs function core_id (line 23) | pub fn core_id() -> T FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/_arch/aarch64/exception.rs type SpsrEL1 (line 31) | struct SpsrEL1(InMemoryRegister); method fmt (line 161) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type EsrEL1 (line 32) | struct EsrEL1(InMemoryRegister); method exception_class (line 193) | fn exception_class(&self) -> Option { method iss (line 199) | fn iss(&self) -> u64 { method fmt (line 207) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type ExceptionContext (line 36) | struct ExceptionContext { method exception_class (line 228) | fn exception_class(&self) -> Option { method fault_address_valid (line 233) | fn fault_address_valid(&self) -> bool { method fmt (line 254) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { function default_exception_handler (line 58) | fn default_exception_handler(exc: &ExceptionContext) { function current_el0_synchronous (line 71) | extern "C" fn current_el0_synchronous(_e: &mut ExceptionContext) { function current_el0_irq (line 76) | extern "C" fn current_el0_irq(_e: &mut ExceptionContext) { function current_el0_serror (line 81) | extern "C" fn current_el0_serror(_e: &mut ExceptionContext) { function current_elx_synchronous (line 90) | extern "C" fn current_elx_synchronous(e: &mut ExceptionContext) { function current_elx_irq (line 106) | extern "C" fn current_elx_irq(_e: &mut ExceptionContext) { function current_elx_serror (line 112) | extern "C" fn current_elx_serror(e: &mut ExceptionContext) { function lower_aarch64_synchronous (line 121) | extern "C" fn lower_aarch64_synchronous(e: &mut ExceptionContext) { function lower_aarch64_irq (line 126) | extern "C" fn lower_aarch64_irq(e: &mut ExceptionContext) { function lower_aarch64_serror (line 131) | extern "C" fn lower_aarch64_serror(e: &mut ExceptionContext) { function lower_aarch32_synchronous (line 140) | extern "C" fn lower_aarch32_synchronous(e: &mut ExceptionContext) { function lower_aarch32_irq (line 145) | extern "C" fn lower_aarch32_irq(e: &mut ExceptionContext) { function lower_aarch32_serror (line 150) | extern "C" fn lower_aarch32_serror(e: &mut ExceptionContext) { function current_privilege_level (line 285) | pub fn current_privilege_level() -> (PrivilegeLevel, &'static str) { function handling_init (line 303) | pub unsafe fn handling_init() { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/_arch/aarch64/exception/asynchronous.rs constant IRQ (line 23) | pub const IRQ: u8 = 0b0010; type DaifField (line 26) | trait DaifField { method daif_field (line 27) | fn daif_field() -> tock_registers::fields::Field; method daif_field (line 40) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 46) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 52) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 58) | fn daif_field() -> tock_registers::fields::Field { type Debug (line 30) | struct Debug; type SError (line 31) | struct SError; type IRQ (line 32) | struct IRQ; type FIQ (line 33) | struct FIQ; function is_masked (line 63) | fn is_masked() -> bool function is_local_irq_masked (line 75) | pub fn is_local_irq_masked() -> bool { function local_irq_unmask (line 87) | pub fn local_irq_unmask() { function local_irq_mask (line 99) | pub fn local_irq_mask() { function local_irq_mask_save (line 111) | pub fn local_irq_mask_save() -> u64 { function local_irq_restore (line 124) | pub fn local_irq_restore(saved: u64) { function print_state (line 130) | pub fn print_state() { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/_arch/aarch64/memory/mmu.rs type MemoryManagementUnit (line 29) | struct MemoryManagementUnit; method set_up_mair (line 69) | fn set_up_mair(&self) { method configure_translation_control (line 82) | fn configure_translation_control(&self) { method enable_mmu_and_caching (line 115) | unsafe fn enable_mmu_and_caching( method is_enabled (line 153) | fn is_enabled(&self) -> bool { type Granule512MiB (line 35) | pub type Granule512MiB = TranslationGranule<{ 512 * 1024 * 1024 }>; type Granule64KiB (line 36) | pub type Granule64KiB = TranslationGranule<{ 64 * 1024 }>; constant DEVICE (line 41) | pub const DEVICE: u64 = 0; constant NORMAL (line 42) | pub const NORMAL: u64 = 1; function arch_address_space_size_sanity_checks (line 57) | pub const fn arch_address_space_size_sanity_checks() { function mmu (line 105) | pub fn mmu() -> &'static impl memory::mmu::interface::MMU { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/_arch/aarch64/memory/mmu/translation_table.rs type TableDescriptor (line 114) | struct TableDescriptor { method new_zeroed (line 165) | pub const fn new_zeroed() -> Self { method from_next_lvl_table_addr (line 170) | pub fn from_next_lvl_table_addr(phys_next_lvl_table_addr: Address Self { method from_output_page_addr (line 230) | pub fn from_output_page_addr( method is_valid (line 249) | fn is_valid(&self) -> bool { type StartAddr (line 127) | trait StartAddr { method phys_start_addr (line 128) | fn phys_start_addr(&self) -> Address; method phys_start_addr (line 156) | fn phys_start_addr(&self) -> Address { type FixedSizeTranslationTable (line 139) | pub struct FixedSizeTranslationTable { function from (line 188) | fn from(attribute_fields: AttributeFields) -> Self { type TableStartFromBottom (line 264) | type TableStartFromBottom = FixedSizeTranslationTable<{ Self::SIZE >> Gr... function new (line 270) | pub const fn new() -> Self { function lvl2_lvl3_index_from_page_addr (line 285) | fn lvl2_lvl3_index_from_page_addr( function set_page_descriptor_from_page_addr (line 304) | fn set_page_descriptor_from_page_addr( function init (line 328) | fn init(&mut self) { function phys_base_address (line 344) | fn phys_base_address(&self) -> Address { function map_at (line 348) | unsafe fn map_at( type MinSizeTranslationTable (line 382) | pub type MinSizeTranslationTable = FixedSizeTranslationTable<1>; function size_of_tabledescriptor_equals_64_bit (line 391) | fn size_of_tabledescriptor_equals_64_bit() { function size_of_pagedescriptor_equals_64_bit (line 400) | fn size_of_pagedescriptor_equals_64_bit() { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/_arch/aarch64/time.rs constant NANOSEC_PER_SEC (line 27) | const NANOSEC_PER_SEC: NonZeroU64 = NonZeroU64::new(1_000_000_000).unwra... type GenericTimerCounterValue (line 30) | struct GenericTimerCounterValue(u64); constant MAX (line 55) | pub const MAX: Self = GenericTimerCounterValue(u64::MAX); type Error (line 96) | type Error = &'static str; method try_from (line 98) | fn try_from(duration: Duration) -> Result { function arch_timer_counter_frequency (line 45) | fn arch_timer_counter_frequency() -> NonZeroU32 { type Output (line 59) | type Output = Self; method add (line 61) | fn add(self, other: Self) -> Self { method from (line 67) | fn from(counter_value: GenericTimerCounterValue) -> Self { function max_duration (line 91) | fn max_duration() -> Duration { function read_cntpct (line 121) | fn read_cntpct() -> GenericTimerCounterValue { function resolution (line 134) | pub fn resolution() -> Duration { function uptime (line 141) | pub fn uptime() -> Duration { function spin_for (line 146) | pub fn spin_for(duration: Duration) { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/bsp/device_driver/arm/gicv2.rs type HandlerTable (line 94) | type HandlerTable = [Option; type GICv2 (line 105) | pub struct GICv2 { constant MAX_IRQ_NUMBER (line 121) | const MAX_IRQ_NUMBER: usize = 300; constant COMPATIBLE (line 123) | pub const COMPATIBLE: &'static str = "GICv2 (ARM Generic Interrupt Con... method new (line 130) | pub const unsafe fn new( type IRQNumberType (line 148) | type IRQNumberType = IRQNumber; method compatible (line 150) | fn compatible(&self) -> &'static str { method init (line 154) | unsafe fn init(&self) -> Result<(), &'static str> { type IRQNumberType (line 167) | type IRQNumberType = IRQNumber; method register_handler (line 169) | fn register_handler( method enable (line 186) | fn enable(&self, irq_number: &Self::IRQNumberType) { method handle_pending_irqs (line 190) | fn handle_pending_irqs<'irq_context>( method print_handler (line 218) | fn print_handler(&self) { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/bsp/device_driver/arm/gicv2/gicc.rs type Registers (line 59) | type Registers = MMIODerefWrapper; type GICC (line 66) | pub struct GICC { method new (line 80) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method priority_accept_all (line 97) | pub fn priority_accept_all(&self) { method enable (line 107) | pub fn enable(&self) { method pending_irq_number (line 120) | pub fn pending_irq_number<'irq_context>( method mark_comleted (line 138) | pub fn mark_comleted<'irq_context>( FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/bsp/device_driver/arm/gicv2/gicd.rs type SharedRegisters (line 73) | type SharedRegisters = MMIODerefWrapper; method num_irqs (line 98) | fn num_irqs(&mut self) -> usize { method implemented_itargets_slice (line 107) | fn implemented_itargets_slice(&mut self) -> &[ReadWrite; type GICD (line 83) | pub struct GICD { method new (line 133) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method local_gic_target_mask (line 146) | fn local_gic_target_mask(&self) -> u32 { method boot_core_init (line 151) | pub fn boot_core_init(&self) { method enable (line 175) | pub fn enable(&self, irq_num: &super::IRQNumber) { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/bsp/device_driver/bcm/bcm2xxx_gpio.rs type Registers (line 113) | type Registers = MMIODerefWrapper; type GPIOInner (line 115) | struct GPIOInner { method new (line 138) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method disable_pud_14_15_bcm2837 (line 146) | fn disable_pud_14_15_bcm2837(&mut self) { method disable_pud_14_15_bcm2711 (line 167) | fn disable_pud_14_15_bcm2711(&mut self) { method map_pl011_uart (line 178) | pub fn map_pl011_uart(&mut self) { type GPIO (line 124) | pub struct GPIO { constant COMPATIBLE (line 198) | pub const COMPATIBLE: &'static str = "BCM GPIO"; method new (line 205) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method map_pl011_uart (line 212) | pub fn map_pl011_uart(&self) { type IRQNumberType (line 223) | type IRQNumberType = IRQNumber; method compatible (line 225) | fn compatible(&self) -> &'static str { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/bsp/device_driver/bcm/bcm2xxx_interrupt_controller.rs type PendingIRQs (line 22) | struct PendingIRQs { method new (line 51) | pub fn new(bitmask: u64) -> Self { type LocalIRQ (line 30) | pub type LocalIRQ = BoundedUsize<{ InterruptController::MAX_LOCAL_IRQ_NU... type PeripheralIRQ (line 31) | pub type PeripheralIRQ = BoundedUsize<{ InterruptController::MAX_PERIPHE... type IRQNumber (line 36) | pub enum IRQNumber { method fmt (line 75) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type InterruptController (line 42) | pub struct InterruptController { constant MAX_LOCAL_IRQ_NUMBER (line 85) | const MAX_LOCAL_IRQ_NUMBER: usize = 3; constant MAX_PERIPHERAL_IRQ_NUMBER (line 86) | const MAX_PERIPHERAL_IRQ_NUMBER: usize = 63; constant COMPATIBLE (line 88) | pub const COMPATIBLE: &'static str = "BCM Interrupt Controller"; method new (line 95) | pub const unsafe fn new(periph_mmio_start_addr: Address) -> S... type IRQNumberType (line 107) | type IRQNumberType = IRQNumber; method compatible (line 109) | fn compatible(&self) -> &'static str { type IRQNumberType (line 115) | type IRQNumberType = IRQNumber; method register_handler (line 117) | fn register_handler( method enable (line 135) | fn enable(&self, irq: &Self::IRQNumberType) { method handle_pending_irqs (line 142) | fn handle_pending_irqs<'irq_context>( method print_handler (line 150) | fn print_handler(&self) { type Item (line 57) | type Item = usize; method next (line 59) | fn next(&mut self) -> Option { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/bsp/device_driver/bcm/bcm2xxx_interrupt_controller/peripheral_ic.rs type WriteOnlyRegisters (line 50) | type WriteOnlyRegisters = MMIODerefWrapper; type ReadOnlyRegisters (line 53) | type ReadOnlyRegisters = MMIODerefWrapper; type HandlerTable (line 55) | type HandlerTable = [Option) -> Self { method pending_irqs (line 93) | fn pending_irqs(&self) -> PendingIRQs { type IRQNumberType (line 107) | type IRQNumberType = PeripheralIRQ; method register_handler (line 109) | fn register_handler( method enable (line 126) | fn enable(&self, irq: &Self::IRQNumberType) { method handle_pending_irqs (line 142) | fn handle_pending_irqs<'irq_context>( method print_handler (line 159) | fn print_handler(&self) { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/bsp/device_driver/bcm/bcm2xxx_pl011_uart.rs type Registers (line 215) | type Registers = MMIODerefWrapper; type BlockingMode (line 218) | enum BlockingMode { type PL011UartInner (line 223) | struct PL011UartInner { method new (line 248) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method init (line 273) | pub fn init(&mut self) { method write_char (line 318) | fn write_char(&mut self, c: char) { method flush (line 331) | fn flush(&self) { method read_char_converting (line 339) | fn read_char_converting(&mut self, blocking_mode: BlockingMode) -> Opt... method write_str (line 378) | fn write_str(&mut self, s: &str) -> fmt::Result { type PL011Uart (line 234) | pub struct PL011Uart { constant COMPATIBLE (line 392) | pub const COMPATIBLE: &'static str = "BCM PL011 UART"; method new (line 399) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { type IRQNumberType (line 412) | type IRQNumberType = IRQNumber; method compatible (line 414) | fn compatible(&self) -> &'static str { method init (line 418) | unsafe fn init(&self) -> Result<(), &'static str> { method register_and_enable_irq_handler (line 424) | fn register_and_enable_irq_handler( method write_char (line 442) | fn write_char(&self, c: char) { method write_fmt (line 446) | fn write_fmt(&self, args: core::fmt::Arguments) -> fmt::Result { method flush (line 452) | fn flush(&self) { method read_char (line 459) | fn read_char(&self) -> char { method clear_rx (line 464) | fn clear_rx(&self) { method chars_written (line 475) | fn chars_written(&self) -> usize { method chars_read (line 479) | fn chars_read(&self) -> usize { method handle (line 487) | fn handle(&self) -> Result<(), &'static str> { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/bsp/device_driver/common.rs type MMIODerefWrapper (line 14) | pub struct MMIODerefWrapper { type BoundedUsize (line 21) | pub struct BoundedUsize(usize); function new (line 29) | pub const unsafe fn new(start_addr: Address) -> Self { type Target (line 38) | type Target = T; function deref (line 40) | fn deref(&self) -> &Self::Target { constant MAX_INCLUSIVE (line 46) | pub const MAX_INCLUSIVE: usize = MAX_INCLUSIVE; function new (line 49) | pub const fn new(number: usize) -> Self { function get (line 56) | pub const fn get(self) -> usize { function fmt (line 62) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/bsp/raspberrypi.rs function board_name (line 17) | pub fn board_name() -> &'static str { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/bsp/raspberrypi/driver.rs function instantiate_uart (line 39) | unsafe fn instantiate_uart() -> Result<(), &'static str> { function post_init_uart (line 50) | unsafe fn post_init_uart() -> Result<(), &'static str> { function instantiate_gpio (line 57) | unsafe fn instantiate_gpio() -> Result<(), &'static str> { function post_init_gpio (line 68) | unsafe fn post_init_gpio() -> Result<(), &'static str> { function instantiate_interrupt_controller (line 75) | unsafe fn instantiate_interrupt_controller() -> Result<(), &'static str> { function instantiate_interrupt_controller (line 90) | unsafe fn instantiate_interrupt_controller() -> Result<(), &'static str> { function post_init_interrupt_controller (line 103) | unsafe fn post_init_interrupt_controller() -> Result<(), &'static str> { function driver_uart (line 110) | unsafe fn driver_uart() -> Result<(), &'static str> { function driver_gpio (line 124) | unsafe fn driver_gpio() -> Result<(), &'static str> { function driver_interrupt_controller (line 138) | unsafe fn driver_interrupt_controller() -> Result<(), &'static str> { function init (line 160) | pub unsafe fn init() -> Result<(), &'static str> { function qemu_bring_up_console (line 177) | pub fn qemu_bring_up_console() { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/bsp/raspberrypi/exception/asynchronous.rs constant PL011_UART (line 20) | pub const PL011_UART: IRQNumber = IRQNumber::Peripheral(PeripheralIRQ::n... constant PL011_UART (line 27) | pub const PL011_UART: IRQNumber = IRQNumber::new(153); FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/bsp/raspberrypi/memory.rs constant PERIPHERAL_IC_START (line 101) | pub const PERIPHERAL_IC_START: Address = Address::new(0x3F00_B... constant PERIPHERAL_IC_SIZE (line 102) | pub const PERIPHERAL_IC_SIZE: usize = 0x24; constant GPIO_START (line 104) | pub const GPIO_START: Address = Address::new(0x3F20_0... constant GPIO_SIZE (line 105) | pub const GPIO_SIZE: usize = 0xA0; constant PL011_UART_START (line 107) | pub const PL011_UART_START: Address = Address::new(0x3F20_1... constant PL011_UART_SIZE (line 108) | pub const PL011_UART_SIZE: usize = 0x48; constant END (line 110) | pub const END: Address = Address::new(0x4001_0... constant GPIO_START (line 118) | pub const GPIO_START: Address = Address::new(0xFE20_0000); constant GPIO_SIZE (line 119) | pub const GPIO_SIZE: usize = 0xA0; constant PL011_UART_START (line 121) | pub const PL011_UART_START: Address = Address::new(0xFE20_1000); constant PL011_UART_SIZE (line 122) | pub const PL011_UART_SIZE: usize = 0x48; constant GICD_START (line 124) | pub const GICD_START: Address = Address::new(0xFF84_1000); constant GICD_SIZE (line 125) | pub const GICD_SIZE: usize = 0x824; constant GICC_START (line 127) | pub const GICC_START: Address = Address::new(0xFF84_2000); constant GICC_SIZE (line 128) | pub const GICC_SIZE: usize = 0x14; constant END (line 130) | pub const END: Address = Address::new(0xFF85_0000); constant END (line 133) | pub const END: Address = mmio::END; function virt_code_start (line 146) | fn virt_code_start() -> PageAddress { function code_size (line 156) | fn code_size() -> usize { function virt_data_start (line 162) | fn virt_data_start() -> PageAddress { function data_size (line 172) | fn data_size() -> usize { function virt_mmio_remap_start (line 182) | fn virt_mmio_remap_start() -> PageAddress { function mmio_remap_size (line 192) | fn mmio_remap_size() -> usize { function virt_boot_core_stack_start (line 198) | fn virt_boot_core_stack_start() -> PageAddress { function boot_core_stack_size (line 204) | fn boot_core_stack_size() -> usize { function phys_addr_space_end_exclusive_addr (line 216) | pub fn phys_addr_space_end_exclusive_addr() -> PageAddress { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/bsp/raspberrypi/memory/mmu.rs type KernelTranslationTable (line 22) | type KernelTranslationTable = type KernelGranule (line 31) | pub type KernelGranule = TranslationGranule<{ 64 * 1024 }>; type KernelVirtAddrSpace (line 34) | pub type KernelVirtAddrSpace = AddressSpace<{ 1024 * 1024 * 1024 }>; function size_to_num_pages (line 54) | const fn size_to_num_pages(size: usize) -> usize { function virt_code_region (line 62) | fn virt_code_region() -> MemoryRegion { function virt_data_region (line 72) | fn virt_data_region() -> MemoryRegion { function virt_boot_core_stack_region (line 82) | fn virt_boot_core_stack_region() -> MemoryRegion { function kernel_virt_to_phys_region (line 93) | fn kernel_virt_to_phys_region(virt_region: MemoryRegion) -> Mem... function kernel_translation_tables (line 110) | pub fn kernel_translation_tables() -> &'static InitStateLock MemoryRegion { function kernel_map_binary (line 129) | pub unsafe fn kernel_map_binary() -> Result<(), &'static str> { function virt_mem_layout_sections_are_64KiB_aligned (line 178) | fn virt_mem_layout_sections_are_64KiB_aligned() { function virt_mem_layout_has_no_overlaps (line 197) | fn virt_mem_layout_has_no_overlaps() { function kernel_tables_in_bss (line 213) | fn kernel_tables_in_bss() { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/common.rs function is_aligned (line 9) | pub const fn is_aligned(value: usize, alignment: usize) -> bool { function align_down (line 17) | pub const fn align_down(value: usize, alignment: usize) -> usize { function align_up (line 25) | pub const fn align_up(value: usize, alignment: usize) -> usize { function size_human_readable_ceil (line 32) | pub const fn size_human_readable_ceil(size: usize) -> (usize, &'static s... FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/console.rs type Write (line 20) | pub trait Write { method write_char (line 22) | fn write_char(&self, c: char); method write_fmt (line 25) | fn write_fmt(&self, args: fmt::Arguments) -> fmt::Result; method flush (line 28) | fn flush(&self); type Read (line 32) | pub trait Read { method read_char (line 34) | fn read_char(&self) -> char { method clear_rx (line 39) | fn clear_rx(&self); type Statistics (line 43) | pub trait Statistics { method chars_written (line 45) | fn chars_written(&self) -> usize { method chars_read (line 50) | fn chars_read(&self) -> usize { type All (line 56) | pub trait All: Write + Read + Statistics {} function register_console (line 72) | pub fn register_console(new_console: &'static (dyn interface::All + Sync... function console (line 79) | pub fn console() -> &'static dyn interface::All { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/console/null_console.rs type NullConsole (line 14) | pub struct NullConsole; method write_char (line 27) | fn write_char(&self, _c: char) {} method write_fmt (line 29) | fn write_fmt(&self, _args: fmt::Arguments) -> fmt::Result { method flush (line 33) | fn flush(&self) {} method clear_rx (line 37) | fn clear_rx(&self) {} FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/driver.rs constant NUM_DRIVERS (line 17) | const NUM_DRIVERS: usize = 5; type DriverManagerInner (line 19) | struct DriverManagerInner type DeviceDriver (line 34) | pub trait DeviceDriver { method compatible (line 39) | fn compatible(&self) -> &'static str; method init (line 46) | unsafe fn init(&self) -> Result<(), &'static str> { method register_and_enable_irq_handler (line 54) | fn register_and_enable_irq_handler( type DeviceDriverPostInitCallback (line 68) | pub type DeviceDriverPostInitCallback = unsafe fn() -> Result<(), &'stat... type DeviceDriverDescriptor (line 72) | pub struct DeviceDriverDescriptor type DriverManager (line 82) | pub struct DriverManager function new (line 104) | pub const fn new() -> Self { function new (line 118) | pub fn new( function driver_manager (line 132) | pub fn driver_manager() -> &'static DriverManager Self { function register_driver (line 148) | pub fn register_driver(&self, descriptor: DeviceDriverDescriptor) { function for_each_descriptor (line 156) | fn for_each_descriptor<'a>(&'a self, f: impl FnMut(&'a DeviceDriverDescr... function init_drivers_and_irqs (line 171) | pub unsafe fn init_drivers_and_irqs(&self) { function enumerate (line 213) | pub fn enumerate(&self) { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/exception.rs type PrivilegeLevel (line 25) | pub enum PrivilegeLevel { function test_runner_executes_in_kernel_mode (line 43) | fn test_runner_executes_in_kernel_mode() { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/exception/asynchronous.rs type IRQNumber (line 28) | pub type IRQNumber = bsp::exception::asynchronous::IRQNumber; type IRQHandlerDescriptor (line 32) | pub struct IRQHandlerDescriptor type IRQContext (line 54) | pub struct IRQContext<'irq_context> { type IRQHandler (line 62) | pub trait IRQHandler { method handle (line 64) | fn handle(&self) -> Result<(), &'static str>; type IRQManager (line 71) | pub trait IRQManager { method register_handler (line 76) | fn register_handler( method enable (line 82) | fn enable(&self, irq_number: &Self::IRQNumberType); method handle_pending_irqs (line 92) | fn handle_pending_irqs<'irq_context>( method print_handler (line 98) | fn print_handler(&self) {} function new (line 120) | pub const fn new( function number (line 133) | pub const fn number(&self) -> T { function name (line 138) | pub const fn name(&self) -> &'static str { function handler (line 143) | pub const fn handler(&self) -> &'static (dyn interface::IRQHandler + Syn... function new (line 160) | pub unsafe fn new() -> Self { function exec_with_irq_masked (line 170) | pub fn exec_with_irq_masked(f: impl FnOnce() -> T) -> T { function register_irq_manager (line 179) | pub fn register_irq_manager( function irq_manager (line 188) | pub fn irq_manager() -> &'static dyn interface::IRQManager(&'irq_context self, _ic: &IRQCont... FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/lib.rs function version (line 152) | pub fn version() -> &'static str { function kernel_init (line 162) | fn kernel_init() -> !; function test_runner (line 170) | pub fn test_runner(tests: &[&test_types::UnitTest]) { function kernel_init (line 188) | unsafe fn kernel_init() -> ! { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/main.rs function kernel_init (line 28) | unsafe fn kernel_init() -> ! { function kernel_main (line 61) | fn kernel_main() -> ! { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/memory.rs type AddressType (line 21) | pub trait AddressType: Copy + Clone + PartialOrd + PartialEq + Ord + Eq {} type Physical (line 25) | pub enum Physical {} type Virtual (line 29) | pub enum Virtual {} type Address (line 33) | pub struct Address { function new (line 47) | pub const fn new(value: usize) -> Self { function as_usize (line 55) | pub const fn as_usize(self) -> usize { function align_down_page (line 61) | pub const fn align_down_page(self) -> Self { function align_up_page (line 69) | pub const fn align_up_page(self) -> Self { function is_page_aligned (line 76) | pub const fn is_page_aligned(&self) -> bool { function offset_into_page (line 81) | pub const fn offset_into_page(&self) -> usize { type Output (line 87) | type Output = Self; function add (line 90) | fn add(self, rhs: usize) -> Self::Output { type Output (line 99) | type Output = Self; function sub (line 102) | fn sub(self, rhs: Address) -> Self::Output { function fmt (line 112) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { function fmt (line 125) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { function address_type_method_sanity (line 150) | fn address_type_method_sanity() { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/memory/mmu.rs type MMUEnableError (line 32) | pub enum MMUEnableError { method fmt (line 116) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { type MMU (line 42) | pub trait MMU { method enable_mmu_and_caching (line 48) | unsafe fn enable_mmu_and_caching( method is_enabled (line 54) | fn is_enabled(&self) -> bool; type TranslationGranule (line 59) | pub struct TranslationGranule; type AddressSpace (line 62) | pub struct AddressSpace; type AssociatedTranslationTable (line 65) | pub trait AssociatedTranslationTable { function kernel_init_mmio_va_allocator (line 81) | fn kernel_init_mmio_va_allocator() { function kernel_map_at_unchecked (line 95) | unsafe fn kernel_map_at_unchecked( constant SIZE (line 126) | pub const SIZE: usize = Self::size_checked(); constant MASK (line 129) | pub const MASK: usize = Self::SIZE - 1; constant SHIFT (line 132) | pub const SHIFT: usize = Self::SIZE.trailing_zeros() as usize; function size_checked (line 134) | const fn size_checked() -> usize { constant SIZE (line 143) | pub const SIZE: usize = Self::size_checked(); constant SIZE_SHIFT (line 146) | pub const SIZE_SHIFT: usize = Self::SIZE.trailing_zeros() as usize; function size_checked (line 148) | const fn size_checked() -> usize { function kernel_map_at (line 166) | pub unsafe fn kernel_map_at( function kernel_map_mmio (line 188) | pub unsafe fn kernel_map_mmio( function kernel_map_binary (line 232) | pub unsafe fn kernel_map_binary() -> Result, &'static ... function enable_mmu_and_caching (line 249) | pub unsafe fn enable_mmu_and_caching( function post_enable_init (line 256) | pub fn post_enable_init() { function kernel_print_mappings (line 261) | pub fn kernel_print_mappings() { function no_manual_mmio_map (line 277) | fn no_manual_mmio_map() { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/memory/mmu/mapping_record.rs type MappingRecordEntry (line 20) | struct MappingRecordEntry { method new (line 44) | pub fn new( method find_next_free_user (line 59) | fn find_next_free_user(&mut self) -> Result<&mut Option<&'static str>,... method add_user (line 67) | pub fn add_user(&mut self, user: &'static str) -> Result<(), &'static ... type MappingRecord (line 28) | struct MappingRecord { method new (line 75) | pub const fn new() -> Self { method size (line 79) | fn size(&self) -> usize { method sort (line 83) | fn sort(&mut self) { method find_next_free (line 92) | fn find_next_free(&mut self) -> Result<&mut Option... method find_duplicate (line 100) | fn find_duplicate( method add (line 121) | pub fn add( method print (line 142) | pub fn print(&self) { function kernel_add (line 209) | pub fn kernel_add( function kernel_find_and_insert_mmio_duplicate (line 218) | pub fn kernel_find_and_insert_mmio_duplicate( function kernel_print (line 236) | pub fn kernel_print() { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/memory/mmu/page_alloc.rs type PageAllocator (line 20) | pub struct PageAllocator { function kernel_mmio_va_allocator (line 36) | pub fn kernel_mmio_va_allocator() -> &'static IRQSafeNullLock Self { function init (line 47) | pub fn init(&mut self, pool: MemoryRegion) { function alloc (line 57) | pub fn alloc( FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/memory/mmu/translation_table.rs type TranslationTable (line 29) | pub trait TranslationTable { method init (line 36) | fn init(&mut self); method phys_base_address (line 39) | fn phys_base_address(&self) -> Address; method map_at (line 50) | unsafe fn map_at( function translationtable_implementation_sanity (line 73) | fn translationtable_implementation_sanity() { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/memory/mmu/types.rs type PageAddress (line 19) | pub struct PageAddress { type MemoryRegion (line 25) | pub struct MemoryRegion { type MemAttributes (line 33) | pub enum MemAttributes { type AccessPermissions (line 41) | pub enum AccessPermissions { type AttributeFields (line 49) | pub struct AttributeFields { type MMIODescriptor (line 57) | pub struct MMIODescriptor { method new (line 275) | pub const fn new(start_addr: Address, size: usize) -> Self { method start_addr (line 286) | pub const fn start_addr(&self) -> Address { method end_addr_exclusive (line 291) | pub fn end_addr_exclusive(&self) -> Address { function into_inner (line 71) | pub fn into_inner(self) -> Address { function checked_offset (line 79) | pub fn checked_offset(self, count: isize) -> Option { function from (line 100) | fn from(addr: usize) -> Self { function from (line 113) | fn from(addr: Address) -> Self { method steps_between (line 121) | fn steps_between(start: &Self, end: &Self) -> Option { method forward_checked (line 133) | fn forward_checked(start: Self, count: usize) -> Option { method backward_checked (line 137) | fn backward_checked(start: Self, count: usize) -> Option { function new (line 147) | pub fn new(start: PageAddress, end_exclusive: PageAddress)... function as_range (line 156) | fn as_range(&self) -> Range> { function start_page_addr (line 161) | pub fn start_page_addr(&self) -> PageAddress { function start_addr (line 166) | pub fn start_addr(&self) -> Address { function end_exclusive_page_addr (line 171) | pub fn end_exclusive_page_addr(&self) -> PageAddress { function end_inclusive_page_addr (line 176) | pub fn end_inclusive_page_addr(&self) -> PageAddress { function contains (line 181) | pub fn contains(&self, addr: Address) -> bool { function overlaps (line 187) | pub fn overlaps(&self, other_region: &Self) -> bool { function num_pages (line 195) | pub fn num_pages(&self) -> usize { function size (line 200) | pub fn size(&self) -> usize { function take_first_n_pages (line 222) | pub fn take_first_n_pages(&mut self, num_pages: NonZeroUsize) -> Result<... type Item (line 246) | type Item = PageAddress; type IntoIter (line 247) | type IntoIter = Range; method into_iter (line 249) | fn into_iter(self) -> Self::IntoIter { function from (line 258) | fn from(desc: MMIODescriptor) -> Self { function pageaddress_type_method_sanity (line 308) | fn pageaddress_type_method_sanity() { function memoryregion_type_method_sanity (line 343) | fn memoryregion_type_method_sanity() { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/panic_wait.rs function _panic_exit (line 19) | fn _panic_exit() -> ! { function panic_prevent_reenter (line 43) | fn panic_prevent_reenter() { function panic (line 61) | fn panic(info: &PanicInfo) -> ! { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/print.rs function _print (line 15) | pub fn _print(args: fmt::Arguments) { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/state.rs type State (line 15) | enum State { type StateManager (line 33) | pub struct StateManager(AtomicU8); constant INIT (line 51) | const INIT: u8 = 0; constant SINGLE_CORE_MAIN (line 52) | const SINGLE_CORE_MAIN: u8 = 1; constant MULTI_CORE_MAIN (line 53) | const MULTI_CORE_MAIN: u8 = 2; method new (line 56) | pub const fn new() -> Self { method state (line 61) | fn state(&self) -> State { method is_init (line 73) | pub fn is_init(&self) -> bool { method transition_to_single_core_main (line 78) | pub fn transition_to_single_core_main(&self) { function state_manager (line 46) | pub fn state_manager() -> &'static StateManager { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/synchronization.rs type Mutex (line 24) | pub trait Mutex { method lock (line 29) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; type ReadWriteEx (line 36) | pub trait ReadWriteEx { method write (line 41) | fn write<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; method read (line 44) | fn read<'a, R>(&'a self, f: impl FnOnce(&'a Self::Data) -> R) -> R; type IRQSafeNullLock (line 55) | pub struct IRQSafeNullLock type InitStateLock (line 65) | pub struct InitStateLock function new (line 81) | pub const fn new(data: T) -> Self { function new (line 93) | pub const fn new(data: T) -> Self { type Data (line 106) | type Data = T; function lock (line 108) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { type Data (line 119) | type Data = T; function write (line 121) | fn write<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { function read (line 136) | fn read<'a, R>(&'a self, f: impl FnOnce(&'a Self::Data) -> R) -> R { function init_state_lock_is_transparent (line 154) | fn init_state_lock_is_transparent() { FILE: 14_virtual_mem_part2_mmio_remap/kernel/src/time.rs type TimeManager (line 18) | pub struct TimeManager; method new (line 37) | pub const fn new() -> Self { method resolution (line 42) | pub fn resolution(&self) -> Duration { method uptime (line 49) | pub fn uptime(&self) -> Duration { method spin_for (line 54) | pub fn spin_for(&self, duration: Duration) { function time_manager (line 31) | pub fn time_manager() -> &'static TimeManager { FILE: 14_virtual_mem_part2_mmio_remap/kernel/tests/00_console_sanity.rb class TxRxHandshakeTest (line 10) | class TxRxHandshakeTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, qemu_in) class TxStatisticsTest (line 22) | class TxStatisticsTest < SubtestBase method name (line 23) | def name method run (line 27) | def run(qemu_out, _qemu_in) class RxStatisticsTest (line 33) | class RxStatisticsTest < SubtestBase method name (line 34) | def name method run (line 38) | def run(qemu_out, _qemu_in) function subtest_collection (line 46) | def subtest_collection FILE: 14_virtual_mem_part2_mmio_remap/kernel/tests/00_console_sanity.rs function kernel_init (line 17) | unsafe fn kernel_init() -> ! { FILE: 14_virtual_mem_part2_mmio_remap/kernel/tests/01_timer_sanity.rs function kernel_init (line 18) | unsafe fn kernel_init() -> ! { function timer_is_counting (line 42) | fn timer_is_counting() { function timer_resolution_is_sufficient (line 48) | fn timer_resolution_is_sufficient() { function spin_accuracy_check_1_second (line 55) | fn spin_accuracy_check_1_second() { FILE: 14_virtual_mem_part2_mmio_remap/kernel/tests/02_exception_sync_page_fault.rs function kernel_init (line 23) | unsafe fn kernel_init() -> ! { FILE: 14_virtual_mem_part2_mmio_remap/kernel/tests/03_exception_restore_sanity.rb class ExceptionRestoreTest (line 10) | class ExceptionRestoreTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, _qemu_in) function subtest_collection (line 23) | def subtest_collection FILE: 14_virtual_mem_part2_mmio_remap/kernel/tests/03_exception_restore_sanity.rs function nested_system_call (line 18) | fn nested_system_call() { function kernel_init (line 32) | unsafe fn kernel_init() -> ! { FILE: 14_virtual_mem_part2_mmio_remap/kernel/tests/04_exception_irq_sanity.rs function kernel_init (line 17) | unsafe fn kernel_init() -> ! { function local_irq_mask_works (line 41) | fn local_irq_mask_works() { function local_irq_unmask_works (line 54) | fn local_irq_unmask_works() { function local_irq_mask_save_works (line 65) | fn local_irq_mask_save_works() { FILE: 14_virtual_mem_part2_mmio_remap/kernel/tests/panic_exit_success/mod.rs function _panic_exit (line 7) | fn _panic_exit() -> ! { FILE: 14_virtual_mem_part2_mmio_remap/kernel/tests/panic_wait_forever/mod.rs function _panic_exit (line 7) | fn _panic_exit() -> ! { FILE: 14_virtual_mem_part2_mmio_remap/libraries/test-macros/src/lib.rs function kernel_test (line 11) | pub fn kernel_test(_attr: TokenStream, input: TokenStream) -> TokenStream { FILE: 14_virtual_mem_part2_mmio_remap/libraries/test-types/src/lib.rs type UnitTest (line 10) | pub struct UnitTest { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/build.rs function main (line 3) | fn main() { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/_arch/aarch64/cpu.rs function wait_forever (line 24) | pub fn wait_forever() -> ! { constant QEMU_EXIT_HANDLE (line 37) | const QEMU_EXIT_HANDLE: qemu_exit::AArch64 = qemu_exit::AArch64::new(); function qemu_exit_failure (line 41) | pub fn qemu_exit_failure() -> ! { function qemu_exit_success (line 47) | pub fn qemu_exit_success() -> ! { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/_arch/aarch64/cpu/boot.rs function prepare_el2_to_el1_transition (line 37) | unsafe fn prepare_el2_to_el1_transition(phys_boot_core_stack_end_exclusi... function _start_rust (line 79) | pub unsafe extern "C" fn _start_rust( FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/_arch/aarch64/cpu/smp.rs function core_id (line 23) | pub fn core_id() -> T FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/_arch/aarch64/exception.rs type SpsrEL1 (line 31) | struct SpsrEL1(InMemoryRegister); method fmt (line 161) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type EsrEL1 (line 32) | struct EsrEL1(InMemoryRegister); method exception_class (line 193) | fn exception_class(&self) -> Option { method iss (line 199) | fn iss(&self) -> u64 { method fmt (line 207) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type ExceptionContext (line 36) | struct ExceptionContext { method exception_class (line 228) | fn exception_class(&self) -> Option { method fault_address_valid (line 233) | fn fault_address_valid(&self) -> bool { method fmt (line 254) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { function default_exception_handler (line 58) | fn default_exception_handler(exc: &ExceptionContext) { function current_el0_synchronous (line 71) | extern "C" fn current_el0_synchronous(_e: &mut ExceptionContext) { function current_el0_irq (line 76) | extern "C" fn current_el0_irq(_e: &mut ExceptionContext) { function current_el0_serror (line 81) | extern "C" fn current_el0_serror(_e: &mut ExceptionContext) { function current_elx_synchronous (line 90) | extern "C" fn current_elx_synchronous(e: &mut ExceptionContext) { function current_elx_irq (line 106) | extern "C" fn current_elx_irq(_e: &mut ExceptionContext) { function current_elx_serror (line 112) | extern "C" fn current_elx_serror(e: &mut ExceptionContext) { function lower_aarch64_synchronous (line 121) | extern "C" fn lower_aarch64_synchronous(e: &mut ExceptionContext) { function lower_aarch64_irq (line 126) | extern "C" fn lower_aarch64_irq(e: &mut ExceptionContext) { function lower_aarch64_serror (line 131) | extern "C" fn lower_aarch64_serror(e: &mut ExceptionContext) { function lower_aarch32_synchronous (line 140) | extern "C" fn lower_aarch32_synchronous(e: &mut ExceptionContext) { function lower_aarch32_irq (line 145) | extern "C" fn lower_aarch32_irq(e: &mut ExceptionContext) { function lower_aarch32_serror (line 150) | extern "C" fn lower_aarch32_serror(e: &mut ExceptionContext) { function current_privilege_level (line 285) | pub fn current_privilege_level() -> (PrivilegeLevel, &'static str) { function handling_init (line 303) | pub unsafe fn handling_init() { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/_arch/aarch64/exception/asynchronous.rs constant IRQ (line 23) | pub const IRQ: u8 = 0b0010; type DaifField (line 26) | trait DaifField { method daif_field (line 27) | fn daif_field() -> tock_registers::fields::Field; method daif_field (line 40) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 46) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 52) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 58) | fn daif_field() -> tock_registers::fields::Field { type Debug (line 30) | struct Debug; type SError (line 31) | struct SError; type IRQ (line 32) | struct IRQ; type FIQ (line 33) | struct FIQ; function is_masked (line 63) | fn is_masked() -> bool function is_local_irq_masked (line 75) | pub fn is_local_irq_masked() -> bool { function local_irq_unmask (line 87) | pub fn local_irq_unmask() { function local_irq_mask (line 99) | pub fn local_irq_mask() { function local_irq_mask_save (line 111) | pub fn local_irq_mask_save() -> u64 { function local_irq_restore (line 124) | pub fn local_irq_restore(saved: u64) { function print_state (line 130) | pub fn print_state() { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/_arch/aarch64/memory/mmu.rs type MemoryManagementUnit (line 29) | struct MemoryManagementUnit; method set_up_mair (line 69) | fn set_up_mair(&self) { method configure_translation_control (line 82) | fn configure_translation_control(&self) { method enable_mmu_and_caching (line 115) | unsafe fn enable_mmu_and_caching( method is_enabled (line 153) | fn is_enabled(&self) -> bool { type Granule512MiB (line 35) | pub type Granule512MiB = TranslationGranule<{ 512 * 1024 * 1024 }>; type Granule64KiB (line 36) | pub type Granule64KiB = TranslationGranule<{ 64 * 1024 }>; constant DEVICE (line 41) | pub const DEVICE: u64 = 0; constant NORMAL (line 42) | pub const NORMAL: u64 = 1; function arch_address_space_size_sanity_checks (line 57) | pub const fn arch_address_space_size_sanity_checks() { function mmu (line 105) | pub fn mmu() -> &'static impl memory::mmu::interface::MMU { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/_arch/aarch64/memory/mmu/translation_table.rs type TableDescriptor (line 114) | struct TableDescriptor { method new_zeroed (line 164) | pub const fn new_zeroed() -> Self { method from_next_lvl_table_addr (line 169) | pub fn from_next_lvl_table_addr(phys_next_lvl_table_addr: Address Self { method from_output_page_addr (line 258) | pub fn from_output_page_addr( method is_valid (line 277) | fn is_valid(&self) -> bool { method output_page_addr (line 283) | fn output_page_addr(&self) -> PageAddress { method try_attributes (line 291) | fn try_attributes(&self) -> Result { type StartAddr (line 127) | trait StartAddr { method virt_start_addr (line 128) | fn virt_start_addr(&self) -> Address; method virt_start_addr (line 155) | fn virt_start_addr(&self) -> Address { type FixedSizeTranslationTable (line 139) | pub struct FixedSizeTranslationTable { function from (line 187) | fn from(attribute_fields: AttributeFields) -> Self { type Error (line 222) | type Error = &'static str; method try_from (line 224) | fn try_from( type TableStartFromBottom (line 305) | type TableStartFromBottom = FixedSizeTranslationTable<{ Self::SIZE >> Gr... function _new (line 311) | const fn _new(for_precompute: bool) -> Self { function new_for_precompute (line 324) | pub const fn new_for_precompute() -> Self { function new_for_runtime (line 329) | pub fn new_for_runtime() -> Self { function lvl2_lvl3_index_from_page_addr (line 335) | fn lvl2_lvl3_index_from_page_addr( function page_descriptor_from_page_addr (line 352) | fn page_descriptor_from_page_addr( function set_page_descriptor_from_page_addr (line 366) | fn set_page_descriptor_from_page_addr( function init (line 390) | fn init(&mut self) -> Result<(), &'static str> { function map_at (line 409) | unsafe fn map_at( function try_virt_page_addr_to_phys_page_addr (line 437) | fn try_virt_page_addr_to_phys_page_addr( function try_page_attributes (line 450) | fn try_page_attributes( function try_virt_addr_to_phys_addr (line 466) | fn try_virt_addr_to_phys_addr( type MinSizeTranslationTable (line 482) | pub type MinSizeTranslationTable = FixedSizeTranslationTable<1>; function size_of_tabledescriptor_equals_64_bit (line 491) | fn size_of_tabledescriptor_equals_64_bit() { function size_of_pagedescriptor_equals_64_bit (line 500) | fn size_of_pagedescriptor_equals_64_bit() { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/_arch/aarch64/time.rs constant NANOSEC_PER_SEC (line 27) | const NANOSEC_PER_SEC: NonZeroU64 = NonZeroU64::new(1_000_000_000).unwra... type GenericTimerCounterValue (line 30) | struct GenericTimerCounterValue(u64); constant MAX (line 55) | pub const MAX: Self = GenericTimerCounterValue(u64::MAX); type Error (line 96) | type Error = &'static str; method try_from (line 98) | fn try_from(duration: Duration) -> Result { function arch_timer_counter_frequency (line 45) | fn arch_timer_counter_frequency() -> NonZeroU32 { type Output (line 59) | type Output = Self; method add (line 61) | fn add(self, other: Self) -> Self { method from (line 67) | fn from(counter_value: GenericTimerCounterValue) -> Self { function max_duration (line 91) | fn max_duration() -> Duration { function read_cntpct (line 121) | fn read_cntpct() -> GenericTimerCounterValue { function resolution (line 134) | pub fn resolution() -> Duration { function uptime (line 141) | pub fn uptime() -> Duration { function spin_for (line 146) | pub fn spin_for(duration: Duration) { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/bsp/device_driver/arm/gicv2.rs type HandlerTable (line 94) | type HandlerTable = [Option; type GICv2 (line 105) | pub struct GICv2 { constant MAX_IRQ_NUMBER (line 121) | const MAX_IRQ_NUMBER: usize = 300; constant COMPATIBLE (line 123) | pub const COMPATIBLE: &'static str = "GICv2 (ARM Generic Interrupt Con... method new (line 130) | pub const unsafe fn new( type IRQNumberType (line 148) | type IRQNumberType = IRQNumber; method compatible (line 150) | fn compatible(&self) -> &'static str { method init (line 154) | unsafe fn init(&self) -> Result<(), &'static str> { type IRQNumberType (line 167) | type IRQNumberType = IRQNumber; method register_handler (line 169) | fn register_handler( method enable (line 186) | fn enable(&self, irq_number: &Self::IRQNumberType) { method handle_pending_irqs (line 190) | fn handle_pending_irqs<'irq_context>( method print_handler (line 218) | fn print_handler(&self) { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/bsp/device_driver/arm/gicv2/gicc.rs type Registers (line 59) | type Registers = MMIODerefWrapper; type GICC (line 66) | pub struct GICC { method new (line 80) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method priority_accept_all (line 97) | pub fn priority_accept_all(&self) { method enable (line 107) | pub fn enable(&self) { method pending_irq_number (line 120) | pub fn pending_irq_number<'irq_context>( method mark_comleted (line 138) | pub fn mark_comleted<'irq_context>( FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/bsp/device_driver/arm/gicv2/gicd.rs type SharedRegisters (line 73) | type SharedRegisters = MMIODerefWrapper; method num_irqs (line 98) | fn num_irqs(&mut self) -> usize { method implemented_itargets_slice (line 107) | fn implemented_itargets_slice(&mut self) -> &[ReadWrite; type GICD (line 83) | pub struct GICD { method new (line 133) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method local_gic_target_mask (line 146) | fn local_gic_target_mask(&self) -> u32 { method boot_core_init (line 151) | pub fn boot_core_init(&self) { method enable (line 175) | pub fn enable(&self, irq_num: &super::IRQNumber) { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/bsp/device_driver/bcm/bcm2xxx_gpio.rs type Registers (line 113) | type Registers = MMIODerefWrapper; type GPIOInner (line 115) | struct GPIOInner { method new (line 138) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method disable_pud_14_15_bcm2837 (line 146) | fn disable_pud_14_15_bcm2837(&mut self) { method disable_pud_14_15_bcm2711 (line 167) | fn disable_pud_14_15_bcm2711(&mut self) { method map_pl011_uart (line 178) | pub fn map_pl011_uart(&mut self) { type GPIO (line 124) | pub struct GPIO { constant COMPATIBLE (line 198) | pub const COMPATIBLE: &'static str = "BCM GPIO"; method new (line 205) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method map_pl011_uart (line 212) | pub fn map_pl011_uart(&self) { type IRQNumberType (line 223) | type IRQNumberType = IRQNumber; method compatible (line 225) | fn compatible(&self) -> &'static str { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/bsp/device_driver/bcm/bcm2xxx_interrupt_controller.rs type PendingIRQs (line 22) | struct PendingIRQs { method new (line 51) | pub fn new(bitmask: u64) -> Self { type LocalIRQ (line 30) | pub type LocalIRQ = BoundedUsize<{ InterruptController::MAX_LOCAL_IRQ_NU... type PeripheralIRQ (line 31) | pub type PeripheralIRQ = BoundedUsize<{ InterruptController::MAX_PERIPHE... type IRQNumber (line 36) | pub enum IRQNumber { method fmt (line 75) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type InterruptController (line 42) | pub struct InterruptController { constant MAX_LOCAL_IRQ_NUMBER (line 85) | const MAX_LOCAL_IRQ_NUMBER: usize = 3; constant MAX_PERIPHERAL_IRQ_NUMBER (line 86) | const MAX_PERIPHERAL_IRQ_NUMBER: usize = 63; constant COMPATIBLE (line 88) | pub const COMPATIBLE: &'static str = "BCM Interrupt Controller"; method new (line 95) | pub const unsafe fn new(periph_mmio_start_addr: Address) -> S... type IRQNumberType (line 107) | type IRQNumberType = IRQNumber; method compatible (line 109) | fn compatible(&self) -> &'static str { type IRQNumberType (line 115) | type IRQNumberType = IRQNumber; method register_handler (line 117) | fn register_handler( method enable (line 135) | fn enable(&self, irq: &Self::IRQNumberType) { method handle_pending_irqs (line 142) | fn handle_pending_irqs<'irq_context>( method print_handler (line 150) | fn print_handler(&self) { type Item (line 57) | type Item = usize; method next (line 59) | fn next(&mut self) -> Option { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/bsp/device_driver/bcm/bcm2xxx_interrupt_controller/peripheral_ic.rs type WriteOnlyRegisters (line 50) | type WriteOnlyRegisters = MMIODerefWrapper; type ReadOnlyRegisters (line 53) | type ReadOnlyRegisters = MMIODerefWrapper; type HandlerTable (line 55) | type HandlerTable = [Option) -> Self { method pending_irqs (line 93) | fn pending_irqs(&self) -> PendingIRQs { type IRQNumberType (line 107) | type IRQNumberType = PeripheralIRQ; method register_handler (line 109) | fn register_handler( method enable (line 126) | fn enable(&self, irq: &Self::IRQNumberType) { method handle_pending_irqs (line 142) | fn handle_pending_irqs<'irq_context>( method print_handler (line 159) | fn print_handler(&self) { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/bsp/device_driver/bcm/bcm2xxx_pl011_uart.rs type Registers (line 215) | type Registers = MMIODerefWrapper; type BlockingMode (line 218) | enum BlockingMode { type PL011UartInner (line 223) | struct PL011UartInner { method new (line 248) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method init (line 273) | pub fn init(&mut self) { method write_char (line 318) | fn write_char(&mut self, c: char) { method flush (line 331) | fn flush(&self) { method read_char_converting (line 339) | fn read_char_converting(&mut self, blocking_mode: BlockingMode) -> Opt... method write_str (line 378) | fn write_str(&mut self, s: &str) -> fmt::Result { type PL011Uart (line 234) | pub struct PL011Uart { constant COMPATIBLE (line 392) | pub const COMPATIBLE: &'static str = "BCM PL011 UART"; method new (line 399) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { type IRQNumberType (line 412) | type IRQNumberType = IRQNumber; method compatible (line 414) | fn compatible(&self) -> &'static str { method init (line 418) | unsafe fn init(&self) -> Result<(), &'static str> { method register_and_enable_irq_handler (line 424) | fn register_and_enable_irq_handler( method write_char (line 442) | fn write_char(&self, c: char) { method write_fmt (line 446) | fn write_fmt(&self, args: core::fmt::Arguments) -> fmt::Result { method flush (line 452) | fn flush(&self) { method read_char (line 459) | fn read_char(&self) -> char { method clear_rx (line 464) | fn clear_rx(&self) { method chars_written (line 475) | fn chars_written(&self) -> usize { method chars_read (line 479) | fn chars_read(&self) -> usize { method handle (line 487) | fn handle(&self) -> Result<(), &'static str> { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/bsp/device_driver/common.rs type MMIODerefWrapper (line 14) | pub struct MMIODerefWrapper { type BoundedUsize (line 21) | pub struct BoundedUsize(usize); function new (line 29) | pub const unsafe fn new(start_addr: Address) -> Self { type Target (line 38) | type Target = T; function deref (line 40) | fn deref(&self) -> &Self::Target { constant MAX_INCLUSIVE (line 46) | pub const MAX_INCLUSIVE: usize = MAX_INCLUSIVE; function new (line 49) | pub const fn new(number: usize) -> Self { function get (line 56) | pub const fn get(self) -> usize { function fmt (line 62) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/bsp/raspberrypi.rs function board_name (line 17) | pub fn board_name() -> &'static str { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/bsp/raspberrypi/driver.rs function instantiate_uart (line 39) | unsafe fn instantiate_uart() -> Result<(), &'static str> { function post_init_uart (line 50) | unsafe fn post_init_uart() -> Result<(), &'static str> { function instantiate_gpio (line 57) | unsafe fn instantiate_gpio() -> Result<(), &'static str> { function post_init_gpio (line 68) | unsafe fn post_init_gpio() -> Result<(), &'static str> { function instantiate_interrupt_controller (line 75) | unsafe fn instantiate_interrupt_controller() -> Result<(), &'static str> { function instantiate_interrupt_controller (line 90) | unsafe fn instantiate_interrupt_controller() -> Result<(), &'static str> { function post_init_interrupt_controller (line 103) | unsafe fn post_init_interrupt_controller() -> Result<(), &'static str> { function driver_uart (line 110) | unsafe fn driver_uart() -> Result<(), &'static str> { function driver_gpio (line 124) | unsafe fn driver_gpio() -> Result<(), &'static str> { function driver_interrupt_controller (line 138) | unsafe fn driver_interrupt_controller() -> Result<(), &'static str> { function init (line 160) | pub unsafe fn init() -> Result<(), &'static str> { function qemu_bring_up_console (line 177) | pub fn qemu_bring_up_console() { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/bsp/raspberrypi/exception/asynchronous.rs constant PL011_UART (line 20) | pub const PL011_UART: IRQNumber = IRQNumber::Peripheral(PeripheralIRQ::n... constant PL011_UART (line 27) | pub const PL011_UART: IRQNumber = IRQNumber::new(153); FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/bsp/raspberrypi/memory.rs constant PERIPHERAL_IC_START (line 101) | pub const PERIPHERAL_IC_START: Address = Address::new(0x3F00_B... constant PERIPHERAL_IC_SIZE (line 102) | pub const PERIPHERAL_IC_SIZE: usize = 0x24; constant GPIO_START (line 104) | pub const GPIO_START: Address = Address::new(0x3F20_0... constant GPIO_SIZE (line 105) | pub const GPIO_SIZE: usize = 0xA0; constant PL011_UART_START (line 107) | pub const PL011_UART_START: Address = Address::new(0x3F20_1... constant PL011_UART_SIZE (line 108) | pub const PL011_UART_SIZE: usize = 0x48; constant END (line 110) | pub const END: Address = Address::new(0x4001_0... constant GPIO_START (line 118) | pub const GPIO_START: Address = Address::new(0xFE20_0000); constant GPIO_SIZE (line 119) | pub const GPIO_SIZE: usize = 0xA0; constant PL011_UART_START (line 121) | pub const PL011_UART_START: Address = Address::new(0xFE20_1000); constant PL011_UART_SIZE (line 122) | pub const PL011_UART_SIZE: usize = 0x48; constant GICD_START (line 124) | pub const GICD_START: Address = Address::new(0xFF84_1000); constant GICD_SIZE (line 125) | pub const GICD_SIZE: usize = 0x824; constant GICC_START (line 127) | pub const GICC_START: Address = Address::new(0xFF84_2000); constant GICC_SIZE (line 128) | pub const GICC_SIZE: usize = 0x14; constant END (line 130) | pub const END: Address = Address::new(0xFF85_0000); constant END (line 133) | pub const END: Address = mmio::END; function virt_code_start (line 146) | fn virt_code_start() -> PageAddress { function code_size (line 156) | fn code_size() -> usize { function virt_data_start (line 162) | fn virt_data_start() -> PageAddress { function data_size (line 172) | fn data_size() -> usize { function virt_mmio_remap_start (line 182) | fn virt_mmio_remap_start() -> PageAddress { function mmio_remap_size (line 192) | fn mmio_remap_size() -> usize { function virt_boot_core_stack_start (line 198) | fn virt_boot_core_stack_start() -> PageAddress { function boot_core_stack_size (line 204) | fn boot_core_stack_size() -> usize { function phys_addr_space_end_exclusive_addr (line 216) | pub fn phys_addr_space_end_exclusive_addr() -> PageAddress { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/bsp/raspberrypi/memory/mmu.rs type KernelTranslationTable (line 22) | type KernelTranslationTable = type KernelGranule (line 31) | pub type KernelGranule = TranslationGranule<{ 64 * 1024 }>; type KernelVirtAddrSpace (line 34) | pub type KernelVirtAddrSpace = AddressSpace<{ kernel_virt_addr_space_siz... function kernel_virt_addr_space_size (line 67) | const fn kernel_virt_addr_space_size() -> usize { function size_to_num_pages (line 76) | const fn size_to_num_pages(size: usize) -> usize { function virt_code_region (line 84) | fn virt_code_region() -> MemoryRegion { function virt_data_region (line 94) | fn virt_data_region() -> MemoryRegion { function virt_boot_core_stack_region (line 104) | fn virt_boot_core_stack_region() -> MemoryRegion { function kernel_virt_to_phys_region (line 115) | fn kernel_virt_to_phys_region(virt_region: MemoryRegion) -> Mem... function kernel_page_attributes (line 127) | fn kernel_page_attributes(virt_page_addr: PageAddress) -> Attri... function kernel_translation_tables (line 136) | pub fn kernel_translation_tables() -> &'static InitStateLock MemoryRegion { function kernel_add_mapping_records_for_precomputed (line 155) | pub fn kernel_add_mapping_records_for_precomputed() { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/common.rs function is_aligned (line 9) | pub const fn is_aligned(value: usize, alignment: usize) -> bool { function align_down (line 17) | pub const fn align_down(value: usize, alignment: usize) -> usize { function align_up (line 25) | pub const fn align_up(value: usize, alignment: usize) -> usize { function size_human_readable_ceil (line 32) | pub const fn size_human_readable_ceil(size: usize) -> (usize, &'static s... FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/console.rs type Write (line 20) | pub trait Write { method write_char (line 22) | fn write_char(&self, c: char); method write_fmt (line 25) | fn write_fmt(&self, args: fmt::Arguments) -> fmt::Result; method flush (line 28) | fn flush(&self); type Read (line 32) | pub trait Read { method read_char (line 34) | fn read_char(&self) -> char { method clear_rx (line 39) | fn clear_rx(&self); type Statistics (line 43) | pub trait Statistics { method chars_written (line 45) | fn chars_written(&self) -> usize { method chars_read (line 50) | fn chars_read(&self) -> usize { type All (line 56) | pub trait All: Write + Read + Statistics {} function register_console (line 72) | pub fn register_console(new_console: &'static (dyn interface::All + Sync... function console (line 79) | pub fn console() -> &'static dyn interface::All { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/console/null_console.rs type NullConsole (line 14) | pub struct NullConsole; method write_char (line 27) | fn write_char(&self, _c: char) {} method write_fmt (line 29) | fn write_fmt(&self, _args: fmt::Arguments) -> fmt::Result { method flush (line 33) | fn flush(&self) {} method clear_rx (line 37) | fn clear_rx(&self) {} FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/driver.rs constant NUM_DRIVERS (line 17) | const NUM_DRIVERS: usize = 5; type DriverManagerInner (line 19) | struct DriverManagerInner type DeviceDriver (line 34) | pub trait DeviceDriver { method compatible (line 39) | fn compatible(&self) -> &'static str; method init (line 46) | unsafe fn init(&self) -> Result<(), &'static str> { method register_and_enable_irq_handler (line 54) | fn register_and_enable_irq_handler( type DeviceDriverPostInitCallback (line 68) | pub type DeviceDriverPostInitCallback = unsafe fn() -> Result<(), &'stat... type DeviceDriverDescriptor (line 72) | pub struct DeviceDriverDescriptor type DriverManager (line 82) | pub struct DriverManager function new (line 104) | pub const fn new() -> Self { function new (line 118) | pub fn new( function driver_manager (line 132) | pub fn driver_manager() -> &'static DriverManager Self { function register_driver (line 148) | pub fn register_driver(&self, descriptor: DeviceDriverDescriptor) { function for_each_descriptor (line 156) | fn for_each_descriptor<'a>(&'a self, f: impl FnMut(&'a DeviceDriverDescr... function init_drivers_and_irqs (line 171) | pub unsafe fn init_drivers_and_irqs(&self) { function enumerate (line 213) | pub fn enumerate(&self) { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/exception.rs type PrivilegeLevel (line 25) | pub enum PrivilegeLevel { function test_runner_executes_in_kernel_mode (line 43) | fn test_runner_executes_in_kernel_mode() { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/exception/asynchronous.rs type IRQNumber (line 28) | pub type IRQNumber = bsp::exception::asynchronous::IRQNumber; type IRQHandlerDescriptor (line 32) | pub struct IRQHandlerDescriptor type IRQContext (line 54) | pub struct IRQContext<'irq_context> { type IRQHandler (line 62) | pub trait IRQHandler { method handle (line 64) | fn handle(&self) -> Result<(), &'static str>; type IRQManager (line 71) | pub trait IRQManager { method register_handler (line 76) | fn register_handler( method enable (line 82) | fn enable(&self, irq_number: &Self::IRQNumberType); method handle_pending_irqs (line 92) | fn handle_pending_irqs<'irq_context>( method print_handler (line 98) | fn print_handler(&self) {} function new (line 120) | pub const fn new( function number (line 133) | pub const fn number(&self) -> T { function name (line 138) | pub const fn name(&self) -> &'static str { function handler (line 143) | pub const fn handler(&self) -> &'static (dyn interface::IRQHandler + Syn... function new (line 160) | pub unsafe fn new() -> Self { function exec_with_irq_masked (line 170) | pub fn exec_with_irq_masked(f: impl FnOnce() -> T) -> T { function register_irq_manager (line 179) | pub fn register_irq_manager( function irq_manager (line 188) | pub fn irq_manager() -> &'static dyn interface::IRQManager(&'irq_context self, _ic: &IRQCont... FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/lib.rs function version (line 152) | pub fn version() -> &'static str { function kernel_init (line 162) | fn kernel_init() -> !; function test_runner (line 170) | pub fn test_runner(tests: &[&test_types::UnitTest]) { function kernel_init (line 188) | unsafe fn kernel_init() -> ! { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/main.rs function kernel_init (line 27) | unsafe fn kernel_init() -> ! { function kernel_main (line 52) | fn kernel_main() -> ! { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/memory.rs type AddressType (line 21) | pub trait AddressType: Copy + Clone + PartialOrd + PartialEq + Ord + Eq {} type Physical (line 25) | pub enum Physical {} type Virtual (line 29) | pub enum Virtual {} type Address (line 33) | pub struct Address { function new (line 47) | pub const fn new(value: usize) -> Self { function as_usize (line 55) | pub const fn as_usize(self) -> usize { function align_down_page (line 61) | pub const fn align_down_page(self) -> Self { function align_up_page (line 69) | pub const fn align_up_page(self) -> Self { function is_page_aligned (line 76) | pub const fn is_page_aligned(&self) -> bool { function offset_into_page (line 81) | pub const fn offset_into_page(&self) -> usize { type Output (line 87) | type Output = Self; function add (line 90) | fn add(self, rhs: usize) -> Self::Output { type Output (line 99) | type Output = Self; function sub (line 102) | fn sub(self, rhs: Address) -> Self::Output { function fmt (line 112) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { function fmt (line 125) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { function init (line 140) | pub fn init() { function address_type_method_sanity (line 155) | fn address_type_method_sanity() { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/memory/mmu.rs type MMUEnableError (line 33) | pub enum MMUEnableError { method fmt (line 117) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { type MMU (line 43) | pub trait MMU { method enable_mmu_and_caching (line 49) | unsafe fn enable_mmu_and_caching( method is_enabled (line 55) | fn is_enabled(&self) -> bool; type TranslationGranule (line 60) | pub struct TranslationGranule; type AddressSpace (line 63) | pub struct AddressSpace; type AssociatedTranslationTable (line 66) | pub trait AssociatedTranslationTable { function kernel_map_at_unchecked (line 88) | unsafe fn kernel_map_at_unchecked( function try_kernel_virt_addr_to_phys_addr (line 105) | fn try_kernel_virt_addr_to_phys_addr( constant SIZE (line 127) | pub const SIZE: usize = Self::size_checked(); constant MASK (line 130) | pub const MASK: usize = Self::SIZE - 1; constant SHIFT (line 133) | pub const SHIFT: usize = Self::SIZE.trailing_zeros() as usize; function size_checked (line 135) | const fn size_checked() -> usize { constant SIZE (line 144) | pub const SIZE: usize = Self::size_checked(); constant SIZE_SHIFT (line 147) | pub const SIZE_SHIFT: usize = Self::SIZE.trailing_zeros() as usize; function size_checked (line 149) | const fn size_checked() -> usize { function kernel_init_mmio_va_allocator (line 161) | pub fn kernel_init_mmio_va_allocator() { function kernel_add_mapping_record (line 168) | pub fn kernel_add_mapping_record( function kernel_map_mmio (line 186) | pub unsafe fn kernel_map_mmio( function try_kernel_virt_page_addr_to_phys_page_addr (line 228) | pub fn try_kernel_virt_page_addr_to_phys_page_addr( function try_kernel_page_attributes (line 238) | pub fn try_kernel_page_attributes( function kernel_print_mappings (line 246) | pub fn kernel_print_mappings() { function enable_mmu_and_caching (line 256) | pub unsafe fn enable_mmu_and_caching( FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/memory/mmu/mapping_record.rs type MappingRecordEntry (line 20) | struct MappingRecordEntry { method new (line 44) | pub fn new( method find_next_free_user (line 59) | fn find_next_free_user(&mut self) -> Result<&mut Option<&'static str>,... method add_user (line 67) | pub fn add_user(&mut self, user: &'static str) -> Result<(), &'static ... type MappingRecord (line 28) | struct MappingRecord { method new (line 75) | pub const fn new() -> Self { method size (line 79) | fn size(&self) -> usize { method sort (line 83) | fn sort(&mut self) { method find_next_free (line 92) | fn find_next_free(&mut self) -> Result<&mut Option... method find_duplicate (line 100) | fn find_duplicate( method add (line 121) | pub fn add( method print (line 142) | pub fn print(&self) { function kernel_add (line 209) | pub fn kernel_add( function kernel_find_and_insert_mmio_duplicate (line 218) | pub fn kernel_find_and_insert_mmio_duplicate( function kernel_print (line 236) | pub fn kernel_print() { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/memory/mmu/page_alloc.rs type PageAllocator (line 20) | pub struct PageAllocator { function kernel_mmio_va_allocator (line 36) | pub fn kernel_mmio_va_allocator() -> &'static IRQSafeNullLock Self { function init (line 47) | pub fn init(&mut self, pool: MemoryRegion) { function alloc (line 57) | pub fn alloc( FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/memory/mmu/translation_table.rs type TranslationTable (line 31) | pub trait TranslationTable { method init (line 38) | fn init(&mut self) -> Result<(), &'static str>; method map_at (line 49) | unsafe fn map_at( method try_virt_page_addr_to_phys_page_addr (line 59) | fn try_virt_page_addr_to_phys_page_addr( method try_page_attributes (line 67) | fn try_page_attributes( method try_virt_addr_to_phys_addr (line 75) | fn try_virt_addr_to_phys_addr( function translationtable_implementation_sanity (line 96) | fn translationtable_implementation_sanity() { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/memory/mmu/types.rs type PageAddress (line 19) | pub struct PageAddress { type MemoryRegion (line 25) | pub struct MemoryRegion { type MemAttributes (line 33) | pub enum MemAttributes { type AccessPermissions (line 41) | pub enum AccessPermissions { type AttributeFields (line 49) | pub struct AttributeFields { type MMIODescriptor (line 57) | pub struct MMIODescriptor { method new (line 275) | pub const fn new(start_addr: Address, size: usize) -> Self { method start_addr (line 286) | pub const fn start_addr(&self) -> Address { method end_addr_exclusive (line 291) | pub fn end_addr_exclusive(&self) -> Address { function into_inner (line 71) | pub fn into_inner(self) -> Address { function checked_offset (line 79) | pub fn checked_offset(self, count: isize) -> Option { function from (line 100) | fn from(addr: usize) -> Self { function from (line 113) | fn from(addr: Address) -> Self { method steps_between (line 121) | fn steps_between(start: &Self, end: &Self) -> Option { method forward_checked (line 133) | fn forward_checked(start: Self, count: usize) -> Option { method backward_checked (line 137) | fn backward_checked(start: Self, count: usize) -> Option { function new (line 147) | pub fn new(start: PageAddress, end_exclusive: PageAddress)... function as_range (line 156) | fn as_range(&self) -> Range> { function start_page_addr (line 161) | pub fn start_page_addr(&self) -> PageAddress { function start_addr (line 166) | pub fn start_addr(&self) -> Address { function end_exclusive_page_addr (line 171) | pub fn end_exclusive_page_addr(&self) -> PageAddress { function end_inclusive_page_addr (line 176) | pub fn end_inclusive_page_addr(&self) -> PageAddress { function contains (line 181) | pub fn contains(&self, addr: Address) -> bool { function overlaps (line 187) | pub fn overlaps(&self, other_region: &Self) -> bool { function num_pages (line 195) | pub fn num_pages(&self) -> usize { function size (line 200) | pub fn size(&self) -> usize { function take_first_n_pages (line 222) | pub fn take_first_n_pages(&mut self, num_pages: NonZeroUsize) -> Result<... type Item (line 246) | type Item = PageAddress; type IntoIter (line 247) | type IntoIter = Range; method into_iter (line 249) | fn into_iter(self) -> Self::IntoIter { function from (line 258) | fn from(desc: MMIODescriptor) -> Self { function pageaddress_type_method_sanity (line 308) | fn pageaddress_type_method_sanity() { function memoryregion_type_method_sanity (line 343) | fn memoryregion_type_method_sanity() { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/panic_wait.rs function _panic_exit (line 19) | fn _panic_exit() -> ! { function panic_prevent_reenter (line 43) | fn panic_prevent_reenter() { function panic (line 61) | fn panic(info: &PanicInfo) -> ! { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/print.rs function _print (line 15) | pub fn _print(args: fmt::Arguments) { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/state.rs type State (line 15) | enum State { type StateManager (line 33) | pub struct StateManager(AtomicU8); constant INIT (line 51) | const INIT: u8 = 0; constant SINGLE_CORE_MAIN (line 52) | const SINGLE_CORE_MAIN: u8 = 1; constant MULTI_CORE_MAIN (line 53) | const MULTI_CORE_MAIN: u8 = 2; method new (line 56) | pub const fn new() -> Self { method state (line 61) | fn state(&self) -> State { method is_init (line 73) | pub fn is_init(&self) -> bool { method transition_to_single_core_main (line 78) | pub fn transition_to_single_core_main(&self) { function state_manager (line 46) | pub fn state_manager() -> &'static StateManager { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/synchronization.rs type Mutex (line 24) | pub trait Mutex { method lock (line 29) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; type ReadWriteEx (line 36) | pub trait ReadWriteEx { method write (line 41) | fn write<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; method read (line 44) | fn read<'a, R>(&'a self, f: impl FnOnce(&'a Self::Data) -> R) -> R; type IRQSafeNullLock (line 55) | pub struct IRQSafeNullLock type InitStateLock (line 65) | pub struct InitStateLock function new (line 81) | pub const fn new(data: T) -> Self { function new (line 93) | pub const fn new(data: T) -> Self { type Data (line 106) | type Data = T; function lock (line 108) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { type Data (line 119) | type Data = T; function write (line 121) | fn write<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { function read (line 136) | fn read<'a, R>(&'a self, f: impl FnOnce(&'a Self::Data) -> R) -> R { function init_state_lock_is_transparent (line 154) | fn init_state_lock_is_transparent() { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/src/time.rs type TimeManager (line 18) | pub struct TimeManager; method new (line 37) | pub const fn new() -> Self { method resolution (line 42) | pub fn resolution(&self) -> Duration { method uptime (line 49) | pub fn uptime(&self) -> Duration { method spin_for (line 54) | pub fn spin_for(&self, duration: Duration) { function time_manager (line 31) | pub fn time_manager() -> &'static TimeManager { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/tests/00_console_sanity.rb class TxRxHandshakeTest (line 10) | class TxRxHandshakeTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, qemu_in) class TxStatisticsTest (line 22) | class TxStatisticsTest < SubtestBase method name (line 23) | def name method run (line 27) | def run(qemu_out, _qemu_in) class RxStatisticsTest (line 33) | class RxStatisticsTest < SubtestBase method name (line 34) | def name method run (line 38) | def run(qemu_out, _qemu_in) function subtest_collection (line 46) | def subtest_collection FILE: 15_virtual_mem_part3_precomputed_tables/kernel/tests/00_console_sanity.rs function kernel_init (line 17) | unsafe fn kernel_init() -> ! { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/tests/01_timer_sanity.rs function kernel_init (line 18) | unsafe fn kernel_init() -> ! { function timer_is_counting (line 32) | fn timer_is_counting() { function timer_resolution_is_sufficient (line 38) | fn timer_resolution_is_sufficient() { function spin_accuracy_check_1_second (line 45) | fn spin_accuracy_check_1_second() { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/tests/02_exception_sync_page_fault.rs function kernel_init (line 23) | unsafe fn kernel_init() -> ! { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/tests/03_exception_restore_sanity.rb class ExceptionRestoreTest (line 10) | class ExceptionRestoreTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, _qemu_in) function subtest_collection (line 23) | def subtest_collection FILE: 15_virtual_mem_part3_precomputed_tables/kernel/tests/03_exception_restore_sanity.rs function nested_system_call (line 18) | fn nested_system_call() { function kernel_init (line 32) | unsafe fn kernel_init() -> ! { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/tests/04_exception_irq_sanity.rs function kernel_init (line 17) | unsafe fn kernel_init() -> ! { function local_irq_mask_works (line 31) | fn local_irq_mask_works() { function local_irq_unmask_works (line 44) | fn local_irq_unmask_works() { function local_irq_mask_save_works (line 55) | fn local_irq_mask_save_works() { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/tests/panic_exit_success/mod.rs function _panic_exit (line 7) | fn _panic_exit() -> ! { FILE: 15_virtual_mem_part3_precomputed_tables/kernel/tests/panic_wait_forever/mod.rs function _panic_exit (line 7) | fn _panic_exit() -> ! { FILE: 15_virtual_mem_part3_precomputed_tables/libraries/test-macros/src/lib.rs function kernel_test (line 11) | pub fn kernel_test(_attr: TokenStream, input: TokenStream) -> TokenStream { FILE: 15_virtual_mem_part3_precomputed_tables/libraries/test-types/src/lib.rs type UnitTest (line 10) | pub struct UnitTest { FILE: 15_virtual_mem_part3_precomputed_tables/tools/translation_table_tool/arch.rb class BitField (line 8) | class BitField method initialize (line 9) | def initialize method attr_bitfield (line 13) | def self.attr_bitfield(name, offset, num_bits) method to_i (line 27) | def to_i method size_in_byte (line 31) | def size_in_byte class CArray (line 37) | class CArray < Array method initialize (line 40) | def initialize(phys_start_addr, size, &block) method size_in_byte (line 46) | def size_in_byte type Arch (line 54) | module Arch type ARMv8 (line 58) | module ARMv8 class Stage1TableDescriptor (line 60) | class Stage1TableDescriptor < BitField type NextLevelTableAddr (line 61) | module NextLevelTableAddr type Type (line 66) | module Type type Valid (line 74) | module Valid method next_level_table_addr= (line 86) | def next_level_table_addr=(addr) class Stage1PageDescriptor (line 96) | class Stage1PageDescriptor < BitField type UXN (line 97) | module UXN type PXN (line 105) | module PXN type OutputAddr (line 113) | module OutputAddr type AF (line 118) | module AF type SH (line 126) | module SH type AP (line 133) | module AP type AttrIndx (line 141) | module AttrIndx type Type (line 146) | module Type type Valid (line 154) | module Valid method output_addr= (line 172) | def output_addr=(addr) class TranslationTable (line 182) | class TranslationTable type MAIR (line 183) | module MAIR method initialize (line 187) | def initialize method map_at (line 200) | def map_at(virt_region, phys_region, attributes) method to_binary (line 212) | def to_binary method phys_tables_base_addr_binary (line 217) | def phys_tables_base_addr_binary method phys_tables_base_addr (line 221) | def phys_tables_base_addr method do_sanity_checks (line 227) | def do_sanity_checks method new_lvl3 (line 232) | def new_lvl3(num_lvl2_tables, start_addr) method new_lvl2 (line 243) | def new_lvl2(num_lvl2_tables, start_addr) method populate_lvl2_entries (line 249) | def populate_lvl2_entries method lvl2_lvl3_index_from (line 257) | def lvl2_lvl3_index_from(addr) method page_descriptor_from (line 266) | def page_descriptor_from(virt_addr) method set_attributes (line 273) | def set_attributes(desc, attributes) method set_lvl3_entry (line 302) | def set_lvl3_entry(desc, output_addr, attributes) FILE: 15_virtual_mem_part3_precomputed_tables/tools/translation_table_tool/bsp.rb class RaspberryPi (line 8) | class RaspberryPi method initialize (line 13) | def initialize method phys_addr_of_kernel_tables (line 24) | def phys_addr_of_kernel_tables method kernel_tables_offset_in_file (line 28) | def kernel_tables_offset_in_file method phys_kernel_tables_base_addr_offset_in_file (line 32) | def phys_kernel_tables_base_addr_offset_in_file method phys_addr_space_end_page (line 36) | def phys_addr_space_end_page FILE: 15_virtual_mem_part3_precomputed_tables/tools/translation_table_tool/generic.rb type Granule64KiB (line 7) | module Granule64KiB type Granule512MiB (line 12) | module Granule512MiB class Integer (line 19) | class Integer method power_of_two? (line 20) | def power_of_two? method aligned? (line 24) | def aligned?(alignment) method align_up (line 30) | def align_up(alignment) method to_hex_underscore (line 36) | def to_hex_underscore(with_leading_zeros: false) class MemoryRegion (line 45) | class MemoryRegion < Array method initialize (line 46) | def initialize(start_addr, size, granule_size) class AttributeFields (line 59) | class AttributeFields method initialize (line 62) | def initialize(mem_attributes, acc_perms, execute_never) method to_s (line 68) | def to_s class MappingDescriptor (line 92) | class MappingDescriptor method update_max_section_name_length (line 98) | def update_max_section_name_length(length) method initialize (line 105) | def initialize(name, virt_region, phys_region, attributes) method to_s (line 112) | def to_s method print_divider (line 121) | def self.print_divider method print_header (line 127) | def self.print_header function kernel_map_binary (line 144) | def kernel_map_binary function kernel_patch_tables (line 162) | def kernel_patch_tables(kernel_elf_path) function kernel_patch_base_addr (line 170) | def kernel_patch_base_addr(kernel_elf_path) FILE: 15_virtual_mem_part3_precomputed_tables/tools/translation_table_tool/kernel_elf.rb class KernelELF (line 8) | class KernelELF method initialize (line 11) | def initialize(kernel_elf_path) method machine (line 16) | def machine method symbol_value (line 20) | def symbol_value(symbol_name) method segment_containing_virt_addr (line 24) | def segment_containing_virt_addr(virt_addr) method virt_to_phys (line 30) | def virt_to_phys(virt_addr) method virt_addr_to_file_offset (line 37) | def virt_addr_to_file_offset(virt_addr) method sections_in_segment (line 42) | def sections_in_segment(segment) method select_load_segments (line 56) | def select_load_segments method segment_get_acc_perms (line 62) | def segment_get_acc_perms(segment) method update_max_section_name_length (line 72) | def update_max_section_name_length(descriptors) method generate_mapping_descriptors (line 76) | def generate_mapping_descriptors FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/build.rs function main (line 3) | fn main() { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/_arch/aarch64/cpu.rs function wait_forever (line 24) | pub fn wait_forever() -> ! { constant QEMU_EXIT_HANDLE (line 37) | const QEMU_EXIT_HANDLE: qemu_exit::AArch64 = qemu_exit::AArch64::new(); function qemu_exit_failure (line 41) | pub fn qemu_exit_failure() -> ! { function qemu_exit_success (line 47) | pub fn qemu_exit_success() -> ! { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/_arch/aarch64/cpu/boot.rs function prepare_el2_to_el1_transition (line 37) | unsafe fn prepare_el2_to_el1_transition( function _start_rust (line 82) | pub unsafe extern "C" fn _start_rust( FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/_arch/aarch64/cpu/smp.rs function core_id (line 23) | pub fn core_id() -> T FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/_arch/aarch64/exception.rs type SpsrEL1 (line 31) | struct SpsrEL1(InMemoryRegister); method fmt (line 161) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type EsrEL1 (line 32) | struct EsrEL1(InMemoryRegister); method exception_class (line 193) | fn exception_class(&self) -> Option { method iss (line 199) | fn iss(&self) -> u64 { method fmt (line 207) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type ExceptionContext (line 36) | struct ExceptionContext { method exception_class (line 228) | fn exception_class(&self) -> Option { method fault_address_valid (line 233) | fn fault_address_valid(&self) -> bool { method fmt (line 254) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { function default_exception_handler (line 58) | fn default_exception_handler(exc: &ExceptionContext) { function current_el0_synchronous (line 71) | extern "C" fn current_el0_synchronous(_e: &mut ExceptionContext) { function current_el0_irq (line 76) | extern "C" fn current_el0_irq(_e: &mut ExceptionContext) { function current_el0_serror (line 81) | extern "C" fn current_el0_serror(_e: &mut ExceptionContext) { function current_elx_synchronous (line 90) | extern "C" fn current_elx_synchronous(e: &mut ExceptionContext) { function current_elx_irq (line 106) | extern "C" fn current_elx_irq(_e: &mut ExceptionContext) { function current_elx_serror (line 112) | extern "C" fn current_elx_serror(e: &mut ExceptionContext) { function lower_aarch64_synchronous (line 121) | extern "C" fn lower_aarch64_synchronous(e: &mut ExceptionContext) { function lower_aarch64_irq (line 126) | extern "C" fn lower_aarch64_irq(e: &mut ExceptionContext) { function lower_aarch64_serror (line 131) | extern "C" fn lower_aarch64_serror(e: &mut ExceptionContext) { function lower_aarch32_synchronous (line 140) | extern "C" fn lower_aarch32_synchronous(e: &mut ExceptionContext) { function lower_aarch32_irq (line 145) | extern "C" fn lower_aarch32_irq(e: &mut ExceptionContext) { function lower_aarch32_serror (line 150) | extern "C" fn lower_aarch32_serror(e: &mut ExceptionContext) { function current_privilege_level (line 285) | pub fn current_privilege_level() -> (PrivilegeLevel, &'static str) { function handling_init (line 303) | pub unsafe fn handling_init() { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/_arch/aarch64/exception/asynchronous.rs constant IRQ (line 23) | pub const IRQ: u8 = 0b0010; type DaifField (line 26) | trait DaifField { method daif_field (line 27) | fn daif_field() -> tock_registers::fields::Field; method daif_field (line 40) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 46) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 52) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 58) | fn daif_field() -> tock_registers::fields::Field { type Debug (line 30) | struct Debug; type SError (line 31) | struct SError; type IRQ (line 32) | struct IRQ; type FIQ (line 33) | struct FIQ; function is_masked (line 63) | fn is_masked() -> bool function is_local_irq_masked (line 75) | pub fn is_local_irq_masked() -> bool { function local_irq_unmask (line 87) | pub fn local_irq_unmask() { function local_irq_mask (line 99) | pub fn local_irq_mask() { function local_irq_mask_save (line 111) | pub fn local_irq_mask_save() -> u64 { function local_irq_restore (line 124) | pub fn local_irq_restore(saved: u64) { function print_state (line 130) | pub fn print_state() { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/_arch/aarch64/memory/mmu.rs type MemoryManagementUnit (line 29) | struct MemoryManagementUnit; method set_up_mair (line 70) | fn set_up_mair(&self) { method configure_translation_control (line 84) | fn configure_translation_control(&self) { method enable_mmu_and_caching (line 117) | unsafe fn enable_mmu_and_caching( method is_enabled (line 155) | fn is_enabled(&self) -> bool { type Granule512MiB (line 35) | pub type Granule512MiB = TranslationGranule<{ 512 * 1024 * 1024 }>; type Granule64KiB (line 36) | pub type Granule64KiB = TranslationGranule<{ 64 * 1024 }>; constant DEVICE (line 41) | pub const DEVICE: u64 = 0; constant NORMAL (line 42) | pub const NORMAL: u64 = 1; function arch_address_space_size_sanity_checks (line 57) | pub const fn arch_address_space_size_sanity_checks() { function mmu (line 107) | pub fn mmu() -> &'static impl memory::mmu::interface::MMU { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/_arch/aarch64/memory/mmu/translation_table.rs type TableDescriptor (line 114) | struct TableDescriptor { method new_zeroed (line 164) | pub const fn new_zeroed() -> Self { method from_next_lvl_table_addr (line 169) | pub fn from_next_lvl_table_addr(phys_next_lvl_table_addr: Address Self { method from_output_page_addr (line 258) | pub fn from_output_page_addr( method is_valid (line 277) | fn is_valid(&self) -> bool { method output_page_addr (line 283) | fn output_page_addr(&self) -> PageAddress { method try_attributes (line 291) | fn try_attributes(&self) -> Result { type StartAddr (line 127) | trait StartAddr { method virt_start_addr (line 128) | fn virt_start_addr(&self) -> Address; method virt_start_addr (line 155) | fn virt_start_addr(&self) -> Address { type FixedSizeTranslationTable (line 139) | pub struct FixedSizeTranslationTable Self { type Error (line 222) | type Error = &'static str; method try_from (line 224) | fn try_from( type TableStartFromTop (line 305) | type TableStartFromTop = type TableStartFromBottom (line 308) | type TableStartFromBottom = constant START_FROM_TOP_OFFSET (line 315) | const START_FROM_TOP_OFFSET: Address = function _new (line 320) | const fn _new(for_precompute: bool) -> Self { function new_for_precompute (line 333) | pub const fn new_for_precompute() -> Self { function new_for_runtime (line 338) | pub fn new_for_runtime() -> Self { function lvl2_lvl3_index_from_page_addr (line 344) | fn lvl2_lvl3_index_from_page_addr( function page_descriptor_from_page_addr (line 366) | fn page_descriptor_from_page_addr( function set_page_descriptor_from_page_addr (line 380) | fn set_page_descriptor_from_page_addr( function init (line 405) | fn init(&mut self) -> Result<(), &'static str> { function map_at (line 424) | unsafe fn map_at( function try_virt_page_addr_to_phys_page_addr (line 452) | fn try_virt_page_addr_to_phys_page_addr( function try_page_attributes (line 465) | fn try_page_attributes( function try_virt_addr_to_phys_addr (line 481) | fn try_virt_addr_to_phys_addr( type MinSizeTranslationTable (line 497) | pub type MinSizeTranslationTable = FixedSizeTranslationTable<1, true>; function size_of_tabledescriptor_equals_64_bit (line 506) | fn size_of_tabledescriptor_equals_64_bit() { function size_of_pagedescriptor_equals_64_bit (line 515) | fn size_of_pagedescriptor_equals_64_bit() { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/_arch/aarch64/time.rs constant NANOSEC_PER_SEC (line 27) | const NANOSEC_PER_SEC: NonZeroU64 = NonZeroU64::new(1_000_000_000).unwra... type GenericTimerCounterValue (line 30) | struct GenericTimerCounterValue(u64); constant MAX (line 55) | pub const MAX: Self = GenericTimerCounterValue(u64::MAX); type Error (line 96) | type Error = &'static str; method try_from (line 98) | fn try_from(duration: Duration) -> Result { function arch_timer_counter_frequency (line 45) | fn arch_timer_counter_frequency() -> NonZeroU32 { type Output (line 59) | type Output = Self; method add (line 61) | fn add(self, other: Self) -> Self { method from (line 67) | fn from(counter_value: GenericTimerCounterValue) -> Self { function max_duration (line 91) | fn max_duration() -> Duration { function read_cntpct (line 121) | fn read_cntpct() -> GenericTimerCounterValue { function resolution (line 134) | pub fn resolution() -> Duration { function uptime (line 141) | pub fn uptime() -> Duration { function spin_for (line 146) | pub fn spin_for(duration: Duration) { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/bsp/device_driver/arm/gicv2.rs type HandlerTable (line 94) | type HandlerTable = [Option; type GICv2 (line 105) | pub struct GICv2 { constant MAX_IRQ_NUMBER (line 121) | const MAX_IRQ_NUMBER: usize = 300; constant COMPATIBLE (line 123) | pub const COMPATIBLE: &'static str = "GICv2 (ARM Generic Interrupt Con... method new (line 130) | pub const unsafe fn new( type IRQNumberType (line 148) | type IRQNumberType = IRQNumber; method compatible (line 150) | fn compatible(&self) -> &'static str { method init (line 154) | unsafe fn init(&self) -> Result<(), &'static str> { type IRQNumberType (line 167) | type IRQNumberType = IRQNumber; method register_handler (line 169) | fn register_handler( method enable (line 186) | fn enable(&self, irq_number: &Self::IRQNumberType) { method handle_pending_irqs (line 190) | fn handle_pending_irqs<'irq_context>( method print_handler (line 218) | fn print_handler(&self) { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/bsp/device_driver/arm/gicv2/gicc.rs type Registers (line 59) | type Registers = MMIODerefWrapper; type GICC (line 66) | pub struct GICC { method new (line 80) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method priority_accept_all (line 97) | pub fn priority_accept_all(&self) { method enable (line 107) | pub fn enable(&self) { method pending_irq_number (line 120) | pub fn pending_irq_number<'irq_context>( method mark_comleted (line 138) | pub fn mark_comleted<'irq_context>( FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/bsp/device_driver/arm/gicv2/gicd.rs type SharedRegisters (line 73) | type SharedRegisters = MMIODerefWrapper; method num_irqs (line 98) | fn num_irqs(&mut self) -> usize { method implemented_itargets_slice (line 107) | fn implemented_itargets_slice(&mut self) -> &[ReadWrite; type GICD (line 83) | pub struct GICD { method new (line 133) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method local_gic_target_mask (line 146) | fn local_gic_target_mask(&self) -> u32 { method boot_core_init (line 151) | pub fn boot_core_init(&self) { method enable (line 175) | pub fn enable(&self, irq_num: &super::IRQNumber) { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/bsp/device_driver/bcm/bcm2xxx_gpio.rs type Registers (line 113) | type Registers = MMIODerefWrapper; type GPIOInner (line 115) | struct GPIOInner { method new (line 138) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method disable_pud_14_15_bcm2837 (line 146) | fn disable_pud_14_15_bcm2837(&mut self) { method disable_pud_14_15_bcm2711 (line 167) | fn disable_pud_14_15_bcm2711(&mut self) { method map_pl011_uart (line 178) | pub fn map_pl011_uart(&mut self) { type GPIO (line 124) | pub struct GPIO { constant COMPATIBLE (line 198) | pub const COMPATIBLE: &'static str = "BCM GPIO"; method new (line 205) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method map_pl011_uart (line 212) | pub fn map_pl011_uart(&self) { type IRQNumberType (line 223) | type IRQNumberType = IRQNumber; method compatible (line 225) | fn compatible(&self) -> &'static str { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/bsp/device_driver/bcm/bcm2xxx_interrupt_controller.rs type PendingIRQs (line 22) | struct PendingIRQs { method new (line 51) | pub fn new(bitmask: u64) -> Self { type LocalIRQ (line 30) | pub type LocalIRQ = BoundedUsize<{ InterruptController::MAX_LOCAL_IRQ_NU... type PeripheralIRQ (line 31) | pub type PeripheralIRQ = BoundedUsize<{ InterruptController::MAX_PERIPHE... type IRQNumber (line 36) | pub enum IRQNumber { method fmt (line 75) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type InterruptController (line 42) | pub struct InterruptController { constant MAX_LOCAL_IRQ_NUMBER (line 85) | const MAX_LOCAL_IRQ_NUMBER: usize = 3; constant MAX_PERIPHERAL_IRQ_NUMBER (line 86) | const MAX_PERIPHERAL_IRQ_NUMBER: usize = 63; constant COMPATIBLE (line 88) | pub const COMPATIBLE: &'static str = "BCM Interrupt Controller"; method new (line 95) | pub const unsafe fn new(periph_mmio_start_addr: Address) -> S... type IRQNumberType (line 107) | type IRQNumberType = IRQNumber; method compatible (line 109) | fn compatible(&self) -> &'static str { type IRQNumberType (line 115) | type IRQNumberType = IRQNumber; method register_handler (line 117) | fn register_handler( method enable (line 135) | fn enable(&self, irq: &Self::IRQNumberType) { method handle_pending_irqs (line 142) | fn handle_pending_irqs<'irq_context>( method print_handler (line 150) | fn print_handler(&self) { type Item (line 57) | type Item = usize; method next (line 59) | fn next(&mut self) -> Option { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/bsp/device_driver/bcm/bcm2xxx_interrupt_controller/peripheral_ic.rs type WriteOnlyRegisters (line 50) | type WriteOnlyRegisters = MMIODerefWrapper; type ReadOnlyRegisters (line 53) | type ReadOnlyRegisters = MMIODerefWrapper; type HandlerTable (line 55) | type HandlerTable = [Option) -> Self { method pending_irqs (line 93) | fn pending_irqs(&self) -> PendingIRQs { type IRQNumberType (line 107) | type IRQNumberType = PeripheralIRQ; method register_handler (line 109) | fn register_handler( method enable (line 126) | fn enable(&self, irq: &Self::IRQNumberType) { method handle_pending_irqs (line 142) | fn handle_pending_irqs<'irq_context>( method print_handler (line 159) | fn print_handler(&self) { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/bsp/device_driver/bcm/bcm2xxx_pl011_uart.rs type Registers (line 215) | type Registers = MMIODerefWrapper; type BlockingMode (line 218) | enum BlockingMode { type PL011UartInner (line 223) | struct PL011UartInner { method new (line 248) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method init (line 273) | pub fn init(&mut self) { method write_char (line 318) | fn write_char(&mut self, c: char) { method flush (line 331) | fn flush(&self) { method read_char_converting (line 339) | fn read_char_converting(&mut self, blocking_mode: BlockingMode) -> Opt... method write_str (line 378) | fn write_str(&mut self, s: &str) -> fmt::Result { type PL011Uart (line 234) | pub struct PL011Uart { constant COMPATIBLE (line 392) | pub const COMPATIBLE: &'static str = "BCM PL011 UART"; method new (line 399) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { type IRQNumberType (line 412) | type IRQNumberType = IRQNumber; method compatible (line 414) | fn compatible(&self) -> &'static str { method init (line 418) | unsafe fn init(&self) -> Result<(), &'static str> { method register_and_enable_irq_handler (line 424) | fn register_and_enable_irq_handler( method write_char (line 442) | fn write_char(&self, c: char) { method write_fmt (line 446) | fn write_fmt(&self, args: core::fmt::Arguments) -> fmt::Result { method flush (line 452) | fn flush(&self) { method read_char (line 459) | fn read_char(&self) -> char { method clear_rx (line 464) | fn clear_rx(&self) { method chars_written (line 475) | fn chars_written(&self) -> usize { method chars_read (line 479) | fn chars_read(&self) -> usize { method handle (line 487) | fn handle(&self) -> Result<(), &'static str> { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/bsp/device_driver/common.rs type MMIODerefWrapper (line 14) | pub struct MMIODerefWrapper { type BoundedUsize (line 21) | pub struct BoundedUsize(usize); function new (line 29) | pub const unsafe fn new(start_addr: Address) -> Self { type Target (line 38) | type Target = T; function deref (line 40) | fn deref(&self) -> &Self::Target { constant MAX_INCLUSIVE (line 46) | pub const MAX_INCLUSIVE: usize = MAX_INCLUSIVE; function new (line 49) | pub const fn new(number: usize) -> Self { function get (line 56) | pub const fn get(self) -> usize { function fmt (line 62) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/bsp/raspberrypi.rs function board_name (line 17) | pub fn board_name() -> &'static str { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/bsp/raspberrypi/driver.rs function instantiate_uart (line 39) | unsafe fn instantiate_uart() -> Result<(), &'static str> { function post_init_uart (line 50) | unsafe fn post_init_uart() -> Result<(), &'static str> { function instantiate_gpio (line 57) | unsafe fn instantiate_gpio() -> Result<(), &'static str> { function post_init_gpio (line 68) | unsafe fn post_init_gpio() -> Result<(), &'static str> { function instantiate_interrupt_controller (line 75) | unsafe fn instantiate_interrupt_controller() -> Result<(), &'static str> { function instantiate_interrupt_controller (line 90) | unsafe fn instantiate_interrupt_controller() -> Result<(), &'static str> { function post_init_interrupt_controller (line 103) | unsafe fn post_init_interrupt_controller() -> Result<(), &'static str> { function driver_uart (line 110) | unsafe fn driver_uart() -> Result<(), &'static str> { function driver_gpio (line 124) | unsafe fn driver_gpio() -> Result<(), &'static str> { function driver_interrupt_controller (line 138) | unsafe fn driver_interrupt_controller() -> Result<(), &'static str> { function init (line 160) | pub unsafe fn init() -> Result<(), &'static str> { function qemu_bring_up_console (line 177) | pub fn qemu_bring_up_console() { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/bsp/raspberrypi/exception/asynchronous.rs constant PL011_UART (line 20) | pub const PL011_UART: IRQNumber = IRQNumber::Peripheral(PeripheralIRQ::n... constant PL011_UART (line 27) | pub const PL011_UART: IRQNumber = IRQNumber::new(153); FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/bsp/raspberrypi/memory.rs constant PERIPHERAL_IC_START (line 105) | pub const PERIPHERAL_IC_START: Address = Address::new(0x3F00_B... constant PERIPHERAL_IC_SIZE (line 106) | pub const PERIPHERAL_IC_SIZE: usize = 0x24; constant GPIO_START (line 108) | pub const GPIO_START: Address = Address::new(0x3F20_0... constant GPIO_SIZE (line 109) | pub const GPIO_SIZE: usize = 0xA0; constant PL011_UART_START (line 111) | pub const PL011_UART_START: Address = Address::new(0x3F20_1... constant PL011_UART_SIZE (line 112) | pub const PL011_UART_SIZE: usize = 0x48; constant END (line 114) | pub const END: Address = Address::new(0x4001_0... constant GPIO_START (line 122) | pub const GPIO_START: Address = Address::new(0xFE20_0000); constant GPIO_SIZE (line 123) | pub const GPIO_SIZE: usize = 0xA0; constant PL011_UART_START (line 125) | pub const PL011_UART_START: Address = Address::new(0xFE20_1000); constant PL011_UART_SIZE (line 126) | pub const PL011_UART_SIZE: usize = 0x48; constant GICD_START (line 128) | pub const GICD_START: Address = Address::new(0xFF84_1000); constant GICD_SIZE (line 129) | pub const GICD_SIZE: usize = 0x824; constant GICC_START (line 131) | pub const GICC_START: Address = Address::new(0xFF84_2000); constant GICC_SIZE (line 132) | pub const GICC_SIZE: usize = 0x14; constant END (line 134) | pub const END: Address = Address::new(0xFF85_0000); constant END (line 137) | pub const END: Address = mmio::END; function virt_code_start (line 150) | fn virt_code_start() -> PageAddress { function code_size (line 160) | fn code_size() -> usize { function virt_data_start (line 166) | fn virt_data_start() -> PageAddress { function data_size (line 176) | fn data_size() -> usize { function virt_mmio_remap_start (line 186) | fn virt_mmio_remap_start() -> PageAddress { function mmio_remap_size (line 196) | fn mmio_remap_size() -> usize { function virt_boot_core_stack_start (line 202) | fn virt_boot_core_stack_start() -> PageAddress { function boot_core_stack_size (line 208) | fn boot_core_stack_size() -> usize { function phys_addr_space_end_exclusive_addr (line 220) | pub fn phys_addr_space_end_exclusive_addr() -> PageAddress { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/bsp/raspberrypi/memory/mmu.rs type KernelTranslationTable (line 22) | type KernelTranslationTable = type KernelGranule (line 31) | pub type KernelGranule = TranslationGranule<{ 64 * 1024 }>; type KernelVirtAddrSpace (line 34) | pub type KernelVirtAddrSpace = AddressSpace<{ kernel_virt_addr_space_siz... function kernel_virt_addr_space_size (line 67) | const fn kernel_virt_addr_space_size() -> usize { function size_to_num_pages (line 76) | const fn size_to_num_pages(size: usize) -> usize { function virt_code_region (line 84) | fn virt_code_region() -> MemoryRegion { function virt_data_region (line 94) | fn virt_data_region() -> MemoryRegion { function virt_boot_core_stack_region (line 104) | fn virt_boot_core_stack_region() -> MemoryRegion { function kernel_virt_to_phys_region (line 115) | fn kernel_virt_to_phys_region(virt_region: MemoryRegion) -> Mem... function kernel_page_attributes (line 127) | fn kernel_page_attributes(virt_page_addr: PageAddress) -> Attri... function kernel_translation_tables (line 136) | pub fn kernel_translation_tables() -> &'static InitStateLock MemoryRegion { function kernel_add_mapping_records_for_precomputed (line 155) | pub fn kernel_add_mapping_records_for_precomputed() { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/common.rs function is_aligned (line 9) | pub const fn is_aligned(value: usize, alignment: usize) -> bool { function align_down (line 17) | pub const fn align_down(value: usize, alignment: usize) -> usize { function align_up (line 25) | pub const fn align_up(value: usize, alignment: usize) -> usize { function size_human_readable_ceil (line 32) | pub const fn size_human_readable_ceil(size: usize) -> (usize, &'static s... FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/console.rs type Write (line 20) | pub trait Write { method write_char (line 22) | fn write_char(&self, c: char); method write_fmt (line 25) | fn write_fmt(&self, args: fmt::Arguments) -> fmt::Result; method flush (line 28) | fn flush(&self); type Read (line 32) | pub trait Read { method read_char (line 34) | fn read_char(&self) -> char { method clear_rx (line 39) | fn clear_rx(&self); type Statistics (line 43) | pub trait Statistics { method chars_written (line 45) | fn chars_written(&self) -> usize { method chars_read (line 50) | fn chars_read(&self) -> usize { type All (line 56) | pub trait All: Write + Read + Statistics {} function register_console (line 72) | pub fn register_console(new_console: &'static (dyn interface::All + Sync... function console (line 79) | pub fn console() -> &'static dyn interface::All { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/console/null_console.rs type NullConsole (line 14) | pub struct NullConsole; method write_char (line 27) | fn write_char(&self, _c: char) {} method write_fmt (line 29) | fn write_fmt(&self, _args: fmt::Arguments) -> fmt::Result { method flush (line 33) | fn flush(&self) {} method clear_rx (line 37) | fn clear_rx(&self) {} FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/driver.rs constant NUM_DRIVERS (line 17) | const NUM_DRIVERS: usize = 5; type DriverManagerInner (line 19) | struct DriverManagerInner type DeviceDriver (line 34) | pub trait DeviceDriver { method compatible (line 39) | fn compatible(&self) -> &'static str; method init (line 46) | unsafe fn init(&self) -> Result<(), &'static str> { method register_and_enable_irq_handler (line 54) | fn register_and_enable_irq_handler( type DeviceDriverPostInitCallback (line 68) | pub type DeviceDriverPostInitCallback = unsafe fn() -> Result<(), &'stat... type DeviceDriverDescriptor (line 72) | pub struct DeviceDriverDescriptor type DriverManager (line 82) | pub struct DriverManager function new (line 104) | pub const fn new() -> Self { function new (line 118) | pub fn new( function driver_manager (line 132) | pub fn driver_manager() -> &'static DriverManager Self { function register_driver (line 148) | pub fn register_driver(&self, descriptor: DeviceDriverDescriptor) { function for_each_descriptor (line 156) | fn for_each_descriptor<'a>(&'a self, f: impl FnMut(&'a DeviceDriverDescr... function init_drivers_and_irqs (line 171) | pub unsafe fn init_drivers_and_irqs(&self) { function enumerate (line 213) | pub fn enumerate(&self) { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/exception.rs type PrivilegeLevel (line 25) | pub enum PrivilegeLevel { function test_runner_executes_in_kernel_mode (line 43) | fn test_runner_executes_in_kernel_mode() { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/exception/asynchronous.rs type IRQNumber (line 28) | pub type IRQNumber = bsp::exception::asynchronous::IRQNumber; type IRQHandlerDescriptor (line 32) | pub struct IRQHandlerDescriptor type IRQContext (line 54) | pub struct IRQContext<'irq_context> { type IRQHandler (line 62) | pub trait IRQHandler { method handle (line 64) | fn handle(&self) -> Result<(), &'static str>; type IRQManager (line 71) | pub trait IRQManager { method register_handler (line 76) | fn register_handler( method enable (line 82) | fn enable(&self, irq_number: &Self::IRQNumberType); method handle_pending_irqs (line 92) | fn handle_pending_irqs<'irq_context>( method print_handler (line 98) | fn print_handler(&self) {} function new (line 120) | pub const fn new( function number (line 133) | pub const fn number(&self) -> T { function name (line 138) | pub const fn name(&self) -> &'static str { function handler (line 143) | pub const fn handler(&self) -> &'static (dyn interface::IRQHandler + Syn... function new (line 160) | pub unsafe fn new() -> Self { function exec_with_irq_masked (line 170) | pub fn exec_with_irq_masked(f: impl FnOnce() -> T) -> T { function register_irq_manager (line 179) | pub fn register_irq_manager( function irq_manager (line 188) | pub fn irq_manager() -> &'static dyn interface::IRQManager(&'irq_context self, _ic: &IRQCont... FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/lib.rs function version (line 152) | pub fn version() -> &'static str { function test_runner (line 165) | pub fn test_runner(tests: &[&test_types::UnitTest]) { function kernel_init (line 183) | unsafe fn kernel_init() -> ! { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/main.rs function kernel_init (line 27) | unsafe fn kernel_init() -> ! { function kernel_main (line 52) | fn kernel_main() -> ! { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/memory.rs type AddressType (line 21) | pub trait AddressType: Copy + Clone + PartialOrd + PartialEq + Ord + Eq {} type Physical (line 25) | pub enum Physical {} type Virtual (line 29) | pub enum Virtual {} type Address (line 33) | pub struct Address { function new (line 47) | pub const fn new(value: usize) -> Self { function as_usize (line 55) | pub const fn as_usize(self) -> usize { function align_down_page (line 61) | pub const fn align_down_page(self) -> Self { function align_up_page (line 69) | pub const fn align_up_page(self) -> Self { function is_page_aligned (line 76) | pub const fn is_page_aligned(&self) -> bool { function offset_into_page (line 81) | pub const fn offset_into_page(&self) -> usize { type Output (line 87) | type Output = Self; function add (line 90) | fn add(self, rhs: usize) -> Self::Output { type Output (line 99) | type Output = Self; function sub (line 102) | fn sub(self, rhs: Address) -> Self::Output { function fmt (line 112) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { function fmt (line 125) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { function init (line 140) | pub fn init() { function address_type_method_sanity (line 155) | fn address_type_method_sanity() { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/memory/mmu.rs type MMUEnableError (line 33) | pub enum MMUEnableError { method fmt (line 122) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { type MMU (line 43) | pub trait MMU { method enable_mmu_and_caching (line 49) | unsafe fn enable_mmu_and_caching( method is_enabled (line 55) | fn is_enabled(&self) -> bool; type TranslationGranule (line 60) | pub struct TranslationGranule; type AddressSpace (line 63) | pub struct AddressSpace; type AssociatedTranslationTable (line 66) | pub trait AssociatedTranslationTable { function kernel_map_at_unchecked (line 93) | unsafe fn kernel_map_at_unchecked( function try_kernel_virt_addr_to_phys_addr (line 110) | fn try_kernel_virt_addr_to_phys_addr( constant SIZE (line 132) | pub const SIZE: usize = Self::size_checked(); constant MASK (line 135) | pub const MASK: usize = Self::SIZE - 1; constant SHIFT (line 138) | pub const SHIFT: usize = Self::SIZE.trailing_zeros() as usize; function size_checked (line 140) | const fn size_checked() -> usize { constant SIZE (line 149) | pub const SIZE: usize = Self::size_checked(); constant SIZE_SHIFT (line 152) | pub const SIZE_SHIFT: usize = Self::SIZE.trailing_zeros() as usize; function size_checked (line 154) | const fn size_checked() -> usize { function kernel_init_mmio_va_allocator (line 166) | pub fn kernel_init_mmio_va_allocator() { function kernel_add_mapping_record (line 173) | pub fn kernel_add_mapping_record( function kernel_map_mmio (line 191) | pub unsafe fn kernel_map_mmio( function try_kernel_virt_page_addr_to_phys_page_addr (line 233) | pub fn try_kernel_virt_page_addr_to_phys_page_addr( function try_kernel_page_attributes (line 243) | pub fn try_kernel_page_attributes( function kernel_print_mappings (line 251) | pub fn kernel_print_mappings() { function enable_mmu_and_caching (line 261) | pub unsafe fn enable_mmu_and_caching( FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/memory/mmu/mapping_record.rs type MappingRecordEntry (line 20) | struct MappingRecordEntry { method new (line 44) | pub fn new( method find_next_free_user (line 59) | fn find_next_free_user(&mut self) -> Result<&mut Option<&'static str>,... method add_user (line 67) | pub fn add_user(&mut self, user: &'static str) -> Result<(), &'static ... type MappingRecord (line 28) | struct MappingRecord { method new (line 75) | pub const fn new() -> Self { method size (line 79) | fn size(&self) -> usize { method sort (line 83) | fn sort(&mut self) { method find_next_free (line 92) | fn find_next_free(&mut self) -> Result<&mut Option... method find_duplicate (line 100) | fn find_duplicate( method add (line 121) | pub fn add( method print (line 142) | pub fn print(&self) { function kernel_add (line 209) | pub fn kernel_add( function kernel_find_and_insert_mmio_duplicate (line 218) | pub fn kernel_find_and_insert_mmio_duplicate( function kernel_print (line 236) | pub fn kernel_print() { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/memory/mmu/page_alloc.rs type PageAllocator (line 20) | pub struct PageAllocator { function kernel_mmio_va_allocator (line 36) | pub fn kernel_mmio_va_allocator() -> &'static IRQSafeNullLock Self { function init (line 47) | pub fn init(&mut self, pool: MemoryRegion) { function alloc (line 57) | pub fn alloc( FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/memory/mmu/translation_table.rs type TranslationTable (line 31) | pub trait TranslationTable { method init (line 38) | fn init(&mut self) -> Result<(), &'static str>; method map_at (line 49) | unsafe fn map_at( method try_virt_page_addr_to_phys_page_addr (line 59) | fn try_virt_page_addr_to_phys_page_addr( method try_page_attributes (line 67) | fn try_page_attributes( method try_virt_addr_to_phys_addr (line 75) | fn try_virt_addr_to_phys_addr( function translationtable_implementation_sanity (line 96) | fn translationtable_implementation_sanity() { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/memory/mmu/types.rs type PageAddress (line 19) | pub struct PageAddress { type MemoryRegion (line 25) | pub struct MemoryRegion { type MemAttributes (line 33) | pub enum MemAttributes { type AccessPermissions (line 41) | pub enum AccessPermissions { type AttributeFields (line 49) | pub struct AttributeFields { type MMIODescriptor (line 57) | pub struct MMIODescriptor { method new (line 280) | pub const fn new(start_addr: Address, size: usize) -> Self { method start_addr (line 291) | pub const fn start_addr(&self) -> Address { method end_addr_exclusive (line 296) | pub fn end_addr_exclusive(&self) -> Address { constant MAX (line 71) | pub const MAX: Self = PageAddress { function into_inner (line 76) | pub fn into_inner(self) -> Address { function checked_offset (line 84) | pub fn checked_offset(self, count: isize) -> Option { function from (line 105) | fn from(addr: usize) -> Self { function from (line 118) | fn from(addr: Address) -> Self { method steps_between (line 126) | fn steps_between(start: &Self, end: &Self) -> Option { method forward_checked (line 138) | fn forward_checked(start: Self, count: usize) -> Option { method backward_checked (line 142) | fn backward_checked(start: Self, count: usize) -> Option { function new (line 152) | pub fn new(start: PageAddress, end_exclusive: PageAddress)... function as_range (line 161) | fn as_range(&self) -> Range> { function start_page_addr (line 166) | pub fn start_page_addr(&self) -> PageAddress { function start_addr (line 171) | pub fn start_addr(&self) -> Address { function end_exclusive_page_addr (line 176) | pub fn end_exclusive_page_addr(&self) -> PageAddress { function end_inclusive_page_addr (line 181) | pub fn end_inclusive_page_addr(&self) -> PageAddress { function contains (line 186) | pub fn contains(&self, addr: Address) -> bool { function overlaps (line 192) | pub fn overlaps(&self, other_region: &Self) -> bool { function num_pages (line 200) | pub fn num_pages(&self) -> usize { function size (line 205) | pub fn size(&self) -> usize { function take_first_n_pages (line 227) | pub fn take_first_n_pages(&mut self, num_pages: NonZeroUsize) -> Result<... type Item (line 251) | type Item = PageAddress; type IntoIter (line 252) | type IntoIter = Range; method into_iter (line 254) | fn into_iter(self) -> Self::IntoIter { function from (line 263) | fn from(desc: MMIODescriptor) -> Self { function pageaddress_type_method_sanity (line 313) | fn pageaddress_type_method_sanity() { function memoryregion_type_method_sanity (line 348) | fn memoryregion_type_method_sanity() { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/panic_wait.rs function _panic_exit (line 19) | fn _panic_exit() -> ! { function panic_prevent_reenter (line 43) | fn panic_prevent_reenter() { function panic (line 61) | fn panic(info: &PanicInfo) -> ! { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/print.rs function _print (line 15) | pub fn _print(args: fmt::Arguments) { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/state.rs type State (line 15) | enum State { type StateManager (line 33) | pub struct StateManager(AtomicU8); constant INIT (line 51) | const INIT: u8 = 0; constant SINGLE_CORE_MAIN (line 52) | const SINGLE_CORE_MAIN: u8 = 1; constant MULTI_CORE_MAIN (line 53) | const MULTI_CORE_MAIN: u8 = 2; method new (line 56) | pub const fn new() -> Self { method state (line 61) | fn state(&self) -> State { method is_init (line 73) | pub fn is_init(&self) -> bool { method transition_to_single_core_main (line 78) | pub fn transition_to_single_core_main(&self) { function state_manager (line 46) | pub fn state_manager() -> &'static StateManager { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/synchronization.rs type Mutex (line 24) | pub trait Mutex { method lock (line 29) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; type ReadWriteEx (line 36) | pub trait ReadWriteEx { method write (line 41) | fn write<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; method read (line 44) | fn read<'a, R>(&'a self, f: impl FnOnce(&'a Self::Data) -> R) -> R; type IRQSafeNullLock (line 55) | pub struct IRQSafeNullLock type InitStateLock (line 65) | pub struct InitStateLock function new (line 81) | pub const fn new(data: T) -> Self { function new (line 93) | pub const fn new(data: T) -> Self { type Data (line 106) | type Data = T; function lock (line 108) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { type Data (line 119) | type Data = T; function write (line 121) | fn write<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { function read (line 136) | fn read<'a, R>(&'a self, f: impl FnOnce(&'a Self::Data) -> R) -> R { function init_state_lock_is_transparent (line 154) | fn init_state_lock_is_transparent() { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/src/time.rs type TimeManager (line 18) | pub struct TimeManager; method new (line 37) | pub const fn new() -> Self { method resolution (line 42) | pub fn resolution(&self) -> Duration { method uptime (line 49) | pub fn uptime(&self) -> Duration { method spin_for (line 54) | pub fn spin_for(&self, duration: Duration) { function time_manager (line 31) | pub fn time_manager() -> &'static TimeManager { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/tests/00_console_sanity.rb class TxRxHandshakeTest (line 10) | class TxRxHandshakeTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, qemu_in) class TxStatisticsTest (line 22) | class TxStatisticsTest < SubtestBase method name (line 23) | def name method run (line 27) | def run(qemu_out, _qemu_in) class RxStatisticsTest (line 33) | class RxStatisticsTest < SubtestBase method name (line 34) | def name method run (line 38) | def run(qemu_out, _qemu_in) function subtest_collection (line 46) | def subtest_collection FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/tests/00_console_sanity.rs function kernel_init (line 17) | unsafe fn kernel_init() -> ! { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/tests/01_timer_sanity.rs function kernel_init (line 18) | unsafe fn kernel_init() -> ! { function timer_is_counting (line 32) | fn timer_is_counting() { function timer_resolution_is_sufficient (line 38) | fn timer_resolution_is_sufficient() { function spin_accuracy_check_1_second (line 45) | fn spin_accuracy_check_1_second() { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/tests/02_exception_sync_page_fault.rs function kernel_init (line 23) | unsafe fn kernel_init() -> ! { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/tests/03_exception_restore_sanity.rb class ExceptionRestoreTest (line 10) | class ExceptionRestoreTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, _qemu_in) function subtest_collection (line 23) | def subtest_collection FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/tests/03_exception_restore_sanity.rs function nested_system_call (line 18) | fn nested_system_call() { function kernel_init (line 32) | unsafe fn kernel_init() -> ! { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/tests/04_exception_irq_sanity.rs function kernel_init (line 17) | unsafe fn kernel_init() -> ! { function local_irq_mask_works (line 31) | fn local_irq_mask_works() { function local_irq_unmask_works (line 44) | fn local_irq_unmask_works() { function local_irq_mask_save_works (line 55) | fn local_irq_mask_save_works() { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/tests/panic_exit_success/mod.rs function _panic_exit (line 7) | fn _panic_exit() -> ! { FILE: 16_virtual_mem_part4_higher_half_kernel/kernel/tests/panic_wait_forever/mod.rs function _panic_exit (line 7) | fn _panic_exit() -> ! { FILE: 16_virtual_mem_part4_higher_half_kernel/libraries/test-macros/src/lib.rs function kernel_test (line 11) | pub fn kernel_test(_attr: TokenStream, input: TokenStream) -> TokenStream { FILE: 16_virtual_mem_part4_higher_half_kernel/libraries/test-types/src/lib.rs type UnitTest (line 10) | pub struct UnitTest { FILE: 16_virtual_mem_part4_higher_half_kernel/tools/translation_table_tool/arch.rb class BitField (line 8) | class BitField method initialize (line 9) | def initialize method attr_bitfield (line 13) | def self.attr_bitfield(name, offset, num_bits) method to_i (line 27) | def to_i method size_in_byte (line 31) | def size_in_byte class CArray (line 37) | class CArray < Array method initialize (line 40) | def initialize(phys_start_addr, size, &block) method size_in_byte (line 46) | def size_in_byte type Arch (line 54) | module Arch type ARMv8 (line 58) | module ARMv8 class Stage1TableDescriptor (line 60) | class Stage1TableDescriptor < BitField type NextLevelTableAddr (line 61) | module NextLevelTableAddr type Type (line 66) | module Type type Valid (line 74) | module Valid method next_level_table_addr= (line 86) | def next_level_table_addr=(addr) class Stage1PageDescriptor (line 96) | class Stage1PageDescriptor < BitField type UXN (line 97) | module UXN type PXN (line 105) | module PXN type OutputAddr (line 113) | module OutputAddr type AF (line 118) | module AF type SH (line 126) | module SH type AP (line 133) | module AP type AttrIndx (line 141) | module AttrIndx type Type (line 146) | module Type type Valid (line 154) | module Valid method output_addr= (line 172) | def output_addr=(addr) class TranslationTable (line 182) | class TranslationTable type MAIR (line 183) | module MAIR method initialize (line 187) | def initialize method map_at (line 200) | def map_at(virt_region, phys_region, attributes) method to_binary (line 212) | def to_binary method phys_tables_base_addr_binary (line 217) | def phys_tables_base_addr_binary method phys_tables_base_addr (line 221) | def phys_tables_base_addr method do_sanity_checks (line 227) | def do_sanity_checks method new_lvl3 (line 232) | def new_lvl3(num_lvl2_tables, start_addr) method new_lvl2 (line 243) | def new_lvl2(num_lvl2_tables, start_addr) method populate_lvl2_entries (line 249) | def populate_lvl2_entries method lvl2_lvl3_index_from (line 257) | def lvl2_lvl3_index_from(addr) method page_descriptor_from (line 268) | def page_descriptor_from(virt_addr) method set_attributes (line 275) | def set_attributes(desc, attributes) method set_lvl3_entry (line 304) | def set_lvl3_entry(desc, output_addr, attributes) FILE: 16_virtual_mem_part4_higher_half_kernel/tools/translation_table_tool/bsp.rb class RaspberryPi (line 8) | class RaspberryPi method initialize (line 13) | def initialize method phys_addr_of_kernel_tables (line 25) | def phys_addr_of_kernel_tables method kernel_tables_offset_in_file (line 29) | def kernel_tables_offset_in_file method phys_kernel_tables_base_addr_offset_in_file (line 33) | def phys_kernel_tables_base_addr_offset_in_file method phys_addr_space_end_page (line 37) | def phys_addr_space_end_page FILE: 16_virtual_mem_part4_higher_half_kernel/tools/translation_table_tool/generic.rb type Granule64KiB (line 7) | module Granule64KiB type Granule512MiB (line 12) | module Granule512MiB class Integer (line 19) | class Integer method power_of_two? (line 20) | def power_of_two? method aligned? (line 24) | def aligned?(alignment) method align_up (line 30) | def align_up(alignment) method to_hex_underscore (line 36) | def to_hex_underscore(with_leading_zeros: false) class MemoryRegion (line 45) | class MemoryRegion < Array method initialize (line 46) | def initialize(start_addr, size, granule_size) class AttributeFields (line 59) | class AttributeFields method initialize (line 62) | def initialize(mem_attributes, acc_perms, execute_never) method to_s (line 68) | def to_s class MappingDescriptor (line 92) | class MappingDescriptor method update_max_section_name_length (line 98) | def update_max_section_name_length(length) method initialize (line 105) | def initialize(name, virt_region, phys_region, attributes) method to_s (line 112) | def to_s method print_divider (line 121) | def self.print_divider method print_header (line 127) | def self.print_header function kernel_map_binary (line 144) | def kernel_map_binary function kernel_patch_tables (line 162) | def kernel_patch_tables(kernel_elf_path) function kernel_patch_base_addr (line 170) | def kernel_patch_base_addr(kernel_elf_path) FILE: 16_virtual_mem_part4_higher_half_kernel/tools/translation_table_tool/kernel_elf.rb class KernelELF (line 8) | class KernelELF method initialize (line 11) | def initialize(kernel_elf_path) method machine (line 16) | def machine method symbol_value (line 20) | def symbol_value(symbol_name) method segment_containing_virt_addr (line 24) | def segment_containing_virt_addr(virt_addr) method virt_to_phys (line 30) | def virt_to_phys(virt_addr) method virt_addr_to_file_offset (line 37) | def virt_addr_to_file_offset(virt_addr) method sections_in_segment (line 42) | def sections_in_segment(segment) method select_load_segments (line 56) | def select_load_segments method segment_get_acc_perms (line 62) | def segment_get_acc_perms(segment) method update_max_section_name_length (line 72) | def update_max_section_name_length(descriptors) method generate_mapping_descriptors (line 76) | def generate_mapping_descriptors FILE: 17_kernel_symbols/kernel/build.rs function main (line 3) | fn main() { FILE: 17_kernel_symbols/kernel/src/_arch/aarch64/cpu.rs function wait_forever (line 24) | pub fn wait_forever() -> ! { constant QEMU_EXIT_HANDLE (line 37) | const QEMU_EXIT_HANDLE: qemu_exit::AArch64 = qemu_exit::AArch64::new(); function qemu_exit_failure (line 41) | pub fn qemu_exit_failure() -> ! { function qemu_exit_success (line 47) | pub fn qemu_exit_success() -> ! { FILE: 17_kernel_symbols/kernel/src/_arch/aarch64/cpu/boot.rs function prepare_el2_to_el1_transition (line 37) | unsafe fn prepare_el2_to_el1_transition( function _start_rust (line 82) | pub unsafe extern "C" fn _start_rust( FILE: 17_kernel_symbols/kernel/src/_arch/aarch64/cpu/smp.rs function core_id (line 23) | pub fn core_id() -> T FILE: 17_kernel_symbols/kernel/src/_arch/aarch64/exception.rs type SpsrEL1 (line 31) | struct SpsrEL1(InMemoryRegister); method fmt (line 161) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type EsrEL1 (line 32) | struct EsrEL1(InMemoryRegister); method exception_class (line 193) | fn exception_class(&self) -> Option { method iss (line 199) | fn iss(&self) -> u64 { method fmt (line 207) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type ExceptionContext (line 36) | struct ExceptionContext { method exception_class (line 228) | fn exception_class(&self) -> Option { method fault_address_valid (line 233) | fn fault_address_valid(&self) -> bool { method fmt (line 254) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { function default_exception_handler (line 58) | fn default_exception_handler(exc: &ExceptionContext) { function current_el0_synchronous (line 71) | extern "C" fn current_el0_synchronous(_e: &mut ExceptionContext) { function current_el0_irq (line 76) | extern "C" fn current_el0_irq(_e: &mut ExceptionContext) { function current_el0_serror (line 81) | extern "C" fn current_el0_serror(_e: &mut ExceptionContext) { function current_elx_synchronous (line 90) | extern "C" fn current_elx_synchronous(e: &mut ExceptionContext) { function current_elx_irq (line 106) | extern "C" fn current_elx_irq(_e: &mut ExceptionContext) { function current_elx_serror (line 112) | extern "C" fn current_elx_serror(e: &mut ExceptionContext) { function lower_aarch64_synchronous (line 121) | extern "C" fn lower_aarch64_synchronous(e: &mut ExceptionContext) { function lower_aarch64_irq (line 126) | extern "C" fn lower_aarch64_irq(e: &mut ExceptionContext) { function lower_aarch64_serror (line 131) | extern "C" fn lower_aarch64_serror(e: &mut ExceptionContext) { function lower_aarch32_synchronous (line 140) | extern "C" fn lower_aarch32_synchronous(e: &mut ExceptionContext) { function lower_aarch32_irq (line 145) | extern "C" fn lower_aarch32_irq(e: &mut ExceptionContext) { function lower_aarch32_serror (line 150) | extern "C" fn lower_aarch32_serror(e: &mut ExceptionContext) { function current_privilege_level (line 293) | pub fn current_privilege_level() -> (PrivilegeLevel, &'static str) { function handling_init (line 311) | pub unsafe fn handling_init() { FILE: 17_kernel_symbols/kernel/src/_arch/aarch64/exception/asynchronous.rs constant IRQ (line 23) | pub const IRQ: u8 = 0b0010; type DaifField (line 26) | trait DaifField { method daif_field (line 27) | fn daif_field() -> tock_registers::fields::Field; method daif_field (line 40) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 46) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 52) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 58) | fn daif_field() -> tock_registers::fields::Field { type Debug (line 30) | struct Debug; type SError (line 31) | struct SError; type IRQ (line 32) | struct IRQ; type FIQ (line 33) | struct FIQ; function is_masked (line 63) | fn is_masked() -> bool function is_local_irq_masked (line 75) | pub fn is_local_irq_masked() -> bool { function local_irq_unmask (line 87) | pub fn local_irq_unmask() { function local_irq_mask (line 99) | pub fn local_irq_mask() { function local_irq_mask_save (line 111) | pub fn local_irq_mask_save() -> u64 { function local_irq_restore (line 124) | pub fn local_irq_restore(saved: u64) { function print_state (line 130) | pub fn print_state() { FILE: 17_kernel_symbols/kernel/src/_arch/aarch64/memory/mmu.rs type MemoryManagementUnit (line 29) | struct MemoryManagementUnit; method set_up_mair (line 70) | fn set_up_mair(&self) { method configure_translation_control (line 84) | fn configure_translation_control(&self) { method enable_mmu_and_caching (line 117) | unsafe fn enable_mmu_and_caching( method is_enabled (line 155) | fn is_enabled(&self) -> bool { type Granule512MiB (line 35) | pub type Granule512MiB = TranslationGranule<{ 512 * 1024 * 1024 }>; type Granule64KiB (line 36) | pub type Granule64KiB = TranslationGranule<{ 64 * 1024 }>; constant DEVICE (line 41) | pub const DEVICE: u64 = 0; constant NORMAL (line 42) | pub const NORMAL: u64 = 1; function arch_address_space_size_sanity_checks (line 57) | pub const fn arch_address_space_size_sanity_checks() { function mmu (line 107) | pub fn mmu() -> &'static impl memory::mmu::interface::MMU { FILE: 17_kernel_symbols/kernel/src/_arch/aarch64/memory/mmu/translation_table.rs type TableDescriptor (line 114) | struct TableDescriptor { method new_zeroed (line 164) | pub const fn new_zeroed() -> Self { method from_next_lvl_table_addr (line 169) | pub fn from_next_lvl_table_addr(phys_next_lvl_table_addr: Address Self { method from_output_page_addr (line 258) | pub fn from_output_page_addr( method is_valid (line 277) | fn is_valid(&self) -> bool { method output_page_addr (line 283) | fn output_page_addr(&self) -> PageAddress { method try_attributes (line 291) | fn try_attributes(&self) -> Result { type StartAddr (line 127) | trait StartAddr { method virt_start_addr (line 128) | fn virt_start_addr(&self) -> Address; method virt_start_addr (line 155) | fn virt_start_addr(&self) -> Address { type FixedSizeTranslationTable (line 139) | pub struct FixedSizeTranslationTable Self { type Error (line 222) | type Error = &'static str; method try_from (line 224) | fn try_from( type TableStartFromTop (line 305) | type TableStartFromTop = type TableStartFromBottom (line 308) | type TableStartFromBottom = constant START_FROM_TOP_OFFSET (line 315) | const START_FROM_TOP_OFFSET: Address = function _new (line 320) | const fn _new(for_precompute: bool) -> Self { function new_for_precompute (line 333) | pub const fn new_for_precompute() -> Self { function new_for_runtime (line 338) | pub fn new_for_runtime() -> Self { function lvl2_lvl3_index_from_page_addr (line 344) | fn lvl2_lvl3_index_from_page_addr( function page_descriptor_from_page_addr (line 366) | fn page_descriptor_from_page_addr( function set_page_descriptor_from_page_addr (line 380) | fn set_page_descriptor_from_page_addr( function init (line 405) | fn init(&mut self) -> Result<(), &'static str> { function map_at (line 424) | unsafe fn map_at( function try_virt_page_addr_to_phys_page_addr (line 452) | fn try_virt_page_addr_to_phys_page_addr( function try_page_attributes (line 465) | fn try_page_attributes( function try_virt_addr_to_phys_addr (line 481) | fn try_virt_addr_to_phys_addr( type MinSizeTranslationTable (line 497) | pub type MinSizeTranslationTable = FixedSizeTranslationTable<1, true>; function size_of_tabledescriptor_equals_64_bit (line 506) | fn size_of_tabledescriptor_equals_64_bit() { function size_of_pagedescriptor_equals_64_bit (line 515) | fn size_of_pagedescriptor_equals_64_bit() { FILE: 17_kernel_symbols/kernel/src/_arch/aarch64/time.rs constant NANOSEC_PER_SEC (line 27) | const NANOSEC_PER_SEC: NonZeroU64 = NonZeroU64::new(1_000_000_000).unwra... type GenericTimerCounterValue (line 30) | struct GenericTimerCounterValue(u64); constant MAX (line 55) | pub const MAX: Self = GenericTimerCounterValue(u64::MAX); type Error (line 96) | type Error = &'static str; method try_from (line 98) | fn try_from(duration: Duration) -> Result { function arch_timer_counter_frequency (line 45) | fn arch_timer_counter_frequency() -> NonZeroU32 { type Output (line 59) | type Output = Self; method add (line 61) | fn add(self, other: Self) -> Self { method from (line 67) | fn from(counter_value: GenericTimerCounterValue) -> Self { function max_duration (line 91) | fn max_duration() -> Duration { function read_cntpct (line 121) | fn read_cntpct() -> GenericTimerCounterValue { function resolution (line 134) | pub fn resolution() -> Duration { function uptime (line 141) | pub fn uptime() -> Duration { function spin_for (line 146) | pub fn spin_for(duration: Duration) { FILE: 17_kernel_symbols/kernel/src/bsp/device_driver/arm/gicv2.rs type HandlerTable (line 94) | type HandlerTable = [Option; type GICv2 (line 105) | pub struct GICv2 { constant MAX_IRQ_NUMBER (line 121) | const MAX_IRQ_NUMBER: usize = 300; constant COMPATIBLE (line 123) | pub const COMPATIBLE: &'static str = "GICv2 (ARM Generic Interrupt Con... method new (line 130) | pub const unsafe fn new( type IRQNumberType (line 148) | type IRQNumberType = IRQNumber; method compatible (line 150) | fn compatible(&self) -> &'static str { method init (line 154) | unsafe fn init(&self) -> Result<(), &'static str> { type IRQNumberType (line 167) | type IRQNumberType = IRQNumber; method register_handler (line 169) | fn register_handler( method enable (line 186) | fn enable(&self, irq_number: &Self::IRQNumberType) { method handle_pending_irqs (line 190) | fn handle_pending_irqs<'irq_context>( method print_handler (line 218) | fn print_handler(&self) { FILE: 17_kernel_symbols/kernel/src/bsp/device_driver/arm/gicv2/gicc.rs type Registers (line 59) | type Registers = MMIODerefWrapper; type GICC (line 66) | pub struct GICC { method new (line 80) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method priority_accept_all (line 97) | pub fn priority_accept_all(&self) { method enable (line 107) | pub fn enable(&self) { method pending_irq_number (line 120) | pub fn pending_irq_number<'irq_context>( method mark_comleted (line 138) | pub fn mark_comleted<'irq_context>( FILE: 17_kernel_symbols/kernel/src/bsp/device_driver/arm/gicv2/gicd.rs type SharedRegisters (line 73) | type SharedRegisters = MMIODerefWrapper; method num_irqs (line 98) | fn num_irqs(&mut self) -> usize { method implemented_itargets_slice (line 107) | fn implemented_itargets_slice(&mut self) -> &[ReadWrite; type GICD (line 83) | pub struct GICD { method new (line 133) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method local_gic_target_mask (line 146) | fn local_gic_target_mask(&self) -> u32 { method boot_core_init (line 151) | pub fn boot_core_init(&self) { method enable (line 175) | pub fn enable(&self, irq_num: &super::IRQNumber) { FILE: 17_kernel_symbols/kernel/src/bsp/device_driver/bcm/bcm2xxx_gpio.rs type Registers (line 113) | type Registers = MMIODerefWrapper; type GPIOInner (line 115) | struct GPIOInner { method new (line 138) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method disable_pud_14_15_bcm2837 (line 146) | fn disable_pud_14_15_bcm2837(&mut self) { method disable_pud_14_15_bcm2711 (line 167) | fn disable_pud_14_15_bcm2711(&mut self) { method map_pl011_uart (line 178) | pub fn map_pl011_uart(&mut self) { type GPIO (line 124) | pub struct GPIO { constant COMPATIBLE (line 198) | pub const COMPATIBLE: &'static str = "BCM GPIO"; method new (line 205) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method map_pl011_uart (line 212) | pub fn map_pl011_uart(&self) { type IRQNumberType (line 223) | type IRQNumberType = IRQNumber; method compatible (line 225) | fn compatible(&self) -> &'static str { FILE: 17_kernel_symbols/kernel/src/bsp/device_driver/bcm/bcm2xxx_interrupt_controller.rs type PendingIRQs (line 22) | struct PendingIRQs { method new (line 51) | pub fn new(bitmask: u64) -> Self { type LocalIRQ (line 30) | pub type LocalIRQ = BoundedUsize<{ InterruptController::MAX_LOCAL_IRQ_NU... type PeripheralIRQ (line 31) | pub type PeripheralIRQ = BoundedUsize<{ InterruptController::MAX_PERIPHE... type IRQNumber (line 36) | pub enum IRQNumber { method fmt (line 75) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type InterruptController (line 42) | pub struct InterruptController { constant MAX_LOCAL_IRQ_NUMBER (line 85) | const MAX_LOCAL_IRQ_NUMBER: usize = 3; constant MAX_PERIPHERAL_IRQ_NUMBER (line 86) | const MAX_PERIPHERAL_IRQ_NUMBER: usize = 63; constant COMPATIBLE (line 88) | pub const COMPATIBLE: &'static str = "BCM Interrupt Controller"; method new (line 95) | pub const unsafe fn new(periph_mmio_start_addr: Address) -> S... type IRQNumberType (line 107) | type IRQNumberType = IRQNumber; method compatible (line 109) | fn compatible(&self) -> &'static str { type IRQNumberType (line 115) | type IRQNumberType = IRQNumber; method register_handler (line 117) | fn register_handler( method enable (line 135) | fn enable(&self, irq: &Self::IRQNumberType) { method handle_pending_irqs (line 142) | fn handle_pending_irqs<'irq_context>( method print_handler (line 150) | fn print_handler(&self) { type Item (line 57) | type Item = usize; method next (line 59) | fn next(&mut self) -> Option { FILE: 17_kernel_symbols/kernel/src/bsp/device_driver/bcm/bcm2xxx_interrupt_controller/peripheral_ic.rs type WriteOnlyRegisters (line 50) | type WriteOnlyRegisters = MMIODerefWrapper; type ReadOnlyRegisters (line 53) | type ReadOnlyRegisters = MMIODerefWrapper; type HandlerTable (line 55) | type HandlerTable = [Option) -> Self { method pending_irqs (line 93) | fn pending_irqs(&self) -> PendingIRQs { type IRQNumberType (line 107) | type IRQNumberType = PeripheralIRQ; method register_handler (line 109) | fn register_handler( method enable (line 126) | fn enable(&self, irq: &Self::IRQNumberType) { method handle_pending_irqs (line 142) | fn handle_pending_irqs<'irq_context>( method print_handler (line 159) | fn print_handler(&self) { FILE: 17_kernel_symbols/kernel/src/bsp/device_driver/bcm/bcm2xxx_pl011_uart.rs type Registers (line 215) | type Registers = MMIODerefWrapper; type BlockingMode (line 218) | enum BlockingMode { type PL011UartInner (line 223) | struct PL011UartInner { method new (line 248) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method init (line 273) | pub fn init(&mut self) { method write_char (line 318) | fn write_char(&mut self, c: char) { method flush (line 331) | fn flush(&self) { method read_char_converting (line 339) | fn read_char_converting(&mut self, blocking_mode: BlockingMode) -> Opt... method write_str (line 378) | fn write_str(&mut self, s: &str) -> fmt::Result { type PL011Uart (line 234) | pub struct PL011Uart { constant COMPATIBLE (line 392) | pub const COMPATIBLE: &'static str = "BCM PL011 UART"; method new (line 399) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { type IRQNumberType (line 412) | type IRQNumberType = IRQNumber; method compatible (line 414) | fn compatible(&self) -> &'static str { method init (line 418) | unsafe fn init(&self) -> Result<(), &'static str> { method register_and_enable_irq_handler (line 424) | fn register_and_enable_irq_handler( method write_char (line 442) | fn write_char(&self, c: char) { method write_fmt (line 446) | fn write_fmt(&self, args: core::fmt::Arguments) -> fmt::Result { method flush (line 452) | fn flush(&self) { method read_char (line 459) | fn read_char(&self) -> char { method clear_rx (line 464) | fn clear_rx(&self) { method chars_written (line 475) | fn chars_written(&self) -> usize { method chars_read (line 479) | fn chars_read(&self) -> usize { method handle (line 487) | fn handle(&self) -> Result<(), &'static str> { FILE: 17_kernel_symbols/kernel/src/bsp/device_driver/common.rs type MMIODerefWrapper (line 14) | pub struct MMIODerefWrapper { type BoundedUsize (line 21) | pub struct BoundedUsize(usize); function new (line 29) | pub const unsafe fn new(start_addr: Address) -> Self { type Target (line 38) | type Target = T; function deref (line 40) | fn deref(&self) -> &Self::Target { constant MAX_INCLUSIVE (line 46) | pub const MAX_INCLUSIVE: usize = MAX_INCLUSIVE; function new (line 49) | pub const fn new(number: usize) -> Self { function get (line 56) | pub const fn get(self) -> usize { function fmt (line 62) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { FILE: 17_kernel_symbols/kernel/src/bsp/raspberrypi.rs function board_name (line 17) | pub fn board_name() -> &'static str { FILE: 17_kernel_symbols/kernel/src/bsp/raspberrypi/driver.rs function instantiate_uart (line 39) | unsafe fn instantiate_uart() -> Result<(), &'static str> { function post_init_uart (line 50) | unsafe fn post_init_uart() -> Result<(), &'static str> { function instantiate_gpio (line 57) | unsafe fn instantiate_gpio() -> Result<(), &'static str> { function post_init_gpio (line 68) | unsafe fn post_init_gpio() -> Result<(), &'static str> { function instantiate_interrupt_controller (line 75) | unsafe fn instantiate_interrupt_controller() -> Result<(), &'static str> { function instantiate_interrupt_controller (line 90) | unsafe fn instantiate_interrupt_controller() -> Result<(), &'static str> { function post_init_interrupt_controller (line 103) | unsafe fn post_init_interrupt_controller() -> Result<(), &'static str> { function driver_uart (line 110) | unsafe fn driver_uart() -> Result<(), &'static str> { function driver_gpio (line 124) | unsafe fn driver_gpio() -> Result<(), &'static str> { function driver_interrupt_controller (line 138) | unsafe fn driver_interrupt_controller() -> Result<(), &'static str> { function init (line 160) | pub unsafe fn init() -> Result<(), &'static str> { function qemu_bring_up_console (line 177) | pub fn qemu_bring_up_console() { FILE: 17_kernel_symbols/kernel/src/bsp/raspberrypi/exception/asynchronous.rs constant PL011_UART (line 20) | pub const PL011_UART: IRQNumber = IRQNumber::Peripheral(PeripheralIRQ::n... constant PL011_UART (line 27) | pub const PL011_UART: IRQNumber = IRQNumber::new(153); FILE: 17_kernel_symbols/kernel/src/bsp/raspberrypi/memory.rs constant PERIPHERAL_IC_START (line 107) | pub const PERIPHERAL_IC_START: Address = Address::new(0x3F00_B... constant PERIPHERAL_IC_SIZE (line 108) | pub const PERIPHERAL_IC_SIZE: usize = 0x24; constant GPIO_START (line 110) | pub const GPIO_START: Address = Address::new(0x3F20_0... constant GPIO_SIZE (line 111) | pub const GPIO_SIZE: usize = 0xA0; constant PL011_UART_START (line 113) | pub const PL011_UART_START: Address = Address::new(0x3F20_1... constant PL011_UART_SIZE (line 114) | pub const PL011_UART_SIZE: usize = 0x48; constant END (line 116) | pub const END: Address = Address::new(0x4001_0... constant GPIO_START (line 124) | pub const GPIO_START: Address = Address::new(0xFE20_0000); constant GPIO_SIZE (line 125) | pub const GPIO_SIZE: usize = 0xA0; constant PL011_UART_START (line 127) | pub const PL011_UART_START: Address = Address::new(0xFE20_1000); constant PL011_UART_SIZE (line 128) | pub const PL011_UART_SIZE: usize = 0x48; constant GICD_START (line 130) | pub const GICD_START: Address = Address::new(0xFF84_1000); constant GICD_SIZE (line 131) | pub const GICD_SIZE: usize = 0x824; constant GICC_START (line 133) | pub const GICC_START: Address = Address::new(0xFF84_2000); constant GICC_SIZE (line 134) | pub const GICC_SIZE: usize = 0x14; constant END (line 136) | pub const END: Address = Address::new(0xFF85_0000); constant END (line 139) | pub const END: Address = mmio::END; function virt_code_start (line 152) | fn virt_code_start() -> PageAddress { function code_size (line 162) | fn code_size() -> usize { function virt_data_start (line 168) | fn virt_data_start() -> PageAddress { function data_size (line 178) | fn data_size() -> usize { function virt_mmio_remap_start (line 188) | fn virt_mmio_remap_start() -> PageAddress { function mmio_remap_size (line 198) | fn mmio_remap_size() -> usize { function virt_boot_core_stack_start (line 204) | fn virt_boot_core_stack_start() -> PageAddress { function boot_core_stack_size (line 210) | fn boot_core_stack_size() -> usize { function phys_addr_space_end_exclusive_addr (line 222) | pub fn phys_addr_space_end_exclusive_addr() -> PageAddress { FILE: 17_kernel_symbols/kernel/src/bsp/raspberrypi/memory/mmu.rs type KernelTranslationTable (line 22) | type KernelTranslationTable = type KernelGranule (line 31) | pub type KernelGranule = TranslationGranule<{ 64 * 1024 }>; type KernelVirtAddrSpace (line 34) | pub type KernelVirtAddrSpace = AddressSpace<{ kernel_virt_addr_space_siz... function kernel_virt_addr_space_size (line 67) | const fn kernel_virt_addr_space_size() -> usize { function size_to_num_pages (line 76) | const fn size_to_num_pages(size: usize) -> usize { function virt_code_region (line 84) | fn virt_code_region() -> MemoryRegion { function virt_data_region (line 94) | fn virt_data_region() -> MemoryRegion { function virt_boot_core_stack_region (line 104) | fn virt_boot_core_stack_region() -> MemoryRegion { function kernel_virt_to_phys_region (line 115) | fn kernel_virt_to_phys_region(virt_region: MemoryRegion) -> Mem... function kernel_page_attributes (line 127) | fn kernel_page_attributes(virt_page_addr: PageAddress) -> Attri... function kernel_translation_tables (line 136) | pub fn kernel_translation_tables() -> &'static InitStateLock MemoryRegion { function kernel_add_mapping_records_for_precomputed (line 155) | pub fn kernel_add_mapping_records_for_precomputed() { FILE: 17_kernel_symbols/kernel/src/common.rs function is_aligned (line 9) | pub const fn is_aligned(value: usize, alignment: usize) -> bool { function align_down (line 17) | pub const fn align_down(value: usize, alignment: usize) -> usize { function align_up (line 25) | pub const fn align_up(value: usize, alignment: usize) -> usize { function size_human_readable_ceil (line 32) | pub const fn size_human_readable_ceil(size: usize) -> (usize, &'static s... FILE: 17_kernel_symbols/kernel/src/console.rs type Write (line 20) | pub trait Write { method write_char (line 22) | fn write_char(&self, c: char); method write_fmt (line 25) | fn write_fmt(&self, args: fmt::Arguments) -> fmt::Result; method flush (line 28) | fn flush(&self); type Read (line 32) | pub trait Read { method read_char (line 34) | fn read_char(&self) -> char { method clear_rx (line 39) | fn clear_rx(&self); type Statistics (line 43) | pub trait Statistics { method chars_written (line 45) | fn chars_written(&self) -> usize { method chars_read (line 50) | fn chars_read(&self) -> usize { type All (line 56) | pub trait All: Write + Read + Statistics {} function register_console (line 72) | pub fn register_console(new_console: &'static (dyn interface::All + Sync... function console (line 79) | pub fn console() -> &'static dyn interface::All { FILE: 17_kernel_symbols/kernel/src/console/null_console.rs type NullConsole (line 14) | pub struct NullConsole; method write_char (line 27) | fn write_char(&self, _c: char) {} method write_fmt (line 29) | fn write_fmt(&self, _args: fmt::Arguments) -> fmt::Result { method flush (line 33) | fn flush(&self) {} method clear_rx (line 37) | fn clear_rx(&self) {} FILE: 17_kernel_symbols/kernel/src/driver.rs constant NUM_DRIVERS (line 17) | const NUM_DRIVERS: usize = 5; type DriverManagerInner (line 19) | struct DriverManagerInner type DeviceDriver (line 34) | pub trait DeviceDriver { method compatible (line 39) | fn compatible(&self) -> &'static str; method init (line 46) | unsafe fn init(&self) -> Result<(), &'static str> { method register_and_enable_irq_handler (line 54) | fn register_and_enable_irq_handler( type DeviceDriverPostInitCallback (line 68) | pub type DeviceDriverPostInitCallback = unsafe fn() -> Result<(), &'stat... type DeviceDriverDescriptor (line 72) | pub struct DeviceDriverDescriptor type DriverManager (line 82) | pub struct DriverManager function new (line 104) | pub const fn new() -> Self { function new (line 118) | pub fn new( function driver_manager (line 132) | pub fn driver_manager() -> &'static DriverManager Self { function register_driver (line 148) | pub fn register_driver(&self, descriptor: DeviceDriverDescriptor) { function for_each_descriptor (line 156) | fn for_each_descriptor<'a>(&'a self, f: impl FnMut(&'a DeviceDriverDescr... function init_drivers_and_irqs (line 171) | pub unsafe fn init_drivers_and_irqs(&self) { function enumerate (line 213) | pub fn enumerate(&self) { FILE: 17_kernel_symbols/kernel/src/exception.rs type PrivilegeLevel (line 25) | pub enum PrivilegeLevel { function test_runner_executes_in_kernel_mode (line 43) | fn test_runner_executes_in_kernel_mode() { FILE: 17_kernel_symbols/kernel/src/exception/asynchronous.rs type IRQNumber (line 28) | pub type IRQNumber = bsp::exception::asynchronous::IRQNumber; type IRQHandlerDescriptor (line 32) | pub struct IRQHandlerDescriptor type IRQContext (line 54) | pub struct IRQContext<'irq_context> { type IRQHandler (line 62) | pub trait IRQHandler { method handle (line 64) | fn handle(&self) -> Result<(), &'static str>; type IRQManager (line 71) | pub trait IRQManager { method register_handler (line 76) | fn register_handler( method enable (line 82) | fn enable(&self, irq_number: &Self::IRQNumberType); method handle_pending_irqs (line 92) | fn handle_pending_irqs<'irq_context>( method print_handler (line 98) | fn print_handler(&self) {} function new (line 120) | pub const fn new( function number (line 133) | pub const fn number(&self) -> T { function name (line 138) | pub const fn name(&self) -> &'static str { function handler (line 143) | pub const fn handler(&self) -> &'static (dyn interface::IRQHandler + Syn... function new (line 160) | pub unsafe fn new() -> Self { function exec_with_irq_masked (line 170) | pub fn exec_with_irq_masked(f: impl FnOnce() -> T) -> T { function register_irq_manager (line 179) | pub fn register_irq_manager( function irq_manager (line 188) | pub fn irq_manager() -> &'static dyn interface::IRQManager(&'irq_context self, _ic: &IRQCont... FILE: 17_kernel_symbols/kernel/src/lib.rs function version (line 153) | pub fn version() -> &'static str { function test_runner (line 166) | pub fn test_runner(tests: &[&test_types::UnitTest]) { function kernel_init (line 184) | unsafe fn kernel_init() -> ! { FILE: 17_kernel_symbols/kernel/src/main.rs function kernel_init (line 27) | unsafe fn kernel_init() -> ! { function kernel_main (line 52) | fn kernel_main() -> ! { FILE: 17_kernel_symbols/kernel/src/memory.rs type AddressType (line 21) | pub trait AddressType: Copy + Clone + PartialOrd + PartialEq + Ord + Eq {} type Physical (line 25) | pub enum Physical {} type Virtual (line 29) | pub enum Virtual {} type Address (line 33) | pub struct Address { function new (line 47) | pub const fn new(value: usize) -> Self { function as_usize (line 55) | pub const fn as_usize(self) -> usize { function align_down_page (line 61) | pub const fn align_down_page(self) -> Self { function align_up_page (line 69) | pub const fn align_up_page(self) -> Self { function is_page_aligned (line 76) | pub const fn is_page_aligned(&self) -> bool { function offset_into_page (line 81) | pub const fn offset_into_page(&self) -> usize { type Output (line 87) | type Output = Self; function add (line 90) | fn add(self, rhs: usize) -> Self::Output { type Output (line 99) | type Output = Self; function sub (line 102) | fn sub(self, rhs: Address) -> Self::Output { function fmt (line 112) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { function fmt (line 125) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { function init (line 140) | pub fn init() { function address_type_method_sanity (line 155) | fn address_type_method_sanity() { FILE: 17_kernel_symbols/kernel/src/memory/mmu.rs type MMUEnableError (line 33) | pub enum MMUEnableError { method fmt (line 122) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { type MMU (line 43) | pub trait MMU { method enable_mmu_and_caching (line 49) | unsafe fn enable_mmu_and_caching( method is_enabled (line 55) | fn is_enabled(&self) -> bool; type TranslationGranule (line 60) | pub struct TranslationGranule; type AddressSpace (line 63) | pub struct AddressSpace; type AssociatedTranslationTable (line 66) | pub trait AssociatedTranslationTable { function kernel_map_at_unchecked (line 93) | unsafe fn kernel_map_at_unchecked( function try_kernel_virt_addr_to_phys_addr (line 110) | fn try_kernel_virt_addr_to_phys_addr( constant SIZE (line 132) | pub const SIZE: usize = Self::size_checked(); constant MASK (line 135) | pub const MASK: usize = Self::SIZE - 1; constant SHIFT (line 138) | pub const SHIFT: usize = Self::SIZE.trailing_zeros() as usize; function size_checked (line 140) | const fn size_checked() -> usize { constant SIZE (line 149) | pub const SIZE: usize = Self::size_checked(); constant SIZE_SHIFT (line 152) | pub const SIZE_SHIFT: usize = Self::SIZE.trailing_zeros() as usize; function size_checked (line 154) | const fn size_checked() -> usize { function kernel_init_mmio_va_allocator (line 166) | pub fn kernel_init_mmio_va_allocator() { function kernel_add_mapping_record (line 173) | pub fn kernel_add_mapping_record( function kernel_map_mmio (line 191) | pub unsafe fn kernel_map_mmio( function try_kernel_virt_page_addr_to_phys_page_addr (line 233) | pub fn try_kernel_virt_page_addr_to_phys_page_addr( function try_kernel_page_attributes (line 243) | pub fn try_kernel_page_attributes( function kernel_print_mappings (line 251) | pub fn kernel_print_mappings() { function enable_mmu_and_caching (line 261) | pub unsafe fn enable_mmu_and_caching( FILE: 17_kernel_symbols/kernel/src/memory/mmu/mapping_record.rs type MappingRecordEntry (line 20) | struct MappingRecordEntry { method new (line 44) | pub fn new( method find_next_free_user (line 59) | fn find_next_free_user(&mut self) -> Result<&mut Option<&'static str>,... method add_user (line 67) | pub fn add_user(&mut self, user: &'static str) -> Result<(), &'static ... type MappingRecord (line 28) | struct MappingRecord { method new (line 75) | pub const fn new() -> Self { method size (line 79) | fn size(&self) -> usize { method sort (line 83) | fn sort(&mut self) { method find_next_free (line 92) | fn find_next_free(&mut self) -> Result<&mut Option... method find_duplicate (line 100) | fn find_duplicate( method add (line 121) | pub fn add( method print (line 142) | pub fn print(&self) { function kernel_add (line 209) | pub fn kernel_add( function kernel_find_and_insert_mmio_duplicate (line 218) | pub fn kernel_find_and_insert_mmio_duplicate( function kernel_print (line 236) | pub fn kernel_print() { FILE: 17_kernel_symbols/kernel/src/memory/mmu/page_alloc.rs type PageAllocator (line 20) | pub struct PageAllocator { function kernel_mmio_va_allocator (line 36) | pub fn kernel_mmio_va_allocator() -> &'static IRQSafeNullLock Self { function init (line 47) | pub fn init(&mut self, pool: MemoryRegion) { function alloc (line 57) | pub fn alloc( FILE: 17_kernel_symbols/kernel/src/memory/mmu/translation_table.rs type TranslationTable (line 31) | pub trait TranslationTable { method init (line 38) | fn init(&mut self) -> Result<(), &'static str>; method map_at (line 49) | unsafe fn map_at( method try_virt_page_addr_to_phys_page_addr (line 59) | fn try_virt_page_addr_to_phys_page_addr( method try_page_attributes (line 67) | fn try_page_attributes( method try_virt_addr_to_phys_addr (line 75) | fn try_virt_addr_to_phys_addr( function translationtable_implementation_sanity (line 96) | fn translationtable_implementation_sanity() { FILE: 17_kernel_symbols/kernel/src/memory/mmu/types.rs type PageAddress (line 19) | pub struct PageAddress { type MemoryRegion (line 25) | pub struct MemoryRegion { type MemAttributes (line 33) | pub enum MemAttributes { type AccessPermissions (line 41) | pub enum AccessPermissions { type AttributeFields (line 49) | pub struct AttributeFields { type MMIODescriptor (line 57) | pub struct MMIODescriptor { method new (line 280) | pub const fn new(start_addr: Address, size: usize) -> Self { method start_addr (line 291) | pub const fn start_addr(&self) -> Address { method end_addr_exclusive (line 296) | pub fn end_addr_exclusive(&self) -> Address { constant MAX (line 71) | pub const MAX: Self = PageAddress { function into_inner (line 76) | pub fn into_inner(self) -> Address { function checked_offset (line 84) | pub fn checked_offset(self, count: isize) -> Option { function from (line 105) | fn from(addr: usize) -> Self { function from (line 118) | fn from(addr: Address) -> Self { method steps_between (line 126) | fn steps_between(start: &Self, end: &Self) -> Option { method forward_checked (line 138) | fn forward_checked(start: Self, count: usize) -> Option { method backward_checked (line 142) | fn backward_checked(start: Self, count: usize) -> Option { function new (line 152) | pub fn new(start: PageAddress, end_exclusive: PageAddress)... function as_range (line 161) | fn as_range(&self) -> Range> { function start_page_addr (line 166) | pub fn start_page_addr(&self) -> PageAddress { function start_addr (line 171) | pub fn start_addr(&self) -> Address { function end_exclusive_page_addr (line 176) | pub fn end_exclusive_page_addr(&self) -> PageAddress { function end_inclusive_page_addr (line 181) | pub fn end_inclusive_page_addr(&self) -> PageAddress { function contains (line 186) | pub fn contains(&self, addr: Address) -> bool { function overlaps (line 192) | pub fn overlaps(&self, other_region: &Self) -> bool { function num_pages (line 200) | pub fn num_pages(&self) -> usize { function size (line 205) | pub fn size(&self) -> usize { function take_first_n_pages (line 227) | pub fn take_first_n_pages(&mut self, num_pages: NonZeroUsize) -> Result<... type Item (line 251) | type Item = PageAddress; type IntoIter (line 252) | type IntoIter = Range; method into_iter (line 254) | fn into_iter(self) -> Self::IntoIter { function from (line 263) | fn from(desc: MMIODescriptor) -> Self { function pageaddress_type_method_sanity (line 313) | fn pageaddress_type_method_sanity() { function memoryregion_type_method_sanity (line 348) | fn memoryregion_type_method_sanity() { FILE: 17_kernel_symbols/kernel/src/panic_wait.rs function _panic_exit (line 19) | fn _panic_exit() -> ! { function panic_prevent_reenter (line 43) | fn panic_prevent_reenter() { function panic (line 61) | fn panic(info: &PanicInfo) -> ! { FILE: 17_kernel_symbols/kernel/src/print.rs function _print (line 15) | pub fn _print(args: fmt::Arguments) { FILE: 17_kernel_symbols/kernel/src/state.rs type State (line 15) | enum State { type StateManager (line 33) | pub struct StateManager(AtomicU8); constant INIT (line 51) | const INIT: u8 = 0; constant SINGLE_CORE_MAIN (line 52) | const SINGLE_CORE_MAIN: u8 = 1; constant MULTI_CORE_MAIN (line 53) | const MULTI_CORE_MAIN: u8 = 2; method new (line 56) | pub const fn new() -> Self { method state (line 61) | fn state(&self) -> State { method is_init (line 73) | pub fn is_init(&self) -> bool { method transition_to_single_core_main (line 78) | pub fn transition_to_single_core_main(&self) { function state_manager (line 46) | pub fn state_manager() -> &'static StateManager { FILE: 17_kernel_symbols/kernel/src/symbols.rs function kernel_symbol_section_virt_start_addr (line 33) | fn kernel_symbol_section_virt_start_addr() -> Address { function num_kernel_symbols (line 37) | fn num_kernel_symbols() -> usize { function kernel_symbols_slice (line 45) | fn kernel_symbols_slice() -> &'static [Symbol] { function lookup_symbol (line 56) | pub fn lookup_symbol(addr: Address) -> Option<&'static Symbol> { function symbols_sanity (line 73) | fn symbols_sanity() { FILE: 17_kernel_symbols/kernel/src/synchronization.rs type Mutex (line 24) | pub trait Mutex { method lock (line 29) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; type ReadWriteEx (line 36) | pub trait ReadWriteEx { method write (line 41) | fn write<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; method read (line 44) | fn read<'a, R>(&'a self, f: impl FnOnce(&'a Self::Data) -> R) -> R; type IRQSafeNullLock (line 55) | pub struct IRQSafeNullLock type InitStateLock (line 65) | pub struct InitStateLock function new (line 81) | pub const fn new(data: T) -> Self { function new (line 93) | pub const fn new(data: T) -> Self { type Data (line 106) | type Data = T; function lock (line 108) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { type Data (line 119) | type Data = T; function write (line 121) | fn write<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { function read (line 136) | fn read<'a, R>(&'a self, f: impl FnOnce(&'a Self::Data) -> R) -> R { function init_state_lock_is_transparent (line 154) | fn init_state_lock_is_transparent() { FILE: 17_kernel_symbols/kernel/src/time.rs type TimeManager (line 18) | pub struct TimeManager; method new (line 37) | pub const fn new() -> Self { method resolution (line 42) | pub fn resolution(&self) -> Duration { method uptime (line 49) | pub fn uptime(&self) -> Duration { method spin_for (line 54) | pub fn spin_for(&self, duration: Duration) { function time_manager (line 31) | pub fn time_manager() -> &'static TimeManager { FILE: 17_kernel_symbols/kernel/tests/00_console_sanity.rb class TxRxHandshakeTest (line 10) | class TxRxHandshakeTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, qemu_in) class TxStatisticsTest (line 22) | class TxStatisticsTest < SubtestBase method name (line 23) | def name method run (line 27) | def run(qemu_out, _qemu_in) class RxStatisticsTest (line 33) | class RxStatisticsTest < SubtestBase method name (line 34) | def name method run (line 38) | def run(qemu_out, _qemu_in) function subtest_collection (line 46) | def subtest_collection FILE: 17_kernel_symbols/kernel/tests/00_console_sanity.rs function kernel_init (line 17) | unsafe fn kernel_init() -> ! { FILE: 17_kernel_symbols/kernel/tests/01_timer_sanity.rs function kernel_init (line 18) | unsafe fn kernel_init() -> ! { function timer_is_counting (line 32) | fn timer_is_counting() { function timer_resolution_is_sufficient (line 38) | fn timer_resolution_is_sufficient() { function spin_accuracy_check_1_second (line 45) | fn spin_accuracy_check_1_second() { FILE: 17_kernel_symbols/kernel/tests/02_exception_sync_page_fault.rs function kernel_init (line 23) | unsafe fn kernel_init() -> ! { FILE: 17_kernel_symbols/kernel/tests/03_exception_restore_sanity.rb class ExceptionRestoreTest (line 10) | class ExceptionRestoreTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, _qemu_in) function subtest_collection (line 23) | def subtest_collection FILE: 17_kernel_symbols/kernel/tests/03_exception_restore_sanity.rs function nested_system_call (line 18) | fn nested_system_call() { function kernel_init (line 32) | unsafe fn kernel_init() -> ! { FILE: 17_kernel_symbols/kernel/tests/04_exception_irq_sanity.rs function kernel_init (line 17) | unsafe fn kernel_init() -> ! { function local_irq_mask_works (line 31) | fn local_irq_mask_works() { function local_irq_unmask_works (line 44) | fn local_irq_unmask_works() { function local_irq_mask_save_works (line 55) | fn local_irq_mask_save_works() { FILE: 17_kernel_symbols/kernel/tests/panic_exit_success/mod.rs function _panic_exit (line 7) | fn _panic_exit() -> ! { FILE: 17_kernel_symbols/kernel/tests/panic_wait_forever/mod.rs function _panic_exit (line 7) | fn _panic_exit() -> ! { FILE: 17_kernel_symbols/kernel_symbols/build.rs function main (line 3) | fn main() { FILE: 17_kernel_symbols/kernel_symbols/src/main.rs function panic (line 14) | fn panic(_info: &core::panic::PanicInfo) -> ! { FILE: 17_kernel_symbols/libraries/debug-symbol-types/src/lib.rs type Symbol (line 14) | pub struct Symbol { method new (line 21) | pub const fn new(start: usize, size: usize, name: &'static str) -> Sym... method contains (line 32) | pub fn contains(&self, addr: usize) -> bool { method name (line 37) | pub fn name(&self) -> &'static str { method size (line 42) | pub fn size(&self) -> usize { FILE: 17_kernel_symbols/libraries/test-macros/src/lib.rs function kernel_test (line 11) | pub fn kernel_test(_attr: TokenStream, input: TokenStream) -> TokenStream { FILE: 17_kernel_symbols/libraries/test-types/src/lib.rs type UnitTest (line 10) | pub struct UnitTest { FILE: 17_kernel_symbols/tools/kernel_symbols_tool/cmds.rb function generate_symbols (line 7) | def generate_symbols(kernel_elf, output_file) function get_symbols_section_virt_addr (line 29) | def get_symbols_section_virt_addr(kernel_elf) function patch_symbol_data (line 33) | def patch_symbol_data(kernel_elf, symbols_blob_path) function patch_num_symbols (line 42) | def patch_num_symbols(kernel_elf) FILE: 17_kernel_symbols/tools/kernel_symbols_tool/kernel_elf.rb class KernelELF (line 8) | class KernelELF method initialize (line 11) | def initialize(kernel_elf_path, kernel_symbols_section, num_kernel_sym... method fetch_values (line 21) | def fetch_values(kernel_symbols_section, num_kernel_symbols) method num_kernel_symbols_virt_addr (line 33) | def num_kernel_symbols_virt_addr method segment_containing_virt_addr (line 37) | def segment_containing_virt_addr(virt_addr) method virt_addr_to_file_offset (line 43) | def virt_addr_to_file_offset(virt_addr) method symbols (line 50) | def symbols method num_symbols (line 55) | def num_symbols method kernel_symbols_section_virt_addr (line 59) | def kernel_symbols_section_virt_addr method kernel_symbols_section_size (line 63) | def kernel_symbols_section_size method kernel_symbols_section_offset_in_file (line 67) | def kernel_symbols_section_offset_in_file method num_kernel_symbols_offset_in_file (line 71) | def num_kernel_symbols_offset_in_file FILE: 17_kernel_symbols/tools/translation_table_tool/arch.rb class BitField (line 8) | class BitField method initialize (line 9) | def initialize method attr_bitfield (line 13) | def self.attr_bitfield(name, offset, num_bits) method to_i (line 27) | def to_i method size_in_byte (line 31) | def size_in_byte class CArray (line 37) | class CArray < Array method initialize (line 40) | def initialize(phys_start_addr, size, &block) method size_in_byte (line 46) | def size_in_byte type Arch (line 54) | module Arch type ARMv8 (line 58) | module ARMv8 class Stage1TableDescriptor (line 60) | class Stage1TableDescriptor < BitField type NextLevelTableAddr (line 61) | module NextLevelTableAddr type Type (line 66) | module Type type Valid (line 74) | module Valid method next_level_table_addr= (line 86) | def next_level_table_addr=(addr) class Stage1PageDescriptor (line 96) | class Stage1PageDescriptor < BitField type UXN (line 97) | module UXN type PXN (line 105) | module PXN type OutputAddr (line 113) | module OutputAddr type AF (line 118) | module AF type SH (line 126) | module SH type AP (line 133) | module AP type AttrIndx (line 141) | module AttrIndx type Type (line 146) | module Type type Valid (line 154) | module Valid method output_addr= (line 172) | def output_addr=(addr) class TranslationTable (line 182) | class TranslationTable type MAIR (line 183) | module MAIR method initialize (line 187) | def initialize method map_at (line 200) | def map_at(virt_region, phys_region, attributes) method to_binary (line 212) | def to_binary method phys_tables_base_addr_binary (line 217) | def phys_tables_base_addr_binary method phys_tables_base_addr (line 221) | def phys_tables_base_addr method do_sanity_checks (line 227) | def do_sanity_checks method new_lvl3 (line 232) | def new_lvl3(num_lvl2_tables, start_addr) method new_lvl2 (line 243) | def new_lvl2(num_lvl2_tables, start_addr) method populate_lvl2_entries (line 249) | def populate_lvl2_entries method lvl2_lvl3_index_from (line 257) | def lvl2_lvl3_index_from(addr) method page_descriptor_from (line 268) | def page_descriptor_from(virt_addr) method set_attributes (line 275) | def set_attributes(desc, attributes) method set_lvl3_entry (line 304) | def set_lvl3_entry(desc, output_addr, attributes) FILE: 17_kernel_symbols/tools/translation_table_tool/bsp.rb class RaspberryPi (line 8) | class RaspberryPi method initialize (line 13) | def initialize method phys_addr_of_kernel_tables (line 25) | def phys_addr_of_kernel_tables method kernel_tables_offset_in_file (line 29) | def kernel_tables_offset_in_file method phys_kernel_tables_base_addr_offset_in_file (line 33) | def phys_kernel_tables_base_addr_offset_in_file method phys_addr_space_end_page (line 37) | def phys_addr_space_end_page FILE: 17_kernel_symbols/tools/translation_table_tool/generic.rb type Granule64KiB (line 7) | module Granule64KiB type Granule512MiB (line 12) | module Granule512MiB class Integer (line 19) | class Integer method power_of_two? (line 20) | def power_of_two? method aligned? (line 24) | def aligned?(alignment) method align_up (line 30) | def align_up(alignment) method to_hex_underscore (line 36) | def to_hex_underscore(with_leading_zeros: false) class MemoryRegion (line 45) | class MemoryRegion < Array method initialize (line 46) | def initialize(start_addr, size, granule_size) class AttributeFields (line 59) | class AttributeFields method initialize (line 62) | def initialize(mem_attributes, acc_perms, execute_never) method to_s (line 68) | def to_s class MappingDescriptor (line 92) | class MappingDescriptor method update_max_section_name_length (line 98) | def update_max_section_name_length(length) method initialize (line 105) | def initialize(name, virt_region, phys_region, attributes) method to_s (line 112) | def to_s method print_divider (line 121) | def self.print_divider method print_header (line 127) | def self.print_header function kernel_map_binary (line 144) | def kernel_map_binary function kernel_patch_tables (line 162) | def kernel_patch_tables(kernel_elf_path) function kernel_patch_base_addr (line 170) | def kernel_patch_base_addr(kernel_elf_path) FILE: 17_kernel_symbols/tools/translation_table_tool/kernel_elf.rb class KernelELF (line 8) | class KernelELF method initialize (line 11) | def initialize(kernel_elf_path) method machine (line 16) | def machine method symbol_value (line 20) | def symbol_value(symbol_name) method segment_containing_virt_addr (line 24) | def segment_containing_virt_addr(virt_addr) method virt_to_phys (line 30) | def virt_to_phys(virt_addr) method virt_addr_to_file_offset (line 37) | def virt_addr_to_file_offset(virt_addr) method sections_in_segment (line 42) | def sections_in_segment(segment) method select_load_segments (line 56) | def select_load_segments method segment_get_acc_perms (line 62) | def segment_get_acc_perms(segment) method update_max_section_name_length (line 72) | def update_max_section_name_length(descriptors) method generate_mapping_descriptors (line 76) | def generate_mapping_descriptors FILE: 18_backtrace/kernel/build.rs function main (line 3) | fn main() { FILE: 18_backtrace/kernel/src/_arch/aarch64/backtrace.rs type StackFrameRecord (line 33) | struct StackFrameRecord<'a> { type StackFrameRecordIterator (line 38) | struct StackFrameRecordIterator<'a> { type Item (line 47) | type Item = BacktraceItem; method next (line 49) | fn next(&mut self) -> Option { function stack_frame_record_iterator (line 90) | fn stack_frame_record_iterator<'a>() -> Option ! { constant QEMU_EXIT_HANDLE (line 37) | const QEMU_EXIT_HANDLE: qemu_exit::AArch64 = qemu_exit::AArch64::new(); function qemu_exit_failure (line 41) | pub fn qemu_exit_failure() -> ! { function qemu_exit_success (line 47) | pub fn qemu_exit_success() -> ! { FILE: 18_backtrace/kernel/src/_arch/aarch64/cpu/boot.rs function prepare_el2_to_el1_transition (line 40) | unsafe fn prepare_el2_to_el1_transition( function prepare_backtrace_reset (line 79) | unsafe fn prepare_backtrace_reset() { function _start_rust (line 97) | pub unsafe extern "C" fn _start_rust( FILE: 18_backtrace/kernel/src/_arch/aarch64/cpu/smp.rs function core_id (line 23) | pub fn core_id() -> T FILE: 18_backtrace/kernel/src/_arch/aarch64/exception.rs type SpsrEL1 (line 35) | struct SpsrEL1(InMemoryRegister); method fmt (line 165) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type EsrEL1 (line 36) | struct EsrEL1(InMemoryRegister); method exception_class (line 197) | fn exception_class(&self) -> Option { method iss (line 203) | fn iss(&self) -> u64 { method fmt (line 211) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type ExceptionContext (line 40) | struct ExceptionContext { method exception_class (line 232) | fn exception_class(&self) -> Option { method fault_address_valid (line 237) | fn fault_address_valid(&self) -> bool { method fmt (line 258) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { function default_exception_handler (line 62) | fn default_exception_handler(exc: &ExceptionContext) { function current_el0_synchronous (line 75) | extern "C" fn current_el0_synchronous(_e: &mut ExceptionContext) { function current_el0_irq (line 80) | extern "C" fn current_el0_irq(_e: &mut ExceptionContext) { function current_el0_serror (line 85) | extern "C" fn current_el0_serror(_e: &mut ExceptionContext) { function current_elx_synchronous (line 94) | extern "C" fn current_elx_synchronous(e: &mut ExceptionContext) { function current_elx_irq (line 110) | extern "C" fn current_elx_irq(_e: &mut ExceptionContext) { function current_elx_serror (line 116) | extern "C" fn current_elx_serror(e: &mut ExceptionContext) { function lower_aarch64_synchronous (line 125) | extern "C" fn lower_aarch64_synchronous(e: &mut ExceptionContext) { function lower_aarch64_irq (line 130) | extern "C" fn lower_aarch64_irq(e: &mut ExceptionContext) { function lower_aarch64_serror (line 135) | extern "C" fn lower_aarch64_serror(e: &mut ExceptionContext) { function lower_aarch32_synchronous (line 144) | extern "C" fn lower_aarch32_synchronous(e: &mut ExceptionContext) { function lower_aarch32_irq (line 149) | extern "C" fn lower_aarch32_irq(e: &mut ExceptionContext) { function lower_aarch32_serror (line 154) | extern "C" fn lower_aarch32_serror(e: &mut ExceptionContext) { function current_privilege_level (line 297) | pub fn current_privilege_level() -> (PrivilegeLevel, &'static str) { function handling_init (line 315) | pub unsafe fn handling_init() { FILE: 18_backtrace/kernel/src/_arch/aarch64/exception/asynchronous.rs constant IRQ (line 23) | pub const IRQ: u8 = 0b0010; type DaifField (line 26) | trait DaifField { method daif_field (line 27) | fn daif_field() -> tock_registers::fields::Field; method daif_field (line 40) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 46) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 52) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 58) | fn daif_field() -> tock_registers::fields::Field { type Debug (line 30) | struct Debug; type SError (line 31) | struct SError; type IRQ (line 32) | struct IRQ; type FIQ (line 33) | struct FIQ; function is_masked (line 63) | fn is_masked() -> bool function is_local_irq_masked (line 75) | pub fn is_local_irq_masked() -> bool { function local_irq_unmask (line 87) | pub fn local_irq_unmask() { function local_irq_mask (line 99) | pub fn local_irq_mask() { function local_irq_mask_save (line 111) | pub fn local_irq_mask_save() -> u64 { function local_irq_restore (line 124) | pub fn local_irq_restore(saved: u64) { function print_state (line 130) | pub fn print_state() { FILE: 18_backtrace/kernel/src/_arch/aarch64/memory/mmu.rs type MemoryManagementUnit (line 29) | struct MemoryManagementUnit; method set_up_mair (line 70) | fn set_up_mair(&self) { method configure_translation_control (line 84) | fn configure_translation_control(&self) { method enable_mmu_and_caching (line 117) | unsafe fn enable_mmu_and_caching( method is_enabled (line 155) | fn is_enabled(&self) -> bool { type Granule512MiB (line 35) | pub type Granule512MiB = TranslationGranule<{ 512 * 1024 * 1024 }>; type Granule64KiB (line 36) | pub type Granule64KiB = TranslationGranule<{ 64 * 1024 }>; constant DEVICE (line 41) | pub const DEVICE: u64 = 0; constant NORMAL (line 42) | pub const NORMAL: u64 = 1; function arch_address_space_size_sanity_checks (line 57) | pub const fn arch_address_space_size_sanity_checks() { function mmu (line 107) | pub fn mmu() -> &'static impl memory::mmu::interface::MMU { FILE: 18_backtrace/kernel/src/_arch/aarch64/memory/mmu/translation_table.rs type TableDescriptor (line 114) | struct TableDescriptor { method new_zeroed (line 164) | pub const fn new_zeroed() -> Self { method from_next_lvl_table_addr (line 169) | pub fn from_next_lvl_table_addr(phys_next_lvl_table_addr: Address Self { method from_output_page_addr (line 258) | pub fn from_output_page_addr( method is_valid (line 277) | fn is_valid(&self) -> bool { method output_page_addr (line 283) | fn output_page_addr(&self) -> PageAddress { method try_attributes (line 291) | fn try_attributes(&self) -> Result { type StartAddr (line 127) | trait StartAddr { method virt_start_addr (line 128) | fn virt_start_addr(&self) -> Address; method virt_start_addr (line 155) | fn virt_start_addr(&self) -> Address { type FixedSizeTranslationTable (line 139) | pub struct FixedSizeTranslationTable Self { type Error (line 222) | type Error = &'static str; method try_from (line 224) | fn try_from( type TableStartFromTop (line 305) | type TableStartFromTop = type TableStartFromBottom (line 308) | type TableStartFromBottom = constant START_FROM_TOP_OFFSET (line 315) | const START_FROM_TOP_OFFSET: Address = function _new (line 320) | const fn _new(for_precompute: bool) -> Self { function new_for_precompute (line 333) | pub const fn new_for_precompute() -> Self { function new_for_runtime (line 338) | pub fn new_for_runtime() -> Self { function lvl2_lvl3_index_from_page_addr (line 344) | fn lvl2_lvl3_index_from_page_addr( function page_descriptor_from_page_addr (line 366) | fn page_descriptor_from_page_addr( function set_page_descriptor_from_page_addr (line 380) | fn set_page_descriptor_from_page_addr( function init (line 405) | fn init(&mut self) -> Result<(), &'static str> { function map_at (line 424) | unsafe fn map_at( function try_virt_page_addr_to_phys_page_addr (line 452) | fn try_virt_page_addr_to_phys_page_addr( function try_page_attributes (line 465) | fn try_page_attributes( function try_virt_addr_to_phys_addr (line 481) | fn try_virt_addr_to_phys_addr( type MinSizeTranslationTable (line 497) | pub type MinSizeTranslationTable = FixedSizeTranslationTable<1, true>; function size_of_tabledescriptor_equals_64_bit (line 506) | fn size_of_tabledescriptor_equals_64_bit() { function size_of_pagedescriptor_equals_64_bit (line 515) | fn size_of_pagedescriptor_equals_64_bit() { FILE: 18_backtrace/kernel/src/_arch/aarch64/time.rs constant NANOSEC_PER_SEC (line 27) | const NANOSEC_PER_SEC: NonZeroU64 = NonZeroU64::new(1_000_000_000).unwra... type GenericTimerCounterValue (line 30) | struct GenericTimerCounterValue(u64); constant MAX (line 55) | pub const MAX: Self = GenericTimerCounterValue(u64::MAX); type Error (line 96) | type Error = &'static str; method try_from (line 98) | fn try_from(duration: Duration) -> Result { function arch_timer_counter_frequency (line 45) | fn arch_timer_counter_frequency() -> NonZeroU32 { type Output (line 59) | type Output = Self; method add (line 61) | fn add(self, other: Self) -> Self { method from (line 67) | fn from(counter_value: GenericTimerCounterValue) -> Self { function max_duration (line 91) | fn max_duration() -> Duration { function read_cntpct (line 121) | fn read_cntpct() -> GenericTimerCounterValue { function resolution (line 134) | pub fn resolution() -> Duration { function uptime (line 141) | pub fn uptime() -> Duration { function spin_for (line 146) | pub fn spin_for(duration: Duration) { FILE: 18_backtrace/kernel/src/backtrace.rs type BacktraceItem (line 29) | pub enum BacktraceItem { type Backtrace (line 36) | pub struct Backtrace; method fmt (line 43) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { FILE: 18_backtrace/kernel/src/bsp/device_driver/arm/gicv2.rs type HandlerTable (line 94) | type HandlerTable = [Option; type GICv2 (line 105) | pub struct GICv2 { constant MAX_IRQ_NUMBER (line 121) | const MAX_IRQ_NUMBER: usize = 300; constant COMPATIBLE (line 123) | pub const COMPATIBLE: &'static str = "GICv2 (ARM Generic Interrupt Con... method new (line 130) | pub const unsafe fn new( type IRQNumberType (line 148) | type IRQNumberType = IRQNumber; method compatible (line 150) | fn compatible(&self) -> &'static str { method init (line 154) | unsafe fn init(&self) -> Result<(), &'static str> { type IRQNumberType (line 167) | type IRQNumberType = IRQNumber; method register_handler (line 169) | fn register_handler( method enable (line 186) | fn enable(&self, irq_number: &Self::IRQNumberType) { method handle_pending_irqs (line 190) | fn handle_pending_irqs<'irq_context>( method print_handler (line 218) | fn print_handler(&self) { FILE: 18_backtrace/kernel/src/bsp/device_driver/arm/gicv2/gicc.rs type Registers (line 59) | type Registers = MMIODerefWrapper; type GICC (line 66) | pub struct GICC { method new (line 80) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method priority_accept_all (line 97) | pub fn priority_accept_all(&self) { method enable (line 107) | pub fn enable(&self) { method pending_irq_number (line 120) | pub fn pending_irq_number<'irq_context>( method mark_comleted (line 138) | pub fn mark_comleted<'irq_context>( FILE: 18_backtrace/kernel/src/bsp/device_driver/arm/gicv2/gicd.rs type SharedRegisters (line 73) | type SharedRegisters = MMIODerefWrapper; method num_irqs (line 98) | fn num_irqs(&mut self) -> usize { method implemented_itargets_slice (line 107) | fn implemented_itargets_slice(&mut self) -> &[ReadWrite; type GICD (line 83) | pub struct GICD { method new (line 133) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method local_gic_target_mask (line 146) | fn local_gic_target_mask(&self) -> u32 { method boot_core_init (line 151) | pub fn boot_core_init(&self) { method enable (line 175) | pub fn enable(&self, irq_num: &super::IRQNumber) { FILE: 18_backtrace/kernel/src/bsp/device_driver/bcm/bcm2xxx_gpio.rs type Registers (line 113) | type Registers = MMIODerefWrapper; type GPIOInner (line 115) | struct GPIOInner { method new (line 138) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method disable_pud_14_15_bcm2837 (line 146) | fn disable_pud_14_15_bcm2837(&mut self) { method disable_pud_14_15_bcm2711 (line 167) | fn disable_pud_14_15_bcm2711(&mut self) { method map_pl011_uart (line 178) | pub fn map_pl011_uart(&mut self) { type GPIO (line 124) | pub struct GPIO { constant COMPATIBLE (line 198) | pub const COMPATIBLE: &'static str = "BCM GPIO"; method new (line 205) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method map_pl011_uart (line 212) | pub fn map_pl011_uart(&self) { type IRQNumberType (line 223) | type IRQNumberType = IRQNumber; method compatible (line 225) | fn compatible(&self) -> &'static str { FILE: 18_backtrace/kernel/src/bsp/device_driver/bcm/bcm2xxx_interrupt_controller.rs type PendingIRQs (line 22) | struct PendingIRQs { method new (line 51) | pub fn new(bitmask: u64) -> Self { type LocalIRQ (line 30) | pub type LocalIRQ = BoundedUsize<{ InterruptController::MAX_LOCAL_IRQ_NU... type PeripheralIRQ (line 31) | pub type PeripheralIRQ = BoundedUsize<{ InterruptController::MAX_PERIPHE... type IRQNumber (line 36) | pub enum IRQNumber { method fmt (line 75) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type InterruptController (line 42) | pub struct InterruptController { constant MAX_LOCAL_IRQ_NUMBER (line 85) | const MAX_LOCAL_IRQ_NUMBER: usize = 3; constant MAX_PERIPHERAL_IRQ_NUMBER (line 86) | const MAX_PERIPHERAL_IRQ_NUMBER: usize = 63; constant COMPATIBLE (line 88) | pub const COMPATIBLE: &'static str = "BCM Interrupt Controller"; method new (line 95) | pub const unsafe fn new(periph_mmio_start_addr: Address) -> S... type IRQNumberType (line 107) | type IRQNumberType = IRQNumber; method compatible (line 109) | fn compatible(&self) -> &'static str { type IRQNumberType (line 115) | type IRQNumberType = IRQNumber; method register_handler (line 117) | fn register_handler( method enable (line 135) | fn enable(&self, irq: &Self::IRQNumberType) { method handle_pending_irqs (line 142) | fn handle_pending_irqs<'irq_context>( method print_handler (line 150) | fn print_handler(&self) { type Item (line 57) | type Item = usize; method next (line 59) | fn next(&mut self) -> Option { FILE: 18_backtrace/kernel/src/bsp/device_driver/bcm/bcm2xxx_interrupt_controller/peripheral_ic.rs type WriteOnlyRegisters (line 50) | type WriteOnlyRegisters = MMIODerefWrapper; type ReadOnlyRegisters (line 53) | type ReadOnlyRegisters = MMIODerefWrapper; type HandlerTable (line 55) | type HandlerTable = [Option) -> Self { method pending_irqs (line 93) | fn pending_irqs(&self) -> PendingIRQs { type IRQNumberType (line 107) | type IRQNumberType = PeripheralIRQ; method register_handler (line 109) | fn register_handler( method enable (line 126) | fn enable(&self, irq: &Self::IRQNumberType) { method handle_pending_irqs (line 142) | fn handle_pending_irqs<'irq_context>( method print_handler (line 159) | fn print_handler(&self) { FILE: 18_backtrace/kernel/src/bsp/device_driver/bcm/bcm2xxx_pl011_uart.rs type Registers (line 215) | type Registers = MMIODerefWrapper; type BlockingMode (line 218) | enum BlockingMode { type PL011UartInner (line 223) | struct PL011UartInner { method new (line 248) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method init (line 273) | pub fn init(&mut self) { method write_char (line 318) | fn write_char(&mut self, c: char) { method flush (line 331) | fn flush(&self) { method read_char_converting (line 339) | fn read_char_converting(&mut self, blocking_mode: BlockingMode) -> Opt... method write_str (line 378) | fn write_str(&mut self, s: &str) -> fmt::Result { type PL011Uart (line 234) | pub struct PL011Uart { constant COMPATIBLE (line 392) | pub const COMPATIBLE: &'static str = "BCM PL011 UART"; method new (line 399) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { type IRQNumberType (line 412) | type IRQNumberType = IRQNumber; method compatible (line 414) | fn compatible(&self) -> &'static str { method init (line 418) | unsafe fn init(&self) -> Result<(), &'static str> { method register_and_enable_irq_handler (line 424) | fn register_and_enable_irq_handler( method write_char (line 442) | fn write_char(&self, c: char) { method write_fmt (line 446) | fn write_fmt(&self, args: core::fmt::Arguments) -> fmt::Result { method flush (line 452) | fn flush(&self) { method read_char (line 459) | fn read_char(&self) -> char { method clear_rx (line 464) | fn clear_rx(&self) { method chars_written (line 475) | fn chars_written(&self) -> usize { method chars_read (line 479) | fn chars_read(&self) -> usize { method handle (line 487) | fn handle(&self) -> Result<(), &'static str> { FILE: 18_backtrace/kernel/src/bsp/device_driver/common.rs type MMIODerefWrapper (line 14) | pub struct MMIODerefWrapper { type BoundedUsize (line 21) | pub struct BoundedUsize(usize); function new (line 29) | pub const unsafe fn new(start_addr: Address) -> Self { type Target (line 38) | type Target = T; function deref (line 40) | fn deref(&self) -> &Self::Target { constant MAX_INCLUSIVE (line 46) | pub const MAX_INCLUSIVE: usize = MAX_INCLUSIVE; function new (line 49) | pub const fn new(number: usize) -> Self { function get (line 56) | pub const fn get(self) -> usize { function fmt (line 62) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { FILE: 18_backtrace/kernel/src/bsp/raspberrypi.rs function board_name (line 17) | pub fn board_name() -> &'static str { FILE: 18_backtrace/kernel/src/bsp/raspberrypi/driver.rs function instantiate_uart (line 39) | unsafe fn instantiate_uart() -> Result<(), &'static str> { function post_init_uart (line 50) | unsafe fn post_init_uart() -> Result<(), &'static str> { function instantiate_gpio (line 57) | unsafe fn instantiate_gpio() -> Result<(), &'static str> { function post_init_gpio (line 68) | unsafe fn post_init_gpio() -> Result<(), &'static str> { function instantiate_interrupt_controller (line 75) | unsafe fn instantiate_interrupt_controller() -> Result<(), &'static str> { function instantiate_interrupt_controller (line 90) | unsafe fn instantiate_interrupt_controller() -> Result<(), &'static str> { function post_init_interrupt_controller (line 103) | unsafe fn post_init_interrupt_controller() -> Result<(), &'static str> { function driver_uart (line 110) | unsafe fn driver_uart() -> Result<(), &'static str> { function driver_gpio (line 124) | unsafe fn driver_gpio() -> Result<(), &'static str> { function driver_interrupt_controller (line 138) | unsafe fn driver_interrupt_controller() -> Result<(), &'static str> { function init (line 160) | pub unsafe fn init() -> Result<(), &'static str> { function qemu_bring_up_console (line 177) | pub fn qemu_bring_up_console() { FILE: 18_backtrace/kernel/src/bsp/raspberrypi/exception/asynchronous.rs constant PL011_UART (line 20) | pub const PL011_UART: IRQNumber = IRQNumber::Peripheral(PeripheralIRQ::n... constant PL011_UART (line 27) | pub const PL011_UART: IRQNumber = IRQNumber::new(153); FILE: 18_backtrace/kernel/src/bsp/raspberrypi/memory.rs constant PERIPHERAL_IC_START (line 107) | pub const PERIPHERAL_IC_START: Address = Address::new(0x3F00_B... constant PERIPHERAL_IC_SIZE (line 108) | pub const PERIPHERAL_IC_SIZE: usize = 0x24; constant GPIO_START (line 110) | pub const GPIO_START: Address = Address::new(0x3F20_0... constant GPIO_SIZE (line 111) | pub const GPIO_SIZE: usize = 0xA0; constant PL011_UART_START (line 113) | pub const PL011_UART_START: Address = Address::new(0x3F20_1... constant PL011_UART_SIZE (line 114) | pub const PL011_UART_SIZE: usize = 0x48; constant END (line 116) | pub const END: Address = Address::new(0x4001_0... constant GPIO_START (line 124) | pub const GPIO_START: Address = Address::new(0xFE20_0000); constant GPIO_SIZE (line 125) | pub const GPIO_SIZE: usize = 0xA0; constant PL011_UART_START (line 127) | pub const PL011_UART_START: Address = Address::new(0xFE20_1000); constant PL011_UART_SIZE (line 128) | pub const PL011_UART_SIZE: usize = 0x48; constant GICD_START (line 130) | pub const GICD_START: Address = Address::new(0xFF84_1000); constant GICD_SIZE (line 131) | pub const GICD_SIZE: usize = 0x824; constant GICC_START (line 133) | pub const GICC_START: Address = Address::new(0xFF84_2000); constant GICC_SIZE (line 134) | pub const GICC_SIZE: usize = 0x14; constant END (line 136) | pub const END: Address = Address::new(0xFF85_0000); constant END (line 139) | pub const END: Address = mmio::END; function virt_code_start (line 152) | fn virt_code_start() -> PageAddress { function code_size (line 162) | fn code_size() -> usize { function virt_data_start (line 168) | fn virt_data_start() -> PageAddress { function data_size (line 178) | fn data_size() -> usize { function virt_mmio_remap_start (line 188) | fn virt_mmio_remap_start() -> PageAddress { function mmio_remap_size (line 198) | fn mmio_remap_size() -> usize { function virt_boot_core_stack_start (line 204) | fn virt_boot_core_stack_start() -> PageAddress { function boot_core_stack_size (line 210) | fn boot_core_stack_size() -> usize { function phys_addr_space_end_exclusive_addr (line 222) | pub fn phys_addr_space_end_exclusive_addr() -> PageAddress { FILE: 18_backtrace/kernel/src/bsp/raspberrypi/memory/mmu.rs type KernelTranslationTable (line 22) | type KernelTranslationTable = type KernelGranule (line 31) | pub type KernelGranule = TranslationGranule<{ 64 * 1024 }>; type KernelVirtAddrSpace (line 34) | pub type KernelVirtAddrSpace = AddressSpace<{ kernel_virt_addr_space_siz... function kernel_virt_addr_space_size (line 67) | const fn kernel_virt_addr_space_size() -> usize { function size_to_num_pages (line 76) | const fn size_to_num_pages(size: usize) -> usize { function virt_data_region (line 84) | fn virt_data_region() -> MemoryRegion { function kernel_virt_to_phys_region (line 95) | fn kernel_virt_to_phys_region(virt_region: MemoryRegion) -> Mem... function kernel_page_attributes (line 107) | fn kernel_page_attributes(virt_page_addr: PageAddress) -> Attri... function virt_code_region (line 116) | pub fn virt_code_region() -> MemoryRegion { function virt_boot_core_stack_region (line 126) | pub fn virt_boot_core_stack_region() -> MemoryRegion { function kernel_translation_tables (line 136) | pub fn kernel_translation_tables() -> &'static InitStateLock MemoryRegion { function kernel_add_mapping_records_for_precomputed (line 155) | pub fn kernel_add_mapping_records_for_precomputed() { FILE: 18_backtrace/kernel/src/common.rs function is_aligned (line 9) | pub const fn is_aligned(value: usize, alignment: usize) -> bool { function align_down (line 17) | pub const fn align_down(value: usize, alignment: usize) -> usize { function align_up (line 25) | pub const fn align_up(value: usize, alignment: usize) -> usize { function size_human_readable_ceil (line 32) | pub const fn size_human_readable_ceil(size: usize) -> (usize, &'static s... FILE: 18_backtrace/kernel/src/console.rs type Write (line 20) | pub trait Write { method write_char (line 22) | fn write_char(&self, c: char); method write_fmt (line 25) | fn write_fmt(&self, args: fmt::Arguments) -> fmt::Result; method flush (line 28) | fn flush(&self); type Read (line 32) | pub trait Read { method read_char (line 34) | fn read_char(&self) -> char { method clear_rx (line 39) | fn clear_rx(&self); type Statistics (line 43) | pub trait Statistics { method chars_written (line 45) | fn chars_written(&self) -> usize { method chars_read (line 50) | fn chars_read(&self) -> usize { type All (line 56) | pub trait All: Write + Read + Statistics {} function register_console (line 72) | pub fn register_console(new_console: &'static (dyn interface::All + Sync... function console (line 79) | pub fn console() -> &'static dyn interface::All { FILE: 18_backtrace/kernel/src/console/null_console.rs type NullConsole (line 14) | pub struct NullConsole; method write_char (line 27) | fn write_char(&self, _c: char) {} method write_fmt (line 29) | fn write_fmt(&self, _args: fmt::Arguments) -> fmt::Result { method flush (line 33) | fn flush(&self) {} method clear_rx (line 37) | fn clear_rx(&self) {} FILE: 18_backtrace/kernel/src/driver.rs constant NUM_DRIVERS (line 17) | const NUM_DRIVERS: usize = 5; type DriverManagerInner (line 19) | struct DriverManagerInner type DeviceDriver (line 34) | pub trait DeviceDriver { method compatible (line 39) | fn compatible(&self) -> &'static str; method init (line 46) | unsafe fn init(&self) -> Result<(), &'static str> { method register_and_enable_irq_handler (line 54) | fn register_and_enable_irq_handler( type DeviceDriverPostInitCallback (line 68) | pub type DeviceDriverPostInitCallback = unsafe fn() -> Result<(), &'stat... type DeviceDriverDescriptor (line 72) | pub struct DeviceDriverDescriptor type DriverManager (line 82) | pub struct DriverManager function new (line 104) | pub const fn new() -> Self { function new (line 118) | pub fn new( function driver_manager (line 132) | pub fn driver_manager() -> &'static DriverManager Self { function register_driver (line 148) | pub fn register_driver(&self, descriptor: DeviceDriverDescriptor) { function for_each_descriptor (line 156) | fn for_each_descriptor<'a>(&'a self, f: impl FnMut(&'a DeviceDriverDescr... function init_drivers_and_irqs (line 171) | pub unsafe fn init_drivers_and_irqs(&self) { function enumerate (line 213) | pub fn enumerate(&self) { FILE: 18_backtrace/kernel/src/exception.rs type PrivilegeLevel (line 25) | pub enum PrivilegeLevel { function test_runner_executes_in_kernel_mode (line 43) | fn test_runner_executes_in_kernel_mode() { FILE: 18_backtrace/kernel/src/exception/asynchronous.rs type IRQNumber (line 28) | pub type IRQNumber = bsp::exception::asynchronous::IRQNumber; type IRQHandlerDescriptor (line 32) | pub struct IRQHandlerDescriptor type IRQContext (line 54) | pub struct IRQContext<'irq_context> { type IRQHandler (line 62) | pub trait IRQHandler { method handle (line 64) | fn handle(&self) -> Result<(), &'static str>; type IRQManager (line 71) | pub trait IRQManager { method register_handler (line 76) | fn register_handler( method enable (line 82) | fn enable(&self, irq_number: &Self::IRQNumberType); method handle_pending_irqs (line 92) | fn handle_pending_irqs<'irq_context>( method print_handler (line 98) | fn print_handler(&self) {} function new (line 120) | pub const fn new( function number (line 133) | pub const fn number(&self) -> T { function name (line 138) | pub const fn name(&self) -> &'static str { function handler (line 143) | pub const fn handler(&self) -> &'static (dyn interface::IRQHandler + Syn... function new (line 160) | pub unsafe fn new() -> Self { function exec_with_irq_masked (line 170) | pub fn exec_with_irq_masked(f: impl FnOnce() -> T) -> T { function register_irq_manager (line 179) | pub fn register_irq_manager( function irq_manager (line 188) | pub fn irq_manager() -> &'static dyn interface::IRQManager(&'irq_context self, _ic: &IRQCont... FILE: 18_backtrace/kernel/src/lib.rs function version (line 154) | pub fn version() -> &'static str { function test_runner (line 167) | pub fn test_runner(tests: &[&test_types::UnitTest]) { function kernel_init (line 185) | unsafe fn kernel_init() -> ! { FILE: 18_backtrace/kernel/src/main.rs function kernel_init (line 27) | unsafe fn kernel_init() -> ! { function kernel_main (line 52) | fn kernel_main() -> ! { FILE: 18_backtrace/kernel/src/memory.rs type AddressType (line 21) | pub trait AddressType: Copy + Clone + PartialOrd + PartialEq + Ord + Eq {} type Physical (line 25) | pub enum Physical {} type Virtual (line 29) | pub enum Virtual {} type Address (line 33) | pub struct Address { function new (line 47) | pub const fn new(value: usize) -> Self { function as_usize (line 55) | pub const fn as_usize(self) -> usize { function align_down_page (line 61) | pub const fn align_down_page(self) -> Self { function align_up_page (line 69) | pub const fn align_up_page(self) -> Self { function is_page_aligned (line 76) | pub const fn is_page_aligned(&self) -> bool { function offset_into_page (line 81) | pub const fn offset_into_page(&self) -> usize { type Output (line 87) | type Output = Self; function add (line 90) | fn add(self, rhs: usize) -> Self::Output { type Output (line 99) | type Output = Self; function sub (line 102) | fn sub(self, rhs: usize) -> Self::Output { type Output (line 111) | type Output = Self; function sub (line 114) | fn sub(self, rhs: Address) -> Self::Output { function is_valid_stack_addr (line 124) | pub fn is_valid_stack_addr(&self) -> bool { function is_valid_code_addr (line 129) | pub fn is_valid_code_addr(&self) -> bool { function fmt (line 136) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { function fmt (line 149) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { function init (line 164) | pub fn init() { function address_type_method_sanity (line 179) | fn address_type_method_sanity() { FILE: 18_backtrace/kernel/src/memory/mmu.rs type MMUEnableError (line 33) | pub enum MMUEnableError { method fmt (line 122) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { type MMU (line 43) | pub trait MMU { method enable_mmu_and_caching (line 49) | unsafe fn enable_mmu_and_caching( method is_enabled (line 55) | fn is_enabled(&self) -> bool; type TranslationGranule (line 60) | pub struct TranslationGranule; type AddressSpace (line 63) | pub struct AddressSpace; type AssociatedTranslationTable (line 66) | pub trait AssociatedTranslationTable { function kernel_map_at_unchecked (line 93) | unsafe fn kernel_map_at_unchecked( function try_kernel_virt_addr_to_phys_addr (line 110) | fn try_kernel_virt_addr_to_phys_addr( constant SIZE (line 132) | pub const SIZE: usize = Self::size_checked(); constant MASK (line 135) | pub const MASK: usize = Self::SIZE - 1; constant SHIFT (line 138) | pub const SHIFT: usize = Self::SIZE.trailing_zeros() as usize; function size_checked (line 140) | const fn size_checked() -> usize { constant SIZE (line 149) | pub const SIZE: usize = Self::size_checked(); constant SIZE_SHIFT (line 152) | pub const SIZE_SHIFT: usize = Self::SIZE.trailing_zeros() as usize; function size_checked (line 154) | const fn size_checked() -> usize { function kernel_init_mmio_va_allocator (line 166) | pub fn kernel_init_mmio_va_allocator() { function kernel_add_mapping_record (line 173) | pub fn kernel_add_mapping_record( function kernel_map_mmio (line 191) | pub unsafe fn kernel_map_mmio( function try_kernel_virt_page_addr_to_phys_page_addr (line 233) | pub fn try_kernel_virt_page_addr_to_phys_page_addr( function try_kernel_page_attributes (line 243) | pub fn try_kernel_page_attributes( function kernel_print_mappings (line 251) | pub fn kernel_print_mappings() { function enable_mmu_and_caching (line 261) | pub unsafe fn enable_mmu_and_caching( FILE: 18_backtrace/kernel/src/memory/mmu/mapping_record.rs type MappingRecordEntry (line 20) | struct MappingRecordEntry { method new (line 44) | pub fn new( method find_next_free_user (line 59) | fn find_next_free_user(&mut self) -> Result<&mut Option<&'static str>,... method add_user (line 67) | pub fn add_user(&mut self, user: &'static str) -> Result<(), &'static ... type MappingRecord (line 28) | struct MappingRecord { method new (line 75) | pub const fn new() -> Self { method size (line 79) | fn size(&self) -> usize { method sort (line 83) | fn sort(&mut self) { method find_next_free (line 92) | fn find_next_free(&mut self) -> Result<&mut Option... method find_duplicate (line 100) | fn find_duplicate( method add (line 121) | pub fn add( method print (line 142) | pub fn print(&self) { function kernel_add (line 209) | pub fn kernel_add( function kernel_find_and_insert_mmio_duplicate (line 218) | pub fn kernel_find_and_insert_mmio_duplicate( function kernel_print (line 236) | pub fn kernel_print() { FILE: 18_backtrace/kernel/src/memory/mmu/page_alloc.rs type PageAllocator (line 20) | pub struct PageAllocator { function kernel_mmio_va_allocator (line 36) | pub fn kernel_mmio_va_allocator() -> &'static IRQSafeNullLock Self { function init (line 47) | pub fn init(&mut self, pool: MemoryRegion) { function alloc (line 57) | pub fn alloc( FILE: 18_backtrace/kernel/src/memory/mmu/translation_table.rs type TranslationTable (line 31) | pub trait TranslationTable { method init (line 38) | fn init(&mut self) -> Result<(), &'static str>; method map_at (line 49) | unsafe fn map_at( method try_virt_page_addr_to_phys_page_addr (line 59) | fn try_virt_page_addr_to_phys_page_addr( method try_page_attributes (line 67) | fn try_page_attributes( method try_virt_addr_to_phys_addr (line 75) | fn try_virt_addr_to_phys_addr( function translationtable_implementation_sanity (line 96) | fn translationtable_implementation_sanity() { FILE: 18_backtrace/kernel/src/memory/mmu/types.rs type PageAddress (line 19) | pub struct PageAddress { type MemoryRegion (line 25) | pub struct MemoryRegion { type MemAttributes (line 33) | pub enum MemAttributes { type AccessPermissions (line 41) | pub enum AccessPermissions { type AttributeFields (line 49) | pub struct AttributeFields { type MMIODescriptor (line 57) | pub struct MMIODescriptor { method new (line 280) | pub const fn new(start_addr: Address, size: usize) -> Self { method start_addr (line 291) | pub const fn start_addr(&self) -> Address { method end_addr_exclusive (line 296) | pub fn end_addr_exclusive(&self) -> Address { constant MAX (line 71) | pub const MAX: Self = PageAddress { function into_inner (line 76) | pub fn into_inner(self) -> Address { function checked_offset (line 84) | pub fn checked_offset(self, count: isize) -> Option { function from (line 105) | fn from(addr: usize) -> Self { function from (line 118) | fn from(addr: Address) -> Self { method steps_between (line 126) | fn steps_between(start: &Self, end: &Self) -> Option { method forward_checked (line 138) | fn forward_checked(start: Self, count: usize) -> Option { method backward_checked (line 142) | fn backward_checked(start: Self, count: usize) -> Option { function new (line 152) | pub fn new(start: PageAddress, end_exclusive: PageAddress)... function as_range (line 161) | fn as_range(&self) -> Range> { function start_page_addr (line 166) | pub fn start_page_addr(&self) -> PageAddress { function start_addr (line 171) | pub fn start_addr(&self) -> Address { function end_exclusive_page_addr (line 176) | pub fn end_exclusive_page_addr(&self) -> PageAddress { function end_inclusive_page_addr (line 181) | pub fn end_inclusive_page_addr(&self) -> PageAddress { function contains (line 186) | pub fn contains(&self, addr: Address) -> bool { function overlaps (line 192) | pub fn overlaps(&self, other_region: &Self) -> bool { function num_pages (line 200) | pub fn num_pages(&self) -> usize { function size (line 205) | pub fn size(&self) -> usize { function take_first_n_pages (line 227) | pub fn take_first_n_pages(&mut self, num_pages: NonZeroUsize) -> Result<... type Item (line 251) | type Item = PageAddress; type IntoIter (line 252) | type IntoIter = Range; method into_iter (line 254) | fn into_iter(self) -> Self::IntoIter { function from (line 263) | fn from(desc: MMIODescriptor) -> Self { function pageaddress_type_method_sanity (line 313) | fn pageaddress_type_method_sanity() { function memoryregion_type_method_sanity (line 348) | fn memoryregion_type_method_sanity() { FILE: 18_backtrace/kernel/src/panic_wait.rs function _panic_exit (line 19) | fn _panic_exit() -> ! { function panic_prevent_reenter (line 43) | fn panic_prevent_reenter() { function panic (line 61) | fn panic(info: &PanicInfo) -> ! { FILE: 18_backtrace/kernel/src/print.rs function _print (line 15) | pub fn _print(args: fmt::Arguments) { FILE: 18_backtrace/kernel/src/state.rs type State (line 15) | enum State { type StateManager (line 33) | pub struct StateManager(AtomicU8); constant INIT (line 51) | const INIT: u8 = 0; constant SINGLE_CORE_MAIN (line 52) | const SINGLE_CORE_MAIN: u8 = 1; constant MULTI_CORE_MAIN (line 53) | const MULTI_CORE_MAIN: u8 = 2; method new (line 56) | pub const fn new() -> Self { method state (line 61) | fn state(&self) -> State { method is_init (line 73) | pub fn is_init(&self) -> bool { method transition_to_single_core_main (line 78) | pub fn transition_to_single_core_main(&self) { function state_manager (line 46) | pub fn state_manager() -> &'static StateManager { FILE: 18_backtrace/kernel/src/symbols.rs function kernel_symbol_section_virt_start_addr (line 33) | fn kernel_symbol_section_virt_start_addr() -> Address { function num_kernel_symbols (line 37) | fn num_kernel_symbols() -> usize { function kernel_symbols_slice (line 45) | fn kernel_symbols_slice() -> &'static [Symbol] { function lookup_symbol (line 56) | pub fn lookup_symbol(addr: Address) -> Option<&'static Symbol> { function symbols_sanity (line 73) | fn symbols_sanity() { FILE: 18_backtrace/kernel/src/synchronization.rs type Mutex (line 24) | pub trait Mutex { method lock (line 29) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; type ReadWriteEx (line 36) | pub trait ReadWriteEx { method write (line 41) | fn write<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; method read (line 44) | fn read<'a, R>(&'a self, f: impl FnOnce(&'a Self::Data) -> R) -> R; type IRQSafeNullLock (line 55) | pub struct IRQSafeNullLock type InitStateLock (line 65) | pub struct InitStateLock function new (line 81) | pub const fn new(data: T) -> Self { function new (line 93) | pub const fn new(data: T) -> Self { type Data (line 106) | type Data = T; function lock (line 108) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { type Data (line 119) | type Data = T; function write (line 121) | fn write<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { function read (line 136) | fn read<'a, R>(&'a self, f: impl FnOnce(&'a Self::Data) -> R) -> R { function init_state_lock_is_transparent (line 154) | fn init_state_lock_is_transparent() { FILE: 18_backtrace/kernel/src/time.rs type TimeManager (line 18) | pub struct TimeManager; method new (line 37) | pub const fn new() -> Self { method resolution (line 42) | pub fn resolution(&self) -> Duration { method uptime (line 49) | pub fn uptime(&self) -> Duration { method spin_for (line 54) | pub fn spin_for(&self, duration: Duration) { function time_manager (line 31) | pub fn time_manager() -> &'static TimeManager { FILE: 18_backtrace/kernel/tests/00_console_sanity.rb class TxRxHandshakeTest (line 10) | class TxRxHandshakeTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, qemu_in) class TxStatisticsTest (line 22) | class TxStatisticsTest < SubtestBase method name (line 23) | def name method run (line 27) | def run(qemu_out, _qemu_in) class RxStatisticsTest (line 33) | class RxStatisticsTest < SubtestBase method name (line 34) | def name method run (line 38) | def run(qemu_out, _qemu_in) function subtest_collection (line 46) | def subtest_collection FILE: 18_backtrace/kernel/tests/00_console_sanity.rs function kernel_init (line 17) | unsafe fn kernel_init() -> ! { FILE: 18_backtrace/kernel/tests/01_timer_sanity.rs function kernel_init (line 18) | unsafe fn kernel_init() -> ! { function timer_is_counting (line 32) | fn timer_is_counting() { function timer_resolution_is_sufficient (line 38) | fn timer_resolution_is_sufficient() { function spin_accuracy_check_1_second (line 45) | fn spin_accuracy_check_1_second() { FILE: 18_backtrace/kernel/tests/02_exception_sync_page_fault.rs function kernel_init (line 23) | unsafe fn kernel_init() -> ! { FILE: 18_backtrace/kernel/tests/03_exception_restore_sanity.rb class ExceptionRestoreTest (line 10) | class ExceptionRestoreTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, _qemu_in) function subtest_collection (line 23) | def subtest_collection FILE: 18_backtrace/kernel/tests/03_exception_restore_sanity.rs function nested_system_call (line 18) | fn nested_system_call() { function kernel_init (line 32) | unsafe fn kernel_init() -> ! { FILE: 18_backtrace/kernel/tests/04_exception_irq_sanity.rs function kernel_init (line 17) | unsafe fn kernel_init() -> ! { function local_irq_mask_works (line 31) | fn local_irq_mask_works() { function local_irq_unmask_works (line 44) | fn local_irq_unmask_works() { function local_irq_mask_save_works (line 55) | fn local_irq_mask_save_works() { FILE: 18_backtrace/kernel/tests/05_backtrace_sanity.rb class PanicBacktraceTest (line 10) | class PanicBacktraceTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, _qemu_in) class BacktraceCorrectnessTest (line 22) | class BacktraceCorrectnessTest < SubtestBase method name (line 23) | def name method run (line 27) | def run(qemu_out, _qemu_in) function subtest_collection (line 37) | def subtest_collection FILE: 18_backtrace/kernel/tests/05_backtrace_sanity.rs function nested (line 17) | fn nested() { function kernel_init (line 22) | unsafe fn kernel_init() -> ! { FILE: 18_backtrace/kernel/tests/06_backtrace_invalid_frame.rb class InvalidFramePointerTest (line 10) | class InvalidFramePointerTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, _qemu_in) function subtest_collection (line 24) | def subtest_collection FILE: 18_backtrace/kernel/tests/06_backtrace_invalid_frame.rs function nested (line 17) | fn nested() { function kernel_init (line 24) | unsafe fn kernel_init() -> ! { FILE: 18_backtrace/kernel/tests/07_backtrace_invalid_link.rb class InvalidLinkTest (line 10) | class InvalidLinkTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, _qemu_in) function subtest_collection (line 23) | def subtest_collection FILE: 18_backtrace/kernel/tests/07_backtrace_invalid_link.rs function nested_2 (line 17) | fn nested_2() -> &'static str { function nested_1 (line 24) | fn nested_1() { function kernel_init (line 29) | unsafe fn kernel_init() -> ! { FILE: 18_backtrace/kernel/tests/panic_exit_success/mod.rs function _panic_exit (line 7) | fn _panic_exit() -> ! { FILE: 18_backtrace/kernel/tests/panic_wait_forever/mod.rs function _panic_exit (line 7) | fn _panic_exit() -> ! { FILE: 18_backtrace/kernel_symbols/build.rs function main (line 3) | fn main() { FILE: 18_backtrace/kernel_symbols/src/main.rs function panic (line 14) | fn panic(_info: &core::panic::PanicInfo) -> ! { FILE: 18_backtrace/libraries/debug-symbol-types/src/lib.rs type Symbol (line 14) | pub struct Symbol { method new (line 21) | pub const fn new(start: usize, size: usize, name: &'static str) -> Sym... method contains (line 32) | pub fn contains(&self, addr: usize) -> bool { method name (line 37) | pub fn name(&self) -> &'static str { method size (line 42) | pub fn size(&self) -> usize { FILE: 18_backtrace/libraries/test-macros/src/lib.rs function kernel_test (line 11) | pub fn kernel_test(_attr: TokenStream, input: TokenStream) -> TokenStream { FILE: 18_backtrace/libraries/test-types/src/lib.rs type UnitTest (line 10) | pub struct UnitTest { FILE: 18_backtrace/tools/kernel_symbols_tool/cmds.rb function generate_symbols (line 7) | def generate_symbols(kernel_elf, output_file) function get_symbols_section_virt_addr (line 29) | def get_symbols_section_virt_addr(kernel_elf) function patch_symbol_data (line 33) | def patch_symbol_data(kernel_elf, symbols_blob_path) function patch_num_symbols (line 42) | def patch_num_symbols(kernel_elf) FILE: 18_backtrace/tools/kernel_symbols_tool/kernel_elf.rb class KernelELF (line 8) | class KernelELF method initialize (line 11) | def initialize(kernel_elf_path, kernel_symbols_section, num_kernel_sym... method fetch_values (line 21) | def fetch_values(kernel_symbols_section, num_kernel_symbols) method num_kernel_symbols_virt_addr (line 33) | def num_kernel_symbols_virt_addr method segment_containing_virt_addr (line 37) | def segment_containing_virt_addr(virt_addr) method virt_addr_to_file_offset (line 43) | def virt_addr_to_file_offset(virt_addr) method symbols (line 50) | def symbols method num_symbols (line 55) | def num_symbols method kernel_symbols_section_virt_addr (line 59) | def kernel_symbols_section_virt_addr method kernel_symbols_section_size (line 63) | def kernel_symbols_section_size method kernel_symbols_section_offset_in_file (line 67) | def kernel_symbols_section_offset_in_file method num_kernel_symbols_offset_in_file (line 71) | def num_kernel_symbols_offset_in_file FILE: 18_backtrace/tools/translation_table_tool/arch.rb class BitField (line 8) | class BitField method initialize (line 9) | def initialize method attr_bitfield (line 13) | def self.attr_bitfield(name, offset, num_bits) method to_i (line 27) | def to_i method size_in_byte (line 31) | def size_in_byte class CArray (line 37) | class CArray < Array method initialize (line 40) | def initialize(phys_start_addr, size, &block) method size_in_byte (line 46) | def size_in_byte type Arch (line 54) | module Arch type ARMv8 (line 58) | module ARMv8 class Stage1TableDescriptor (line 60) | class Stage1TableDescriptor < BitField type NextLevelTableAddr (line 61) | module NextLevelTableAddr type Type (line 66) | module Type type Valid (line 74) | module Valid method next_level_table_addr= (line 86) | def next_level_table_addr=(addr) class Stage1PageDescriptor (line 96) | class Stage1PageDescriptor < BitField type UXN (line 97) | module UXN type PXN (line 105) | module PXN type OutputAddr (line 113) | module OutputAddr type AF (line 118) | module AF type SH (line 126) | module SH type AP (line 133) | module AP type AttrIndx (line 141) | module AttrIndx type Type (line 146) | module Type type Valid (line 154) | module Valid method output_addr= (line 172) | def output_addr=(addr) class TranslationTable (line 182) | class TranslationTable type MAIR (line 183) | module MAIR method initialize (line 187) | def initialize method map_at (line 200) | def map_at(virt_region, phys_region, attributes) method to_binary (line 212) | def to_binary method phys_tables_base_addr_binary (line 217) | def phys_tables_base_addr_binary method phys_tables_base_addr (line 221) | def phys_tables_base_addr method do_sanity_checks (line 227) | def do_sanity_checks method new_lvl3 (line 232) | def new_lvl3(num_lvl2_tables, start_addr) method new_lvl2 (line 243) | def new_lvl2(num_lvl2_tables, start_addr) method populate_lvl2_entries (line 249) | def populate_lvl2_entries method lvl2_lvl3_index_from (line 257) | def lvl2_lvl3_index_from(addr) method page_descriptor_from (line 268) | def page_descriptor_from(virt_addr) method set_attributes (line 275) | def set_attributes(desc, attributes) method set_lvl3_entry (line 304) | def set_lvl3_entry(desc, output_addr, attributes) FILE: 18_backtrace/tools/translation_table_tool/bsp.rb class RaspberryPi (line 8) | class RaspberryPi method initialize (line 13) | def initialize method phys_addr_of_kernel_tables (line 25) | def phys_addr_of_kernel_tables method kernel_tables_offset_in_file (line 29) | def kernel_tables_offset_in_file method phys_kernel_tables_base_addr_offset_in_file (line 33) | def phys_kernel_tables_base_addr_offset_in_file method phys_addr_space_end_page (line 37) | def phys_addr_space_end_page FILE: 18_backtrace/tools/translation_table_tool/generic.rb type Granule64KiB (line 7) | module Granule64KiB type Granule512MiB (line 12) | module Granule512MiB class Integer (line 19) | class Integer method power_of_two? (line 20) | def power_of_two? method aligned? (line 24) | def aligned?(alignment) method align_up (line 30) | def align_up(alignment) method to_hex_underscore (line 36) | def to_hex_underscore(with_leading_zeros: false) class MemoryRegion (line 45) | class MemoryRegion < Array method initialize (line 46) | def initialize(start_addr, size, granule_size) class AttributeFields (line 59) | class AttributeFields method initialize (line 62) | def initialize(mem_attributes, acc_perms, execute_never) method to_s (line 68) | def to_s class MappingDescriptor (line 92) | class MappingDescriptor method update_max_section_name_length (line 98) | def update_max_section_name_length(length) method initialize (line 105) | def initialize(name, virt_region, phys_region, attributes) method size_human_readable (line 112) | def size_human_readable(size) method to_s (line 122) | def to_s method print_divider (line 131) | def self.print_divider method print_header (line 137) | def self.print_header function kernel_map_binary (line 154) | def kernel_map_binary function kernel_patch_tables (line 172) | def kernel_patch_tables(kernel_elf_path) function kernel_patch_base_addr (line 180) | def kernel_patch_base_addr(kernel_elf_path) FILE: 18_backtrace/tools/translation_table_tool/kernel_elf.rb class KernelELF (line 8) | class KernelELF method initialize (line 11) | def initialize(kernel_elf_path) method machine (line 16) | def machine method symbol_value (line 20) | def symbol_value(symbol_name) method segment_containing_virt_addr (line 24) | def segment_containing_virt_addr(virt_addr) method virt_to_phys (line 30) | def virt_to_phys(virt_addr) method virt_addr_to_file_offset (line 37) | def virt_addr_to_file_offset(virt_addr) method sections_in_segment (line 42) | def sections_in_segment(segment) method select_load_segments (line 56) | def select_load_segments method segment_get_acc_perms (line 62) | def segment_get_acc_perms(segment) method update_max_section_name_length (line 72) | def update_max_section_name_length(descriptors) method generate_mapping_descriptors (line 76) | def generate_mapping_descriptors FILE: 19_kernel_heap/kernel/build.rs function main (line 3) | fn main() { FILE: 19_kernel_heap/kernel/src/_arch/aarch64/backtrace.rs type StackFrameRecord (line 33) | struct StackFrameRecord<'a> { type StackFrameRecordIterator (line 38) | struct StackFrameRecordIterator<'a> { type Item (line 47) | type Item = BacktraceItem; method next (line 49) | fn next(&mut self) -> Option { function stack_frame_record_iterator (line 90) | fn stack_frame_record_iterator<'a>() -> Option ! { constant QEMU_EXIT_HANDLE (line 37) | const QEMU_EXIT_HANDLE: qemu_exit::AArch64 = qemu_exit::AArch64::new(); function qemu_exit_failure (line 41) | pub fn qemu_exit_failure() -> ! { function qemu_exit_success (line 47) | pub fn qemu_exit_success() -> ! { FILE: 19_kernel_heap/kernel/src/_arch/aarch64/cpu/boot.rs function prepare_el2_to_el1_transition (line 40) | unsafe fn prepare_el2_to_el1_transition( function prepare_backtrace_reset (line 79) | unsafe fn prepare_backtrace_reset() { function _start_rust (line 97) | pub unsafe extern "C" fn _start_rust( FILE: 19_kernel_heap/kernel/src/_arch/aarch64/cpu/smp.rs function core_id (line 23) | pub fn core_id() -> T FILE: 19_kernel_heap/kernel/src/_arch/aarch64/exception.rs type SpsrEL1 (line 35) | struct SpsrEL1(InMemoryRegister); method fmt (line 165) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type EsrEL1 (line 36) | struct EsrEL1(InMemoryRegister); method exception_class (line 197) | fn exception_class(&self) -> Option { method iss (line 203) | fn iss(&self) -> u64 { method fmt (line 211) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type ExceptionContext (line 40) | struct ExceptionContext { method exception_class (line 232) | fn exception_class(&self) -> Option { method fault_address_valid (line 237) | fn fault_address_valid(&self) -> bool { method fmt (line 258) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { function default_exception_handler (line 62) | fn default_exception_handler(exc: &ExceptionContext) { function current_el0_synchronous (line 75) | extern "C" fn current_el0_synchronous(_e: &mut ExceptionContext) { function current_el0_irq (line 80) | extern "C" fn current_el0_irq(_e: &mut ExceptionContext) { function current_el0_serror (line 85) | extern "C" fn current_el0_serror(_e: &mut ExceptionContext) { function current_elx_synchronous (line 94) | extern "C" fn current_elx_synchronous(e: &mut ExceptionContext) { function current_elx_irq (line 110) | extern "C" fn current_elx_irq(_e: &mut ExceptionContext) { function current_elx_serror (line 116) | extern "C" fn current_elx_serror(e: &mut ExceptionContext) { function lower_aarch64_synchronous (line 125) | extern "C" fn lower_aarch64_synchronous(e: &mut ExceptionContext) { function lower_aarch64_irq (line 130) | extern "C" fn lower_aarch64_irq(e: &mut ExceptionContext) { function lower_aarch64_serror (line 135) | extern "C" fn lower_aarch64_serror(e: &mut ExceptionContext) { function lower_aarch32_synchronous (line 144) | extern "C" fn lower_aarch32_synchronous(e: &mut ExceptionContext) { function lower_aarch32_irq (line 149) | extern "C" fn lower_aarch32_irq(e: &mut ExceptionContext) { function lower_aarch32_serror (line 154) | extern "C" fn lower_aarch32_serror(e: &mut ExceptionContext) { function current_privilege_level (line 297) | pub fn current_privilege_level() -> (PrivilegeLevel, &'static str) { function handling_init (line 315) | pub unsafe fn handling_init() { FILE: 19_kernel_heap/kernel/src/_arch/aarch64/exception/asynchronous.rs constant IRQ (line 23) | pub const IRQ: u8 = 0b0010; type DaifField (line 26) | trait DaifField { method daif_field (line 27) | fn daif_field() -> tock_registers::fields::Field; method daif_field (line 40) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 46) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 52) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 58) | fn daif_field() -> tock_registers::fields::Field { type Debug (line 30) | struct Debug; type SError (line 31) | struct SError; type IRQ (line 32) | struct IRQ; type FIQ (line 33) | struct FIQ; function is_masked (line 63) | fn is_masked() -> bool function is_local_irq_masked (line 75) | pub fn is_local_irq_masked() -> bool { function local_irq_unmask (line 87) | pub fn local_irq_unmask() { function local_irq_mask (line 99) | pub fn local_irq_mask() { function local_irq_mask_save (line 111) | pub fn local_irq_mask_save() -> u64 { function local_irq_restore (line 124) | pub fn local_irq_restore(saved: u64) { function print_state (line 130) | pub fn print_state() { FILE: 19_kernel_heap/kernel/src/_arch/aarch64/memory/mmu.rs type MemoryManagementUnit (line 29) | struct MemoryManagementUnit; method set_up_mair (line 70) | fn set_up_mair(&self) { method configure_translation_control (line 84) | fn configure_translation_control(&self) { method enable_mmu_and_caching (line 117) | unsafe fn enable_mmu_and_caching( method is_enabled (line 155) | fn is_enabled(&self) -> bool { type Granule512MiB (line 35) | pub type Granule512MiB = TranslationGranule<{ 512 * 1024 * 1024 }>; type Granule64KiB (line 36) | pub type Granule64KiB = TranslationGranule<{ 64 * 1024 }>; constant DEVICE (line 41) | pub const DEVICE: u64 = 0; constant NORMAL (line 42) | pub const NORMAL: u64 = 1; function arch_address_space_size_sanity_checks (line 57) | pub const fn arch_address_space_size_sanity_checks() { function mmu (line 107) | pub fn mmu() -> &'static impl memory::mmu::interface::MMU { FILE: 19_kernel_heap/kernel/src/_arch/aarch64/memory/mmu/translation_table.rs type TableDescriptor (line 114) | struct TableDescriptor { method new_zeroed (line 164) | pub const fn new_zeroed() -> Self { method from_next_lvl_table_addr (line 169) | pub fn from_next_lvl_table_addr(phys_next_lvl_table_addr: Address Self { method from_output_page_addr (line 258) | pub fn from_output_page_addr( method is_valid (line 277) | fn is_valid(&self) -> bool { method output_page_addr (line 283) | fn output_page_addr(&self) -> PageAddress { method try_attributes (line 291) | fn try_attributes(&self) -> Result { type StartAddr (line 127) | trait StartAddr { method virt_start_addr (line 128) | fn virt_start_addr(&self) -> Address; method virt_start_addr (line 155) | fn virt_start_addr(&self) -> Address { type FixedSizeTranslationTable (line 139) | pub struct FixedSizeTranslationTable Self { type Error (line 222) | type Error = &'static str; method try_from (line 224) | fn try_from( type TableStartFromTop (line 305) | type TableStartFromTop = type TableStartFromBottom (line 308) | type TableStartFromBottom = constant START_FROM_TOP_OFFSET (line 315) | const START_FROM_TOP_OFFSET: Address = function _new (line 320) | const fn _new(for_precompute: bool) -> Self { function new_for_precompute (line 333) | pub const fn new_for_precompute() -> Self { function new_for_runtime (line 338) | pub fn new_for_runtime() -> Self { function lvl2_lvl3_index_from_page_addr (line 344) | fn lvl2_lvl3_index_from_page_addr( function page_descriptor_from_page_addr (line 366) | fn page_descriptor_from_page_addr( function set_page_descriptor_from_page_addr (line 380) | fn set_page_descriptor_from_page_addr( function init (line 405) | fn init(&mut self) -> Result<(), &'static str> { function map_at (line 424) | unsafe fn map_at( function try_virt_page_addr_to_phys_page_addr (line 452) | fn try_virt_page_addr_to_phys_page_addr( function try_page_attributes (line 465) | fn try_page_attributes( function try_virt_addr_to_phys_addr (line 481) | fn try_virt_addr_to_phys_addr( type MinSizeTranslationTable (line 497) | pub type MinSizeTranslationTable = FixedSizeTranslationTable<1, true>; function size_of_tabledescriptor_equals_64_bit (line 506) | fn size_of_tabledescriptor_equals_64_bit() { function size_of_pagedescriptor_equals_64_bit (line 515) | fn size_of_pagedescriptor_equals_64_bit() { FILE: 19_kernel_heap/kernel/src/_arch/aarch64/time.rs constant NANOSEC_PER_SEC (line 27) | const NANOSEC_PER_SEC: NonZeroU64 = NonZeroU64::new(1_000_000_000).unwra... type GenericTimerCounterValue (line 30) | struct GenericTimerCounterValue(u64); constant MAX (line 55) | pub const MAX: Self = GenericTimerCounterValue(u64::MAX); type Error (line 96) | type Error = &'static str; method try_from (line 98) | fn try_from(duration: Duration) -> Result { function arch_timer_counter_frequency (line 45) | fn arch_timer_counter_frequency() -> NonZeroU32 { type Output (line 59) | type Output = Self; method add (line 61) | fn add(self, other: Self) -> Self { method from (line 67) | fn from(counter_value: GenericTimerCounterValue) -> Self { function max_duration (line 91) | fn max_duration() -> Duration { function read_cntpct (line 121) | fn read_cntpct() -> GenericTimerCounterValue { function resolution (line 134) | pub fn resolution() -> Duration { function uptime (line 141) | pub fn uptime() -> Duration { function spin_for (line 146) | pub fn spin_for(duration: Duration) { FILE: 19_kernel_heap/kernel/src/backtrace.rs type BacktraceItem (line 29) | pub enum BacktraceItem { type Backtrace (line 36) | pub struct Backtrace; method fmt (line 43) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { FILE: 19_kernel_heap/kernel/src/bsp/device_driver/arm/gicv2.rs type HandlerTable (line 95) | type HandlerTable = Vec; type GICv2 (line 105) | pub struct GICv2 { constant MAX_IRQ_NUMBER (line 121) | const MAX_IRQ_NUMBER: usize = 1019; constant COMPATIBLE (line 123) | pub const COMPATIBLE: &'static str = "GICv2 (ARM Generic Interrupt Con... method new (line 130) | pub const unsafe fn new( type IRQNumberType (line 148) | type IRQNumberType = IRQNumber; method compatible (line 150) | fn compatible(&self) -> &'static str { method init (line 154) | unsafe fn init(&self) -> Result<(), &'static str> { type IRQNumberType (line 170) | type IRQNumberType = IRQNumber; method register_handler (line 172) | fn register_handler( method enable (line 189) | fn enable(&self, irq_number: &Self::IRQNumberType) { method handle_pending_irqs (line 193) | fn handle_pending_irqs<'irq_context>( method print_handler (line 221) | fn print_handler(&self) { FILE: 19_kernel_heap/kernel/src/bsp/device_driver/arm/gicv2/gicc.rs type Registers (line 59) | type Registers = MMIODerefWrapper; type GICC (line 66) | pub struct GICC { method new (line 80) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method priority_accept_all (line 97) | pub fn priority_accept_all(&self) { method enable (line 107) | pub fn enable(&self) { method pending_irq_number (line 120) | pub fn pending_irq_number<'irq_context>( method mark_comleted (line 138) | pub fn mark_comleted<'irq_context>( FILE: 19_kernel_heap/kernel/src/bsp/device_driver/arm/gicv2/gicd.rs type SharedRegisters (line 73) | type SharedRegisters = MMIODerefWrapper; method num_irqs (line 98) | fn num_irqs(&mut self) -> usize { method implemented_itargets_slice (line 107) | fn implemented_itargets_slice(&mut self) -> &[ReadWrite; type GICD (line 83) | pub struct GICD { method new (line 133) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method local_gic_target_mask (line 146) | fn local_gic_target_mask(&self) -> u32 { method boot_core_init (line 151) | pub fn boot_core_init(&self) { method enable (line 175) | pub fn enable(&self, irq_num: &super::IRQNumber) { FILE: 19_kernel_heap/kernel/src/bsp/device_driver/bcm/bcm2xxx_gpio.rs type Registers (line 113) | type Registers = MMIODerefWrapper; type GPIOInner (line 115) | struct GPIOInner { method new (line 138) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method disable_pud_14_15_bcm2837 (line 146) | fn disable_pud_14_15_bcm2837(&mut self) { method disable_pud_14_15_bcm2711 (line 167) | fn disable_pud_14_15_bcm2711(&mut self) { method map_pl011_uart (line 178) | pub fn map_pl011_uart(&mut self) { type GPIO (line 124) | pub struct GPIO { constant COMPATIBLE (line 198) | pub const COMPATIBLE: &'static str = "BCM GPIO"; method new (line 205) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method map_pl011_uart (line 212) | pub fn map_pl011_uart(&self) { type IRQNumberType (line 223) | type IRQNumberType = IRQNumber; method compatible (line 225) | fn compatible(&self) -> &'static str { FILE: 19_kernel_heap/kernel/src/bsp/device_driver/bcm/bcm2xxx_interrupt_controller.rs type PendingIRQs (line 22) | struct PendingIRQs { method new (line 51) | pub fn new(bitmask: u64) -> Self { type LocalIRQ (line 30) | pub type LocalIRQ = BoundedUsize<{ InterruptController::MAX_LOCAL_IRQ_NU... type PeripheralIRQ (line 31) | pub type PeripheralIRQ = BoundedUsize<{ InterruptController::MAX_PERIPHE... type IRQNumber (line 36) | pub enum IRQNumber { method fmt (line 75) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type InterruptController (line 42) | pub struct InterruptController { constant MAX_LOCAL_IRQ_NUMBER (line 85) | const MAX_LOCAL_IRQ_NUMBER: usize = 3; constant MAX_PERIPHERAL_IRQ_NUMBER (line 86) | const MAX_PERIPHERAL_IRQ_NUMBER: usize = 63; constant COMPATIBLE (line 88) | pub const COMPATIBLE: &'static str = "BCM Interrupt Controller"; method new (line 95) | pub const unsafe fn new(periph_mmio_start_addr: Address) -> S... type IRQNumberType (line 107) | type IRQNumberType = IRQNumber; method compatible (line 109) | fn compatible(&self) -> &'static str { method init (line 113) | unsafe fn init(&self) -> Result<(), &'static str> { type IRQNumberType (line 121) | type IRQNumberType = IRQNumber; method register_handler (line 123) | fn register_handler( method enable (line 141) | fn enable(&self, irq: &Self::IRQNumberType) { method handle_pending_irqs (line 148) | fn handle_pending_irqs<'irq_context>( method print_handler (line 156) | fn print_handler(&self) { type Item (line 57) | type Item = usize; method next (line 59) | fn next(&mut self) -> Option { FILE: 19_kernel_heap/kernel/src/bsp/device_driver/bcm/bcm2xxx_interrupt_controller/peripheral_ic.rs type WriteOnlyRegisters (line 51) | type WriteOnlyRegisters = MMIODerefWrapper; type ReadOnlyRegisters (line 54) | type ReadOnlyRegisters = MMIODerefWrapper; type HandlerTable (line 56) | type HandlerTable = Vec) -> Self { method init (line 93) | pub fn init(&self) { method pending_irqs (line 99) | fn pending_irqs(&self) -> PendingIRQs { type IRQNumberType (line 113) | type IRQNumberType = PeripheralIRQ; method register_handler (line 115) | fn register_handler( method enable (line 132) | fn enable(&self, irq: &Self::IRQNumberType) { method handle_pending_irqs (line 148) | fn handle_pending_irqs<'irq_context>( method print_handler (line 165) | fn print_handler(&self) { FILE: 19_kernel_heap/kernel/src/bsp/device_driver/bcm/bcm2xxx_pl011_uart.rs type Registers (line 215) | type Registers = MMIODerefWrapper; type BlockingMode (line 218) | enum BlockingMode { type PL011UartInner (line 223) | struct PL011UartInner { method new (line 248) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method init (line 273) | pub fn init(&mut self) { method write_char (line 318) | fn write_char(&mut self, c: char) { method write_array (line 331) | fn write_array(&mut self, a: &[char]) { method flush (line 338) | fn flush(&self) { method read_char_converting (line 346) | fn read_char_converting(&mut self, blocking_mode: BlockingMode) -> Opt... method write_str (line 385) | fn write_str(&mut self, s: &str) -> fmt::Result { type PL011Uart (line 234) | pub struct PL011Uart { constant COMPATIBLE (line 399) | pub const COMPATIBLE: &'static str = "BCM PL011 UART"; method new (line 406) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { type IRQNumberType (line 419) | type IRQNumberType = IRQNumber; method compatible (line 421) | fn compatible(&self) -> &'static str { method init (line 425) | unsafe fn init(&self) -> Result<(), &'static str> { method register_and_enable_irq_handler (line 431) | fn register_and_enable_irq_handler( method write_char (line 449) | fn write_char(&self, c: char) { method write_array (line 453) | fn write_array(&self, a: &[char]) { method write_fmt (line 457) | fn write_fmt(&self, args: core::fmt::Arguments) -> fmt::Result { method flush (line 463) | fn flush(&self) { method read_char (line 470) | fn read_char(&self) -> char { method clear_rx (line 475) | fn clear_rx(&self) { method chars_written (line 486) | fn chars_written(&self) -> usize { method chars_read (line 490) | fn chars_read(&self) -> usize { method handle (line 498) | fn handle(&self) -> Result<(), &'static str> { FILE: 19_kernel_heap/kernel/src/bsp/device_driver/common.rs type MMIODerefWrapper (line 14) | pub struct MMIODerefWrapper { type BoundedUsize (line 21) | pub struct BoundedUsize(usize); function new (line 29) | pub const unsafe fn new(start_addr: Address) -> Self { type Target (line 38) | type Target = T; function deref (line 40) | fn deref(&self) -> &Self::Target { constant MAX_INCLUSIVE (line 46) | pub const MAX_INCLUSIVE: usize = MAX_INCLUSIVE; function new (line 49) | pub const fn new(number: usize) -> Self { function get (line 56) | pub const fn get(self) -> usize { function fmt (line 62) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { FILE: 19_kernel_heap/kernel/src/bsp/raspberrypi.rs function board_name (line 17) | pub fn board_name() -> &'static str { FILE: 19_kernel_heap/kernel/src/bsp/raspberrypi/driver.rs function instantiate_uart (line 39) | unsafe fn instantiate_uart() -> Result<(), &'static str> { function post_init_uart (line 50) | unsafe fn post_init_uart() -> Result<(), &'static str> { function instantiate_gpio (line 57) | unsafe fn instantiate_gpio() -> Result<(), &'static str> { function post_init_gpio (line 68) | unsafe fn post_init_gpio() -> Result<(), &'static str> { function instantiate_interrupt_controller (line 75) | unsafe fn instantiate_interrupt_controller() -> Result<(), &'static str> { function instantiate_interrupt_controller (line 90) | unsafe fn instantiate_interrupt_controller() -> Result<(), &'static str> { function post_init_interrupt_controller (line 103) | unsafe fn post_init_interrupt_controller() -> Result<(), &'static str> { function driver_uart (line 110) | unsafe fn driver_uart() -> Result<(), &'static str> { function driver_gpio (line 124) | unsafe fn driver_gpio() -> Result<(), &'static str> { function driver_interrupt_controller (line 138) | unsafe fn driver_interrupt_controller() -> Result<(), &'static str> { function init (line 160) | pub unsafe fn init() -> Result<(), &'static str> { function qemu_bring_up_console (line 177) | pub fn qemu_bring_up_console() { FILE: 19_kernel_heap/kernel/src/bsp/raspberrypi/exception/asynchronous.rs constant PL011_UART (line 20) | pub const PL011_UART: IRQNumber = IRQNumber::Peripheral(PeripheralIRQ::n... constant PL011_UART (line 27) | pub const PL011_UART: IRQNumber = IRQNumber::new(153); FILE: 19_kernel_heap/kernel/src/bsp/raspberrypi/memory.rs constant PERIPHERAL_IC_START (line 118) | pub const PERIPHERAL_IC_START: Address = Address::new(0x3F00_B... constant PERIPHERAL_IC_SIZE (line 119) | pub const PERIPHERAL_IC_SIZE: usize = 0x24; constant GPIO_START (line 121) | pub const GPIO_START: Address = Address::new(0x3F20_0... constant GPIO_SIZE (line 122) | pub const GPIO_SIZE: usize = 0xA0; constant PL011_UART_START (line 124) | pub const PL011_UART_START: Address = Address::new(0x3F20_1... constant PL011_UART_SIZE (line 125) | pub const PL011_UART_SIZE: usize = 0x48; constant END (line 127) | pub const END: Address = Address::new(0x4001_0... constant GPIO_START (line 135) | pub const GPIO_START: Address = Address::new(0xFE20_0000); constant GPIO_SIZE (line 136) | pub const GPIO_SIZE: usize = 0xA0; constant PL011_UART_START (line 138) | pub const PL011_UART_START: Address = Address::new(0xFE20_1000); constant PL011_UART_SIZE (line 139) | pub const PL011_UART_SIZE: usize = 0x48; constant GICD_START (line 141) | pub const GICD_START: Address = Address::new(0xFF84_1000); constant GICD_SIZE (line 142) | pub const GICD_SIZE: usize = 0x824; constant GICC_START (line 144) | pub const GICC_START: Address = Address::new(0xFF84_2000); constant GICC_SIZE (line 145) | pub const GICC_SIZE: usize = 0x14; constant END (line 147) | pub const END: Address = Address::new(0xFF85_0000); constant END (line 150) | pub const END: Address = mmio::END; function virt_code_start (line 163) | fn virt_code_start() -> PageAddress { function code_size (line 173) | fn code_size() -> usize { function virt_data_start (line 179) | fn virt_data_start() -> PageAddress { function data_size (line 189) | fn data_size() -> usize { function virt_heap_start (line 195) | fn virt_heap_start() -> PageAddress { function heap_size (line 205) | fn heap_size() -> usize { function virt_mmio_remap_start (line 215) | fn virt_mmio_remap_start() -> PageAddress { function mmio_remap_size (line 225) | fn mmio_remap_size() -> usize { function virt_boot_core_stack_start (line 231) | fn virt_boot_core_stack_start() -> PageAddress { function boot_core_stack_size (line 237) | fn boot_core_stack_size() -> usize { function phys_addr_space_end_exclusive_addr (line 249) | pub fn phys_addr_space_end_exclusive_addr() -> PageAddress { FILE: 19_kernel_heap/kernel/src/bsp/raspberrypi/memory/mmu.rs type KernelTranslationTable (line 22) | type KernelTranslationTable = type KernelGranule (line 31) | pub type KernelGranule = TranslationGranule<{ 64 * 1024 }>; type KernelVirtAddrSpace (line 34) | pub type KernelVirtAddrSpace = AddressSpace<{ kernel_virt_addr_space_siz... function kernel_virt_addr_space_size (line 67) | const fn kernel_virt_addr_space_size() -> usize { function size_to_num_pages (line 76) | const fn size_to_num_pages(size: usize) -> usize { function virt_data_region (line 84) | fn virt_data_region() -> MemoryRegion { function kernel_virt_to_phys_region (line 95) | fn kernel_virt_to_phys_region(virt_region: MemoryRegion) -> Mem... function kernel_page_attributes (line 107) | fn kernel_page_attributes(virt_page_addr: PageAddress) -> Attri... function virt_code_region (line 116) | pub fn virt_code_region() -> MemoryRegion { function virt_heap_region (line 126) | pub fn virt_heap_region() -> MemoryRegion { function virt_boot_core_stack_region (line 136) | pub fn virt_boot_core_stack_region() -> MemoryRegion { function kernel_translation_tables (line 146) | pub fn kernel_translation_tables() -> &'static InitStateLock MemoryRegion { function kernel_add_mapping_records_for_precomputed (line 165) | pub fn kernel_add_mapping_records_for_precomputed() { FILE: 19_kernel_heap/kernel/src/common.rs function is_aligned (line 9) | pub const fn is_aligned(value: usize, alignment: usize) -> bool { function align_down (line 17) | pub const fn align_down(value: usize, alignment: usize) -> usize { function align_up (line 25) | pub const fn align_up(value: usize, alignment: usize) -> usize { function size_human_readable_ceil (line 32) | pub const fn size_human_readable_ceil(size: usize) -> (usize, &'static s... FILE: 19_kernel_heap/kernel/src/console.rs type Write (line 20) | pub trait Write { method write_char (line 22) | fn write_char(&self, c: char); method write_array (line 25) | fn write_array(&self, a: &[char]); method write_fmt (line 28) | fn write_fmt(&self, args: fmt::Arguments) -> fmt::Result; method flush (line 31) | fn flush(&self); type Read (line 35) | pub trait Read { method read_char (line 37) | fn read_char(&self) -> char { method clear_rx (line 42) | fn clear_rx(&self); type Statistics (line 46) | pub trait Statistics { method chars_written (line 48) | fn chars_written(&self) -> usize { method chars_read (line 53) | fn chars_read(&self) -> usize { type All (line 59) | pub trait All: Write + Read + Statistics {} function register_console (line 75) | pub fn register_console(new_console: &'static (dyn interface::All + Sync... function console (line 91) | pub fn console() -> &'static dyn interface::All { FILE: 19_kernel_heap/kernel/src/console/buffer_console.rs constant BUF_SIZE (line 15) | const BUF_SIZE: usize = 1024 * 64; type BufferConsoleInner (line 17) | pub struct BufferConsoleInner { method write_char (line 47) | fn write_char(&mut self, c: char) { method write_str (line 56) | fn write_str(&mut self, s: &str) -> fmt::Result { type BufferConsole (line 26) | pub struct BufferConsole { method dump (line 76) | pub fn dump(&self) { method write_char (line 90) | fn write_char(&self, c: char) { method write_array (line 94) | fn write_array(&self, _a: &[char]) {} method write_fmt (line 96) | fn write_fmt(&self, args: fmt::Arguments) -> fmt::Result { method flush (line 100) | fn flush(&self) {} method clear_rx (line 104) | fn clear_rx(&self) {} FILE: 19_kernel_heap/kernel/src/driver.rs type DeviceDriver (line 21) | pub trait DeviceDriver { method compatible (line 26) | fn compatible(&self) -> &'static str; method init (line 33) | unsafe fn init(&self) -> Result<(), &'static str> { method register_and_enable_irq_handler (line 41) | fn register_and_enable_irq_handler( type DeviceDriverPostInitCallback (line 55) | pub type DeviceDriverPostInitCallback = unsafe fn() -> Result<(), &'stat... type DeviceDriverDescriptor (line 58) | pub struct DeviceDriverDescriptor type DriverManager (line 68) | pub struct DriverManager function new (line 87) | pub fn new( function driver_manager (line 101) | pub fn driver_manager() -> &'static DriverManager Self { function register_driver (line 117) | pub fn register_driver(&self, descriptor: DeviceDriverDescriptor) { function init_drivers_and_irqs (line 127) | pub unsafe fn init_drivers_and_irqs(&self) { function enumerate (line 171) | pub fn enumerate(&self) { FILE: 19_kernel_heap/kernel/src/exception.rs type PrivilegeLevel (line 25) | pub enum PrivilegeLevel { function test_runner_executes_in_kernel_mode (line 43) | fn test_runner_executes_in_kernel_mode() { FILE: 19_kernel_heap/kernel/src/exception/asynchronous.rs type IRQNumber (line 28) | pub type IRQNumber = bsp::exception::asynchronous::IRQNumber; type IRQHandlerDescriptor (line 32) | pub struct IRQHandlerDescriptor type IRQContext (line 54) | pub struct IRQContext<'irq_context> { type IRQHandler (line 62) | pub trait IRQHandler { method handle (line 64) | fn handle(&self) -> Result<(), &'static str>; type IRQManager (line 71) | pub trait IRQManager { method register_handler (line 76) | fn register_handler( method enable (line 82) | fn enable(&self, irq_number: &Self::IRQNumberType); method handle_pending_irqs (line 92) | fn handle_pending_irqs<'irq_context>( method print_handler (line 98) | fn print_handler(&self) {} function new (line 120) | pub const fn new( function number (line 133) | pub const fn number(&self) -> T { function name (line 138) | pub const fn name(&self) -> &'static str { function handler (line 143) | pub const fn handler(&self) -> &'static (dyn interface::IRQHandler + Syn... function new (line 160) | pub unsafe fn new() -> Self { function exec_with_irq_masked (line 170) | pub fn exec_with_irq_masked(f: impl FnOnce() -> T) -> T { function register_irq_manager (line 179) | pub fn register_irq_manager( function irq_manager (line 188) | pub fn irq_manager() -> &'static dyn interface::IRQManager(&'irq_context self, _ic: &IRQCont... FILE: 19_kernel_heap/kernel/src/lib.rs function version (line 157) | pub fn version() -> &'static str { function test_runner (line 170) | pub fn test_runner(tests: &[&test_types::UnitTest]) { function kernel_init (line 188) | unsafe fn kernel_init() -> ! { FILE: 19_kernel_heap/kernel/src/main.rs function kernel_init (line 29) | unsafe fn kernel_init() -> ! { function kernel_main (line 54) | fn kernel_main() -> ! { FILE: 19_kernel_heap/kernel/src/memory.rs type AddressType (line 22) | pub trait AddressType: Copy + Clone + PartialOrd + PartialEq + Ord + Eq {} type Physical (line 26) | pub enum Physical {} type Virtual (line 30) | pub enum Virtual {} type Address (line 34) | pub struct Address { function new (line 48) | pub const fn new(value: usize) -> Self { function as_usize (line 56) | pub const fn as_usize(self) -> usize { function align_down_page (line 62) | pub const fn align_down_page(self) -> Self { function align_up_page (line 70) | pub const fn align_up_page(self) -> Self { function is_page_aligned (line 77) | pub const fn is_page_aligned(&self) -> bool { function offset_into_page (line 82) | pub const fn offset_into_page(&self) -> usize { type Output (line 88) | type Output = Self; function add (line 91) | fn add(self, rhs: usize) -> Self::Output { type Output (line 100) | type Output = Self; function sub (line 103) | fn sub(self, rhs: usize) -> Self::Output { type Output (line 112) | type Output = Self; function sub (line 115) | fn sub(self, rhs: Address) -> Self::Output { function is_valid_stack_addr (line 125) | pub fn is_valid_stack_addr(&self) -> bool { function is_valid_code_addr (line 130) | pub fn is_valid_code_addr(&self) -> bool { function fmt (line 137) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { function fmt (line 150) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { function init (line 165) | pub fn init() { function address_type_method_sanity (line 181) | fn address_type_method_sanity() { FILE: 19_kernel_heap/kernel/src/memory/heap_alloc.rs type HeapAllocator (line 23) | pub struct HeapAllocator { method new (line 77) | pub const fn new() -> Self { method print_usage (line 84) | pub fn print_usage(&self) { function debug_print_alloc_dealloc (line 39) | fn debug_print_alloc_dealloc(operation: &'static str, ptr: *mut u8, layo... function alloc_error_handler (line 66) | fn alloc_error_handler(layout: Layout) -> ! { function kernel_heap_allocator (line 71) | pub fn kernel_heap_allocator() -> &'static HeapAllocator { method alloc (line 106) | unsafe fn alloc(&self, layout: Layout) -> *mut u8 { method dealloc (line 123) | unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) { function kernel_init_heap_allocator (line 133) | pub fn kernel_init_heap_allocator() { FILE: 19_kernel_heap/kernel/src/memory/mmu.rs type MMUEnableError (line 32) | pub enum MMUEnableError { method fmt (line 121) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { type MMU (line 42) | pub trait MMU { method enable_mmu_and_caching (line 48) | unsafe fn enable_mmu_and_caching( method is_enabled (line 54) | fn is_enabled(&self) -> bool; type TranslationGranule (line 59) | pub struct TranslationGranule; type AddressSpace (line 62) | pub struct AddressSpace; type AssociatedTranslationTable (line 65) | pub trait AssociatedTranslationTable { function kernel_map_at_unchecked (line 92) | unsafe fn kernel_map_at_unchecked( function try_kernel_virt_addr_to_phys_addr (line 109) | fn try_kernel_virt_addr_to_phys_addr( constant SIZE (line 131) | pub const SIZE: usize = Self::size_checked(); constant MASK (line 134) | pub const MASK: usize = Self::SIZE - 1; constant SHIFT (line 137) | pub const SHIFT: usize = Self::SIZE.trailing_zeros() as usize; function size_checked (line 139) | const fn size_checked() -> usize { constant SIZE (line 148) | pub const SIZE: usize = Self::size_checked(); constant SIZE_SHIFT (line 151) | pub const SIZE_SHIFT: usize = Self::SIZE.trailing_zeros() as usize; function size_checked (line 153) | const fn size_checked() -> usize { function kernel_init_mmio_va_allocator (line 165) | pub fn kernel_init_mmio_va_allocator() { function kernel_add_mapping_record (line 172) | pub fn kernel_add_mapping_record( function kernel_map_mmio (line 188) | pub unsafe fn kernel_map_mmio( function try_kernel_virt_page_addr_to_phys_page_addr (line 230) | pub fn try_kernel_virt_page_addr_to_phys_page_addr( function try_kernel_page_attributes (line 240) | pub fn try_kernel_page_attributes( function kernel_print_mappings (line 248) | pub fn kernel_print_mappings() { function enable_mmu_and_caching (line 258) | pub unsafe fn enable_mmu_and_caching( FILE: 19_kernel_heap/kernel/src/memory/mmu/mapping_record.rs type MappingRecordEntry (line 20) | struct MappingRecordEntry { method new (line 44) | pub fn new( method add_user (line 59) | pub fn add_user(&mut self, user: &'static str) { type MappingRecord (line 28) | struct MappingRecord { method new (line 65) | pub const fn new() -> Self { method sort (line 69) | fn sort(&mut self) { method find_duplicate (line 75) | fn find_duplicate( method add (line 95) | pub fn add( method print (line 112) | pub fn print(&self) { function kernel_add (line 177) | pub fn kernel_add( function kernel_find_and_insert_mmio_duplicate (line 186) | pub fn kernel_find_and_insert_mmio_duplicate( function kernel_print (line 202) | pub fn kernel_print() { FILE: 19_kernel_heap/kernel/src/memory/mmu/page_alloc.rs type PageAllocator (line 20) | pub struct PageAllocator { function kernel_mmio_va_allocator (line 36) | pub fn kernel_mmio_va_allocator() -> &'static IRQSafeNullLock Self { function init (line 47) | pub fn init(&mut self, pool: MemoryRegion) { function alloc (line 57) | pub fn alloc( FILE: 19_kernel_heap/kernel/src/memory/mmu/translation_table.rs type TranslationTable (line 31) | pub trait TranslationTable { method init (line 38) | fn init(&mut self) -> Result<(), &'static str>; method map_at (line 49) | unsafe fn map_at( method try_virt_page_addr_to_phys_page_addr (line 59) | fn try_virt_page_addr_to_phys_page_addr( method try_page_attributes (line 67) | fn try_page_attributes( method try_virt_addr_to_phys_addr (line 75) | fn try_virt_addr_to_phys_addr( function translationtable_implementation_sanity (line 96) | fn translationtable_implementation_sanity() { FILE: 19_kernel_heap/kernel/src/memory/mmu/types.rs type PageAddress (line 19) | pub struct PageAddress { type MemoryRegion (line 25) | pub struct MemoryRegion { type MemAttributes (line 33) | pub enum MemAttributes { type AccessPermissions (line 41) | pub enum AccessPermissions { type AttributeFields (line 49) | pub struct AttributeFields { type MMIODescriptor (line 57) | pub struct MMIODescriptor { method new (line 280) | pub const fn new(start_addr: Address, size: usize) -> Self { method start_addr (line 291) | pub const fn start_addr(&self) -> Address { method end_addr_exclusive (line 296) | pub fn end_addr_exclusive(&self) -> Address { constant MAX (line 71) | pub const MAX: Self = PageAddress { function into_inner (line 76) | pub fn into_inner(self) -> Address { function checked_offset (line 84) | pub fn checked_offset(self, count: isize) -> Option { function from (line 105) | fn from(addr: usize) -> Self { function from (line 118) | fn from(addr: Address) -> Self { method steps_between (line 126) | fn steps_between(start: &Self, end: &Self) -> Option { method forward_checked (line 138) | fn forward_checked(start: Self, count: usize) -> Option { method backward_checked (line 142) | fn backward_checked(start: Self, count: usize) -> Option { function new (line 152) | pub fn new(start: PageAddress, end_exclusive: PageAddress)... function as_range (line 161) | fn as_range(&self) -> Range> { function start_page_addr (line 166) | pub fn start_page_addr(&self) -> PageAddress { function start_addr (line 171) | pub fn start_addr(&self) -> Address { function end_exclusive_page_addr (line 176) | pub fn end_exclusive_page_addr(&self) -> PageAddress { function end_inclusive_page_addr (line 181) | pub fn end_inclusive_page_addr(&self) -> PageAddress { function contains (line 186) | pub fn contains(&self, addr: Address) -> bool { function overlaps (line 192) | pub fn overlaps(&self, other_region: &Self) -> bool { function num_pages (line 200) | pub fn num_pages(&self) -> usize { function size (line 205) | pub fn size(&self) -> usize { function take_first_n_pages (line 227) | pub fn take_first_n_pages(&mut self, num_pages: NonZeroUsize) -> Result<... type Item (line 251) | type Item = PageAddress; type IntoIter (line 252) | type IntoIter = Range; method into_iter (line 254) | fn into_iter(self) -> Self::IntoIter { function from (line 263) | fn from(desc: MMIODescriptor) -> Self { function pageaddress_type_method_sanity (line 313) | fn pageaddress_type_method_sanity() { function memoryregion_type_method_sanity (line 348) | fn memoryregion_type_method_sanity() { FILE: 19_kernel_heap/kernel/src/panic_wait.rs function _panic_exit (line 19) | fn _panic_exit() -> ! { function panic_prevent_reenter (line 43) | fn panic_prevent_reenter() { function panic (line 61) | fn panic(info: &PanicInfo) -> ! { FILE: 19_kernel_heap/kernel/src/print.rs function _print (line 15) | pub fn _print(args: fmt::Arguments) { FILE: 19_kernel_heap/kernel/src/state.rs type State (line 15) | enum State { type StateManager (line 33) | pub struct StateManager(AtomicU8); constant INIT (line 51) | const INIT: u8 = 0; constant SINGLE_CORE_MAIN (line 52) | const SINGLE_CORE_MAIN: u8 = 1; constant MULTI_CORE_MAIN (line 53) | const MULTI_CORE_MAIN: u8 = 2; method new (line 56) | pub const fn new() -> Self { method state (line 61) | fn state(&self) -> State { method is_init (line 73) | pub fn is_init(&self) -> bool { method transition_to_single_core_main (line 78) | pub fn transition_to_single_core_main(&self) { function state_manager (line 46) | pub fn state_manager() -> &'static StateManager { FILE: 19_kernel_heap/kernel/src/symbols.rs function kernel_symbol_section_virt_start_addr (line 33) | fn kernel_symbol_section_virt_start_addr() -> Address { function num_kernel_symbols (line 37) | fn num_kernel_symbols() -> usize { function kernel_symbols_slice (line 45) | fn kernel_symbols_slice() -> &'static [Symbol] { function lookup_symbol (line 56) | pub fn lookup_symbol(addr: Address) -> Option<&'static Symbol> { function symbols_sanity (line 73) | fn symbols_sanity() { FILE: 19_kernel_heap/kernel/src/synchronization.rs type Mutex (line 24) | pub trait Mutex { method lock (line 29) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; type ReadWriteEx (line 36) | pub trait ReadWriteEx { method write (line 41) | fn write<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; method read (line 44) | fn read<'a, R>(&'a self, f: impl FnOnce(&'a Self::Data) -> R) -> R; type IRQSafeNullLock (line 55) | pub struct IRQSafeNullLock type InitStateLock (line 65) | pub struct InitStateLock function new (line 81) | pub const fn new(data: T) -> Self { function new (line 93) | pub const fn new(data: T) -> Self { type Data (line 106) | type Data = T; function lock (line 108) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { type Data (line 119) | type Data = T; function write (line 121) | fn write<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { function read (line 136) | fn read<'a, R>(&'a self, f: impl FnOnce(&'a Self::Data) -> R) -> R { function init_state_lock_is_transparent (line 154) | fn init_state_lock_is_transparent() { FILE: 19_kernel_heap/kernel/src/time.rs type TimeManager (line 18) | pub struct TimeManager; method new (line 37) | pub const fn new() -> Self { method resolution (line 42) | pub fn resolution(&self) -> Duration { method uptime (line 49) | pub fn uptime(&self) -> Duration { method spin_for (line 54) | pub fn spin_for(&self, duration: Duration) { function time_manager (line 31) | pub fn time_manager() -> &'static TimeManager { FILE: 19_kernel_heap/kernel/tests/00_console_sanity.rb class TxRxHandshakeTest (line 10) | class TxRxHandshakeTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, qemu_in) class TxStatisticsTest (line 22) | class TxStatisticsTest < SubtestBase method name (line 23) | def name method run (line 27) | def run(qemu_out, _qemu_in) class RxStatisticsTest (line 33) | class RxStatisticsTest < SubtestBase method name (line 34) | def name method run (line 38) | def run(qemu_out, _qemu_in) function subtest_collection (line 46) | def subtest_collection FILE: 19_kernel_heap/kernel/tests/00_console_sanity.rs function kernel_init (line 17) | unsafe fn kernel_init() -> ! { FILE: 19_kernel_heap/kernel/tests/01_timer_sanity.rs function kernel_init (line 18) | unsafe fn kernel_init() -> ! { function timer_is_counting (line 32) | fn timer_is_counting() { function timer_resolution_is_sufficient (line 38) | fn timer_resolution_is_sufficient() { function spin_accuracy_check_1_second (line 45) | fn spin_accuracy_check_1_second() { FILE: 19_kernel_heap/kernel/tests/02_exception_sync_page_fault.rs function kernel_init (line 23) | unsafe fn kernel_init() -> ! { FILE: 19_kernel_heap/kernel/tests/03_exception_restore_sanity.rb class ExceptionRestoreTest (line 10) | class ExceptionRestoreTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, _qemu_in) function subtest_collection (line 23) | def subtest_collection FILE: 19_kernel_heap/kernel/tests/03_exception_restore_sanity.rs function nested_system_call (line 18) | fn nested_system_call() { function kernel_init (line 32) | unsafe fn kernel_init() -> ! { FILE: 19_kernel_heap/kernel/tests/04_exception_irq_sanity.rs function kernel_init (line 17) | unsafe fn kernel_init() -> ! { function local_irq_mask_works (line 31) | fn local_irq_mask_works() { function local_irq_unmask_works (line 44) | fn local_irq_unmask_works() { function local_irq_mask_save_works (line 55) | fn local_irq_mask_save_works() { FILE: 19_kernel_heap/kernel/tests/05_backtrace_sanity.rb class PanicBacktraceTest (line 10) | class PanicBacktraceTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, _qemu_in) class BacktraceCorrectnessTest (line 22) | class BacktraceCorrectnessTest < SubtestBase method name (line 23) | def name method run (line 27) | def run(qemu_out, _qemu_in) function subtest_collection (line 37) | def subtest_collection FILE: 19_kernel_heap/kernel/tests/05_backtrace_sanity.rs function nested (line 17) | fn nested() { function kernel_init (line 22) | unsafe fn kernel_init() -> ! { FILE: 19_kernel_heap/kernel/tests/06_backtrace_invalid_frame.rb class InvalidFramePointerTest (line 10) | class InvalidFramePointerTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, _qemu_in) function subtest_collection (line 24) | def subtest_collection FILE: 19_kernel_heap/kernel/tests/06_backtrace_invalid_frame.rs function nested (line 17) | fn nested() { function kernel_init (line 24) | unsafe fn kernel_init() -> ! { FILE: 19_kernel_heap/kernel/tests/07_backtrace_invalid_link.rb class InvalidLinkTest (line 10) | class InvalidLinkTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, _qemu_in) function subtest_collection (line 23) | def subtest_collection FILE: 19_kernel_heap/kernel/tests/07_backtrace_invalid_link.rs function nested_2 (line 17) | fn nested_2() -> &'static str { function nested_1 (line 24) | fn nested_1() { function kernel_init (line 29) | unsafe fn kernel_init() -> ! { FILE: 19_kernel_heap/kernel/tests/panic_exit_success/mod.rs function _panic_exit (line 7) | fn _panic_exit() -> ! { FILE: 19_kernel_heap/kernel/tests/panic_wait_forever/mod.rs function _panic_exit (line 7) | fn _panic_exit() -> ! { FILE: 19_kernel_heap/kernel_symbols/build.rs function main (line 3) | fn main() { FILE: 19_kernel_heap/kernel_symbols/src/main.rs function panic (line 14) | fn panic(_info: &core::panic::PanicInfo) -> ! { FILE: 19_kernel_heap/libraries/debug-symbol-types/src/lib.rs type Symbol (line 14) | pub struct Symbol { method new (line 21) | pub const fn new(start: usize, size: usize, name: &'static str) -> Sym... method contains (line 32) | pub fn contains(&self, addr: usize) -> bool { method name (line 37) | pub fn name(&self) -> &'static str { method size (line 42) | pub fn size(&self) -> usize { FILE: 19_kernel_heap/libraries/test-macros/src/lib.rs function kernel_test (line 11) | pub fn kernel_test(_attr: TokenStream, input: TokenStream) -> TokenStream { FILE: 19_kernel_heap/libraries/test-types/src/lib.rs type UnitTest (line 10) | pub struct UnitTest { FILE: 19_kernel_heap/tools/kernel_symbols_tool/cmds.rb function generate_symbols (line 7) | def generate_symbols(kernel_elf, output_file) function get_symbols_section_virt_addr (line 29) | def get_symbols_section_virt_addr(kernel_elf) function patch_symbol_data (line 33) | def patch_symbol_data(kernel_elf, symbols_blob_path) function patch_num_symbols (line 42) | def patch_num_symbols(kernel_elf) FILE: 19_kernel_heap/tools/kernel_symbols_tool/kernel_elf.rb class KernelELF (line 8) | class KernelELF method initialize (line 11) | def initialize(kernel_elf_path, kernel_symbols_section, num_kernel_sym... method fetch_values (line 21) | def fetch_values(kernel_symbols_section, num_kernel_symbols) method num_kernel_symbols_virt_addr (line 33) | def num_kernel_symbols_virt_addr method segment_containing_virt_addr (line 37) | def segment_containing_virt_addr(virt_addr) method virt_addr_to_file_offset (line 43) | def virt_addr_to_file_offset(virt_addr) method symbols (line 50) | def symbols method num_symbols (line 55) | def num_symbols method kernel_symbols_section_virt_addr (line 59) | def kernel_symbols_section_virt_addr method kernel_symbols_section_size (line 63) | def kernel_symbols_section_size method kernel_symbols_section_offset_in_file (line 67) | def kernel_symbols_section_offset_in_file method num_kernel_symbols_offset_in_file (line 71) | def num_kernel_symbols_offset_in_file FILE: 19_kernel_heap/tools/translation_table_tool/arch.rb class BitField (line 8) | class BitField method initialize (line 9) | def initialize method attr_bitfield (line 13) | def self.attr_bitfield(name, offset, num_bits) method to_i (line 27) | def to_i method size_in_byte (line 31) | def size_in_byte class CArray (line 37) | class CArray < Array method initialize (line 40) | def initialize(phys_start_addr, size, &block) method size_in_byte (line 46) | def size_in_byte type Arch (line 54) | module Arch type ARMv8 (line 58) | module ARMv8 class Stage1TableDescriptor (line 60) | class Stage1TableDescriptor < BitField type NextLevelTableAddr (line 61) | module NextLevelTableAddr type Type (line 66) | module Type type Valid (line 74) | module Valid method next_level_table_addr= (line 86) | def next_level_table_addr=(addr) class Stage1PageDescriptor (line 96) | class Stage1PageDescriptor < BitField type UXN (line 97) | module UXN type PXN (line 105) | module PXN type OutputAddr (line 113) | module OutputAddr type AF (line 118) | module AF type SH (line 126) | module SH type AP (line 133) | module AP type AttrIndx (line 141) | module AttrIndx type Type (line 146) | module Type type Valid (line 154) | module Valid method output_addr= (line 172) | def output_addr=(addr) class TranslationTable (line 182) | class TranslationTable type MAIR (line 183) | module MAIR method initialize (line 187) | def initialize method map_at (line 200) | def map_at(virt_region, phys_region, attributes) method to_binary (line 212) | def to_binary method phys_tables_base_addr_binary (line 217) | def phys_tables_base_addr_binary method phys_tables_base_addr (line 221) | def phys_tables_base_addr method do_sanity_checks (line 227) | def do_sanity_checks method new_lvl3 (line 232) | def new_lvl3(num_lvl2_tables, start_addr) method new_lvl2 (line 243) | def new_lvl2(num_lvl2_tables, start_addr) method populate_lvl2_entries (line 249) | def populate_lvl2_entries method lvl2_lvl3_index_from (line 257) | def lvl2_lvl3_index_from(addr) method page_descriptor_from (line 268) | def page_descriptor_from(virt_addr) method set_attributes (line 275) | def set_attributes(desc, attributes) method set_lvl3_entry (line 304) | def set_lvl3_entry(desc, output_addr, attributes) FILE: 19_kernel_heap/tools/translation_table_tool/bsp.rb class RaspberryPi (line 8) | class RaspberryPi method initialize (line 13) | def initialize method phys_addr_of_kernel_tables (line 25) | def phys_addr_of_kernel_tables method kernel_tables_offset_in_file (line 29) | def kernel_tables_offset_in_file method phys_kernel_tables_base_addr_offset_in_file (line 33) | def phys_kernel_tables_base_addr_offset_in_file method phys_addr_space_end_page (line 37) | def phys_addr_space_end_page FILE: 19_kernel_heap/tools/translation_table_tool/generic.rb type Granule64KiB (line 7) | module Granule64KiB type Granule512MiB (line 12) | module Granule512MiB class Integer (line 19) | class Integer method power_of_two? (line 20) | def power_of_two? method aligned? (line 24) | def aligned?(alignment) method align_up (line 30) | def align_up(alignment) method to_hex_underscore (line 36) | def to_hex_underscore(with_leading_zeros: false) class MemoryRegion (line 45) | class MemoryRegion < Array method initialize (line 46) | def initialize(start_addr, size, granule_size) class AttributeFields (line 59) | class AttributeFields method initialize (line 62) | def initialize(mem_attributes, acc_perms, execute_never) method to_s (line 68) | def to_s class MappingDescriptor (line 92) | class MappingDescriptor method update_max_section_name_length (line 98) | def update_max_section_name_length(length) method initialize (line 105) | def initialize(name, virt_region, phys_region, attributes) method size_human_readable (line 112) | def size_human_readable(size) method to_s (line 122) | def to_s method print_divider (line 131) | def self.print_divider method print_header (line 137) | def self.print_header function kernel_map_binary (line 154) | def kernel_map_binary function kernel_patch_tables (line 172) | def kernel_patch_tables(kernel_elf_path) function kernel_patch_base_addr (line 180) | def kernel_patch_base_addr(kernel_elf_path) FILE: 19_kernel_heap/tools/translation_table_tool/kernel_elf.rb class KernelELF (line 8) | class KernelELF method initialize (line 11) | def initialize(kernel_elf_path) method machine (line 16) | def machine method symbol_value (line 20) | def symbol_value(symbol_name) method segment_containing_virt_addr (line 24) | def segment_containing_virt_addr(virt_addr) method virt_to_phys (line 30) | def virt_to_phys(virt_addr) method virt_addr_to_file_offset (line 37) | def virt_addr_to_file_offset(virt_addr) method sections_in_segment (line 42) | def sections_in_segment(segment) method select_load_segments (line 56) | def select_load_segments method segment_get_acc_perms (line 62) | def segment_get_acc_perms(segment) method update_max_section_name_length (line 72) | def update_max_section_name_length(descriptors) method generate_mapping_descriptors (line 76) | def generate_mapping_descriptors FILE: 20_timer_callbacks/kernel/build.rs function main (line 3) | fn main() { FILE: 20_timer_callbacks/kernel/src/_arch/aarch64/backtrace.rs type StackFrameRecord (line 33) | struct StackFrameRecord<'a> { type StackFrameRecordIterator (line 38) | struct StackFrameRecordIterator<'a> { type Item (line 47) | type Item = BacktraceItem; method next (line 49) | fn next(&mut self) -> Option { function stack_frame_record_iterator (line 90) | fn stack_frame_record_iterator<'a>() -> Option ! { constant QEMU_EXIT_HANDLE (line 37) | const QEMU_EXIT_HANDLE: qemu_exit::AArch64 = qemu_exit::AArch64::new(); function qemu_exit_failure (line 41) | pub fn qemu_exit_failure() -> ! { function qemu_exit_success (line 47) | pub fn qemu_exit_success() -> ! { FILE: 20_timer_callbacks/kernel/src/_arch/aarch64/cpu/boot.rs function prepare_el2_to_el1_transition (line 40) | unsafe fn prepare_el2_to_el1_transition( function prepare_backtrace_reset (line 79) | unsafe fn prepare_backtrace_reset() { function _start_rust (line 97) | pub unsafe extern "C" fn _start_rust( FILE: 20_timer_callbacks/kernel/src/_arch/aarch64/cpu/smp.rs function core_id (line 23) | pub fn core_id() -> T FILE: 20_timer_callbacks/kernel/src/_arch/aarch64/exception.rs type SpsrEL1 (line 35) | struct SpsrEL1(InMemoryRegister); method fmt (line 165) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type EsrEL1 (line 36) | struct EsrEL1(InMemoryRegister); method exception_class (line 197) | fn exception_class(&self) -> Option { method iss (line 203) | fn iss(&self) -> u64 { method fmt (line 211) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type ExceptionContext (line 40) | struct ExceptionContext { method exception_class (line 232) | fn exception_class(&self) -> Option { method fault_address_valid (line 237) | fn fault_address_valid(&self) -> bool { method fmt (line 258) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { function default_exception_handler (line 62) | fn default_exception_handler(exc: &ExceptionContext) { function current_el0_synchronous (line 75) | extern "C" fn current_el0_synchronous(_e: &mut ExceptionContext) { function current_el0_irq (line 80) | extern "C" fn current_el0_irq(_e: &mut ExceptionContext) { function current_el0_serror (line 85) | extern "C" fn current_el0_serror(_e: &mut ExceptionContext) { function current_elx_synchronous (line 94) | extern "C" fn current_elx_synchronous(e: &mut ExceptionContext) { function current_elx_irq (line 110) | extern "C" fn current_elx_irq(_e: &mut ExceptionContext) { function current_elx_serror (line 116) | extern "C" fn current_elx_serror(e: &mut ExceptionContext) { function lower_aarch64_synchronous (line 125) | extern "C" fn lower_aarch64_synchronous(e: &mut ExceptionContext) { function lower_aarch64_irq (line 130) | extern "C" fn lower_aarch64_irq(e: &mut ExceptionContext) { function lower_aarch64_serror (line 135) | extern "C" fn lower_aarch64_serror(e: &mut ExceptionContext) { function lower_aarch32_synchronous (line 144) | extern "C" fn lower_aarch32_synchronous(e: &mut ExceptionContext) { function lower_aarch32_irq (line 149) | extern "C" fn lower_aarch32_irq(e: &mut ExceptionContext) { function lower_aarch32_serror (line 154) | extern "C" fn lower_aarch32_serror(e: &mut ExceptionContext) { function current_privilege_level (line 297) | pub fn current_privilege_level() -> (PrivilegeLevel, &'static str) { function handling_init (line 315) | pub unsafe fn handling_init() { FILE: 20_timer_callbacks/kernel/src/_arch/aarch64/exception/asynchronous.rs constant IRQ (line 23) | pub const IRQ: u8 = 0b0010; type DaifField (line 26) | trait DaifField { method daif_field (line 27) | fn daif_field() -> tock_registers::fields::Field; method daif_field (line 40) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 46) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 52) | fn daif_field() -> tock_registers::fields::Field { method daif_field (line 58) | fn daif_field() -> tock_registers::fields::Field { type Debug (line 30) | struct Debug; type SError (line 31) | struct SError; type IRQ (line 32) | struct IRQ; type FIQ (line 33) | struct FIQ; function is_masked (line 63) | fn is_masked() -> bool function is_local_irq_masked (line 75) | pub fn is_local_irq_masked() -> bool { function local_irq_unmask (line 87) | pub fn local_irq_unmask() { function local_irq_mask (line 99) | pub fn local_irq_mask() { function local_irq_mask_save (line 111) | pub fn local_irq_mask_save() -> u64 { function local_irq_restore (line 124) | pub fn local_irq_restore(saved: u64) { function print_state (line 130) | pub fn print_state() { FILE: 20_timer_callbacks/kernel/src/_arch/aarch64/memory/mmu.rs type MemoryManagementUnit (line 29) | struct MemoryManagementUnit; method set_up_mair (line 70) | fn set_up_mair(&self) { method configure_translation_control (line 84) | fn configure_translation_control(&self) { method enable_mmu_and_caching (line 117) | unsafe fn enable_mmu_and_caching( method is_enabled (line 155) | fn is_enabled(&self) -> bool { type Granule512MiB (line 35) | pub type Granule512MiB = TranslationGranule<{ 512 * 1024 * 1024 }>; type Granule64KiB (line 36) | pub type Granule64KiB = TranslationGranule<{ 64 * 1024 }>; constant DEVICE (line 41) | pub const DEVICE: u64 = 0; constant NORMAL (line 42) | pub const NORMAL: u64 = 1; function arch_address_space_size_sanity_checks (line 57) | pub const fn arch_address_space_size_sanity_checks() { function mmu (line 107) | pub fn mmu() -> &'static impl memory::mmu::interface::MMU { FILE: 20_timer_callbacks/kernel/src/_arch/aarch64/memory/mmu/translation_table.rs type TableDescriptor (line 114) | struct TableDescriptor { method new_zeroed (line 164) | pub const fn new_zeroed() -> Self { method from_next_lvl_table_addr (line 169) | pub fn from_next_lvl_table_addr(phys_next_lvl_table_addr: Address Self { method from_output_page_addr (line 258) | pub fn from_output_page_addr( method is_valid (line 277) | fn is_valid(&self) -> bool { method output_page_addr (line 283) | fn output_page_addr(&self) -> PageAddress { method try_attributes (line 291) | fn try_attributes(&self) -> Result { type StartAddr (line 127) | trait StartAddr { method virt_start_addr (line 128) | fn virt_start_addr(&self) -> Address; method virt_start_addr (line 155) | fn virt_start_addr(&self) -> Address { type FixedSizeTranslationTable (line 139) | pub struct FixedSizeTranslationTable Self { type Error (line 222) | type Error = &'static str; method try_from (line 224) | fn try_from( type TableStartFromTop (line 305) | type TableStartFromTop = type TableStartFromBottom (line 308) | type TableStartFromBottom = constant START_FROM_TOP_OFFSET (line 315) | const START_FROM_TOP_OFFSET: Address = function _new (line 320) | const fn _new(for_precompute: bool) -> Self { function new_for_precompute (line 333) | pub const fn new_for_precompute() -> Self { function new_for_runtime (line 338) | pub fn new_for_runtime() -> Self { function lvl2_lvl3_index_from_page_addr (line 344) | fn lvl2_lvl3_index_from_page_addr( function page_descriptor_from_page_addr (line 366) | fn page_descriptor_from_page_addr( function set_page_descriptor_from_page_addr (line 380) | fn set_page_descriptor_from_page_addr( function init (line 405) | fn init(&mut self) -> Result<(), &'static str> { function map_at (line 424) | unsafe fn map_at( function try_virt_page_addr_to_phys_page_addr (line 452) | fn try_virt_page_addr_to_phys_page_addr( function try_page_attributes (line 465) | fn try_page_attributes( function try_virt_addr_to_phys_addr (line 481) | fn try_virt_addr_to_phys_addr( type MinSizeTranslationTable (line 497) | pub type MinSizeTranslationTable = FixedSizeTranslationTable<1, true>; function size_of_tabledescriptor_equals_64_bit (line 506) | fn size_of_tabledescriptor_equals_64_bit() { function size_of_pagedescriptor_equals_64_bit (line 515) | fn size_of_pagedescriptor_equals_64_bit() { FILE: 20_timer_callbacks/kernel/src/_arch/aarch64/time.rs constant NANOSEC_PER_SEC (line 30) | const NANOSEC_PER_SEC: NonZeroU64 = NonZeroU64::new(1_000_000_000).unwra... type GenericTimerCounterValue (line 33) | struct GenericTimerCounterValue(u64); constant MAX (line 58) | pub const MAX: Self = GenericTimerCounterValue(u64::MAX); type Error (line 99) | type Error = &'static str; method try_from (line 101) | fn try_from(duration: Duration) -> Result { function arch_timer_counter_frequency (line 48) | fn arch_timer_counter_frequency() -> NonZeroU32 { type Output (line 62) | type Output = Self; method add (line 64) | fn add(self, other: Self) -> Self { method from (line 70) | fn from(counter_value: GenericTimerCounterValue) -> Self { function max_duration (line 94) | fn max_duration() -> Duration { function read_cntpct (line 124) | fn read_cntpct() -> GenericTimerCounterValue { function resolution (line 137) | pub fn resolution() -> Duration { function uptime (line 144) | pub fn uptime() -> Duration { function spin_for (line 149) | pub fn spin_for(duration: Duration) { function timeout_irq (line 168) | pub const fn timeout_irq() -> exception::asynchronous::IRQNumber { function set_timeout_irq (line 173) | pub fn set_timeout_irq(due_time: Duration) { function conclude_timeout_irq (line 190) | pub fn conclude_timeout_irq() { FILE: 20_timer_callbacks/kernel/src/backtrace.rs type BacktraceItem (line 29) | pub enum BacktraceItem { type Backtrace (line 36) | pub struct Backtrace; method fmt (line 43) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { FILE: 20_timer_callbacks/kernel/src/bsp/device_driver/arm/gicv2.rs type HandlerTable (line 95) | type HandlerTable = Vec; type GICv2 (line 105) | pub struct GICv2 { constant MAX_IRQ_NUMBER (line 121) | const MAX_IRQ_NUMBER: usize = 1019; constant COMPATIBLE (line 123) | pub const COMPATIBLE: &'static str = "GICv2 (ARM Generic Interrupt Con... method new (line 130) | pub const unsafe fn new( type IRQNumberType (line 148) | type IRQNumberType = IRQNumber; method compatible (line 150) | fn compatible(&self) -> &'static str { method init (line 154) | unsafe fn init(&self) -> Result<(), &'static str> { type IRQNumberType (line 170) | type IRQNumberType = IRQNumber; method register_handler (line 172) | fn register_handler( method enable (line 189) | fn enable(&self, irq_number: &Self::IRQNumberType) { method handle_pending_irqs (line 193) | fn handle_pending_irqs<'irq_context>( method print_handler (line 221) | fn print_handler(&self) { FILE: 20_timer_callbacks/kernel/src/bsp/device_driver/arm/gicv2/gicc.rs type Registers (line 59) | type Registers = MMIODerefWrapper; type GICC (line 66) | pub struct GICC { method new (line 80) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method priority_accept_all (line 97) | pub fn priority_accept_all(&self) { method enable (line 107) | pub fn enable(&self) { method pending_irq_number (line 120) | pub fn pending_irq_number<'irq_context>( method mark_comleted (line 138) | pub fn mark_comleted<'irq_context>( FILE: 20_timer_callbacks/kernel/src/bsp/device_driver/arm/gicv2/gicd.rs type SharedRegisters (line 73) | type SharedRegisters = MMIODerefWrapper; method num_irqs (line 98) | fn num_irqs(&mut self) -> usize { method implemented_itargets_slice (line 107) | fn implemented_itargets_slice(&mut self) -> &[ReadWrite; type GICD (line 83) | pub struct GICD { method new (line 133) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method local_gic_target_mask (line 146) | fn local_gic_target_mask(&self) -> u32 { method boot_core_init (line 151) | pub fn boot_core_init(&self) { method enable (line 175) | pub fn enable(&self, irq_num: &super::IRQNumber) { FILE: 20_timer_callbacks/kernel/src/bsp/device_driver/bcm/bcm2xxx_gpio.rs type Registers (line 113) | type Registers = MMIODerefWrapper; type GPIOInner (line 115) | struct GPIOInner { method new (line 138) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method disable_pud_14_15_bcm2837 (line 146) | fn disable_pud_14_15_bcm2837(&mut self) { method disable_pud_14_15_bcm2711 (line 167) | fn disable_pud_14_15_bcm2711(&mut self) { method map_pl011_uart (line 178) | pub fn map_pl011_uart(&mut self) { type GPIO (line 124) | pub struct GPIO { constant COMPATIBLE (line 198) | pub const COMPATIBLE: &'static str = "BCM GPIO"; method new (line 205) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method map_pl011_uart (line 212) | pub fn map_pl011_uart(&self) { type IRQNumberType (line 223) | type IRQNumberType = IRQNumber; method compatible (line 225) | fn compatible(&self) -> &'static str { FILE: 20_timer_callbacks/kernel/src/bsp/device_driver/bcm/bcm2xxx_interrupt_controller.rs type PendingIRQs (line 23) | struct PendingIRQs { method new (line 53) | pub fn new(bitmask: u64) -> Self { type LocalIRQ (line 31) | pub type LocalIRQ = BoundedUsize<{ InterruptController::MAX_LOCAL_IRQ_NU... type PeripheralIRQ (line 32) | pub type PeripheralIRQ = BoundedUsize<{ InterruptController::MAX_PERIPHE... type IRQNumber (line 37) | pub enum IRQNumber { method fmt (line 77) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { type InterruptController (line 43) | pub struct InterruptController { constant MAX_LOCAL_IRQ_NUMBER (line 87) | const MAX_LOCAL_IRQ_NUMBER: usize = 3; constant MAX_PERIPHERAL_IRQ_NUMBER (line 88) | const MAX_PERIPHERAL_IRQ_NUMBER: usize = 63; constant COMPATIBLE (line 90) | pub const COMPATIBLE: &'static str = "BCM Interrupt Controller"; method new (line 97) | pub const unsafe fn new( type IRQNumberType (line 113) | type IRQNumberType = IRQNumber; method compatible (line 115) | fn compatible(&self) -> &'static str { method init (line 119) | unsafe fn init(&self) -> Result<(), &'static str> { type IRQNumberType (line 128) | type IRQNumberType = IRQNumber; method register_handler (line 130) | fn register_handler( method enable (line 156) | fn enable(&self, irq: &Self::IRQNumberType) { method handle_pending_irqs (line 163) | fn handle_pending_irqs<'irq_context>( method print_handler (line 171) | fn print_handler(&self) { type Item (line 59) | type Item = usize; method next (line 61) | fn next(&mut self) -> Option { FILE: 20_timer_callbacks/kernel/src/bsp/device_driver/bcm/bcm2xxx_interrupt_controller/local_ic.rs type WriteOnlyRegisters (line 49) | type WriteOnlyRegisters = MMIODerefWrapper; type ReadOnlyRegisters (line 52) | type ReadOnlyRegisters = MMIODerefWrapper; type HandlerTable (line 54) | type HandlerTable = Vec) -> Self { method init (line 94) | pub fn init(&self) { method pending_irqs (line 100) | fn pending_irqs(&self) -> PendingIRQs { type IRQNumberType (line 114) | type IRQNumberType = LocalIRQ; method register_handler (line 116) | fn register_handler( method enable (line 133) | fn enable(&self, irq: &Self::IRQNumberType) { method handle_pending_irqs (line 143) | fn handle_pending_irqs<'irq_context>( method print_handler (line 160) | fn print_handler(&self) { FILE: 20_timer_callbacks/kernel/src/bsp/device_driver/bcm/bcm2xxx_interrupt_controller/peripheral_ic.rs type WriteOnlyRegisters (line 51) | type WriteOnlyRegisters = MMIODerefWrapper; type ReadOnlyRegisters (line 54) | type ReadOnlyRegisters = MMIODerefWrapper; type HandlerTable (line 56) | type HandlerTable = Vec) -> Self { method init (line 93) | pub fn init(&self) { method pending_irqs (line 99) | fn pending_irqs(&self) -> PendingIRQs { type IRQNumberType (line 113) | type IRQNumberType = PeripheralIRQ; method register_handler (line 115) | fn register_handler( method enable (line 132) | fn enable(&self, irq: &Self::IRQNumberType) { method handle_pending_irqs (line 148) | fn handle_pending_irqs<'irq_context>( method print_handler (line 165) | fn print_handler(&self) { FILE: 20_timer_callbacks/kernel/src/bsp/device_driver/bcm/bcm2xxx_pl011_uart.rs type Registers (line 215) | type Registers = MMIODerefWrapper; type BlockingMode (line 218) | enum BlockingMode { type PL011UartInner (line 223) | struct PL011UartInner { method new (line 248) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { method init (line 273) | pub fn init(&mut self) { method write_char (line 318) | fn write_char(&mut self, c: char) { method write_array (line 331) | fn write_array(&mut self, a: &[char]) { method flush (line 338) | fn flush(&self) { method read_char_converting (line 346) | fn read_char_converting(&mut self, blocking_mode: BlockingMode) -> Opt... method write_str (line 385) | fn write_str(&mut self, s: &str) -> fmt::Result { type PL011Uart (line 234) | pub struct PL011Uart { constant COMPATIBLE (line 399) | pub const COMPATIBLE: &'static str = "BCM PL011 UART"; method new (line 406) | pub const unsafe fn new(mmio_start_addr: Address) -> Self { type IRQNumberType (line 419) | type IRQNumberType = IRQNumber; method compatible (line 421) | fn compatible(&self) -> &'static str { method init (line 425) | unsafe fn init(&self) -> Result<(), &'static str> { method register_and_enable_irq_handler (line 431) | fn register_and_enable_irq_handler( method write_char (line 449) | fn write_char(&self, c: char) { method write_array (line 453) | fn write_array(&self, a: &[char]) { method write_fmt (line 457) | fn write_fmt(&self, args: core::fmt::Arguments) -> fmt::Result { method flush (line 463) | fn flush(&self) { method read_char (line 470) | fn read_char(&self) -> char { method clear_rx (line 475) | fn clear_rx(&self) { method chars_written (line 486) | fn chars_written(&self) -> usize { method chars_read (line 490) | fn chars_read(&self) -> usize { method handle (line 498) | fn handle(&self) -> Result<(), &'static str> { FILE: 20_timer_callbacks/kernel/src/bsp/device_driver/common.rs type MMIODerefWrapper (line 14) | pub struct MMIODerefWrapper { type BoundedUsize (line 21) | pub struct BoundedUsize(usize); function new (line 29) | pub const unsafe fn new(start_addr: Address) -> Self { type Target (line 38) | type Target = T; function deref (line 40) | fn deref(&self) -> &Self::Target { constant MAX_INCLUSIVE (line 46) | pub const MAX_INCLUSIVE: usize = MAX_INCLUSIVE; function new (line 49) | pub const fn new(number: usize) -> Self { function get (line 56) | pub const fn get(self) -> usize { function fmt (line 62) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { FILE: 20_timer_callbacks/kernel/src/bsp/raspberrypi.rs function board_name (line 17) | pub fn board_name() -> &'static str { FILE: 20_timer_callbacks/kernel/src/bsp/raspberrypi/driver.rs function instantiate_uart (line 39) | unsafe fn instantiate_uart() -> Result<(), &'static str> { function post_init_uart (line 50) | unsafe fn post_init_uart() -> Result<(), &'static str> { function instantiate_gpio (line 57) | unsafe fn instantiate_gpio() -> Result<(), &'static str> { function post_init_gpio (line 68) | unsafe fn post_init_gpio() -> Result<(), &'static str> { function instantiate_interrupt_controller (line 75) | unsafe fn instantiate_interrupt_controller() -> Result<(), &'static str> { function instantiate_interrupt_controller (line 99) | unsafe fn instantiate_interrupt_controller() -> Result<(), &'static str> { function post_init_interrupt_controller (line 112) | unsafe fn post_init_interrupt_controller() -> Result<(), &'static str> { function driver_uart (line 119) | unsafe fn driver_uart() -> Result<(), &'static str> { function driver_gpio (line 133) | unsafe fn driver_gpio() -> Result<(), &'static str> { function driver_interrupt_controller (line 147) | unsafe fn driver_interrupt_controller() -> Result<(), &'static str> { function init (line 169) | pub unsafe fn init() -> Result<(), &'static str> { function qemu_bring_up_console (line 186) | pub fn qemu_bring_up_console() { FILE: 20_timer_callbacks/kernel/src/bsp/raspberrypi/exception/asynchronous.rs constant ARM_NS_PHYSICAL_TIMER (line 22) | pub const ARM_NS_PHYSICAL_TIMER: IRQNumber = IRQNumber::Local(LocalIRQ::... constant PL011_UART (line 24) | pub(in crate::bsp) const PL011_UART: IRQNumber = IRQNumber::Peripheral(P... constant ARM_NS_PHYSICAL_TIMER (line 33) | pub const ARM_NS_PHYSICAL_TIMER: IRQNumber = IRQNumber::new(30); constant PL011_UART (line 35) | pub(in crate::bsp) const PL011_UART: IRQNumber = IRQNumber::new(153); FILE: 20_timer_callbacks/kernel/src/bsp/raspberrypi/memory.rs constant PERIPHERAL_IC_START (line 118) | pub const PERIPHERAL_IC_START: Address = Address::new(0x3F00_B... constant PERIPHERAL_IC_SIZE (line 119) | pub const PERIPHERAL_IC_SIZE: usize = 0x24; constant GPIO_START (line 121) | pub const GPIO_START: Address = Address::new(0x3F20_0... constant GPIO_SIZE (line 122) | pub const GPIO_SIZE: usize = 0xA0; constant PL011_UART_START (line 124) | pub const PL011_UART_START: Address = Address::new(0x3F20_1... constant PL011_UART_SIZE (line 125) | pub const PL011_UART_SIZE: usize = 0x48; constant LOCAL_IC_START (line 127) | pub const LOCAL_IC_START: Address = Address::new(0x4000_0... constant LOCAL_IC_SIZE (line 128) | pub const LOCAL_IC_SIZE: usize = 0x100; constant END (line 130) | pub const END: Address = Address::new(0x4001_0... constant GPIO_START (line 138) | pub const GPIO_START: Address = Address::new(0xFE20_0000); constant GPIO_SIZE (line 139) | pub const GPIO_SIZE: usize = 0xA0; constant PL011_UART_START (line 141) | pub const PL011_UART_START: Address = Address::new(0xFE20_1000); constant PL011_UART_SIZE (line 142) | pub const PL011_UART_SIZE: usize = 0x48; constant GICD_START (line 144) | pub const GICD_START: Address = Address::new(0xFF84_1000); constant GICD_SIZE (line 145) | pub const GICD_SIZE: usize = 0x824; constant GICC_START (line 147) | pub const GICC_START: Address = Address::new(0xFF84_2000); constant GICC_SIZE (line 148) | pub const GICC_SIZE: usize = 0x14; constant END (line 150) | pub const END: Address = Address::new(0xFF85_0000); constant END (line 153) | pub const END: Address = mmio::END; function virt_code_start (line 166) | fn virt_code_start() -> PageAddress { function code_size (line 176) | fn code_size() -> usize { function virt_data_start (line 182) | fn virt_data_start() -> PageAddress { function data_size (line 192) | fn data_size() -> usize { function virt_heap_start (line 198) | fn virt_heap_start() -> PageAddress { function heap_size (line 208) | fn heap_size() -> usize { function virt_mmio_remap_start (line 218) | fn virt_mmio_remap_start() -> PageAddress { function mmio_remap_size (line 228) | fn mmio_remap_size() -> usize { function virt_boot_core_stack_start (line 234) | fn virt_boot_core_stack_start() -> PageAddress { function boot_core_stack_size (line 240) | fn boot_core_stack_size() -> usize { function phys_addr_space_end_exclusive_addr (line 252) | pub fn phys_addr_space_end_exclusive_addr() -> PageAddress { FILE: 20_timer_callbacks/kernel/src/bsp/raspberrypi/memory/mmu.rs type KernelTranslationTable (line 22) | type KernelTranslationTable = type KernelGranule (line 31) | pub type KernelGranule = TranslationGranule<{ 64 * 1024 }>; type KernelVirtAddrSpace (line 34) | pub type KernelVirtAddrSpace = AddressSpace<{ kernel_virt_addr_space_siz... function kernel_virt_addr_space_size (line 67) | const fn kernel_virt_addr_space_size() -> usize { function size_to_num_pages (line 76) | const fn size_to_num_pages(size: usize) -> usize { function virt_data_region (line 84) | fn virt_data_region() -> MemoryRegion { function kernel_virt_to_phys_region (line 95) | fn kernel_virt_to_phys_region(virt_region: MemoryRegion) -> Mem... function kernel_page_attributes (line 107) | fn kernel_page_attributes(virt_page_addr: PageAddress) -> Attri... function virt_code_region (line 116) | pub fn virt_code_region() -> MemoryRegion { function virt_heap_region (line 126) | pub fn virt_heap_region() -> MemoryRegion { function virt_boot_core_stack_region (line 136) | pub fn virt_boot_core_stack_region() -> MemoryRegion { function kernel_translation_tables (line 146) | pub fn kernel_translation_tables() -> &'static InitStateLock MemoryRegion { function kernel_add_mapping_records_for_precomputed (line 165) | pub fn kernel_add_mapping_records_for_precomputed() { FILE: 20_timer_callbacks/kernel/src/common.rs function is_aligned (line 9) | pub const fn is_aligned(value: usize, alignment: usize) -> bool { function align_down (line 17) | pub const fn align_down(value: usize, alignment: usize) -> usize { function align_up (line 25) | pub const fn align_up(value: usize, alignment: usize) -> usize { function size_human_readable_ceil (line 32) | pub const fn size_human_readable_ceil(size: usize) -> (usize, &'static s... FILE: 20_timer_callbacks/kernel/src/console.rs type Write (line 20) | pub trait Write { method write_char (line 22) | fn write_char(&self, c: char); method write_array (line 25) | fn write_array(&self, a: &[char]); method write_fmt (line 28) | fn write_fmt(&self, args: fmt::Arguments) -> fmt::Result; method flush (line 31) | fn flush(&self); type Read (line 35) | pub trait Read { method read_char (line 37) | fn read_char(&self) -> char { method clear_rx (line 42) | fn clear_rx(&self); type Statistics (line 46) | pub trait Statistics { method chars_written (line 48) | fn chars_written(&self) -> usize { method chars_read (line 53) | fn chars_read(&self) -> usize { type All (line 59) | pub trait All: Write + Read + Statistics {} function register_console (line 75) | pub fn register_console(new_console: &'static (dyn interface::All + Sync... function console (line 91) | pub fn console() -> &'static dyn interface::All { FILE: 20_timer_callbacks/kernel/src/console/buffer_console.rs constant BUF_SIZE (line 15) | const BUF_SIZE: usize = 1024 * 64; type BufferConsoleInner (line 17) | pub struct BufferConsoleInner { method write_char (line 47) | fn write_char(&mut self, c: char) { method write_str (line 56) | fn write_str(&mut self, s: &str) -> fmt::Result { type BufferConsole (line 26) | pub struct BufferConsole { method dump (line 76) | pub fn dump(&self) { method write_char (line 90) | fn write_char(&self, c: char) { method write_array (line 94) | fn write_array(&self, _a: &[char]) {} method write_fmt (line 96) | fn write_fmt(&self, args: fmt::Arguments) -> fmt::Result { method flush (line 100) | fn flush(&self) {} method clear_rx (line 104) | fn clear_rx(&self) {} FILE: 20_timer_callbacks/kernel/src/driver.rs type DeviceDriver (line 21) | pub trait DeviceDriver { method compatible (line 26) | fn compatible(&self) -> &'static str; method init (line 33) | unsafe fn init(&self) -> Result<(), &'static str> { method register_and_enable_irq_handler (line 41) | fn register_and_enable_irq_handler( type DeviceDriverPostInitCallback (line 55) | pub type DeviceDriverPostInitCallback = unsafe fn() -> Result<(), &'stat... type DeviceDriverDescriptor (line 58) | pub struct DeviceDriverDescriptor type DriverManager (line 68) | pub struct DriverManager function new (line 87) | pub fn new( function driver_manager (line 101) | pub fn driver_manager() -> &'static DriverManager Self { function register_driver (line 117) | pub fn register_driver(&self, descriptor: DeviceDriverDescriptor) { function init_drivers_and_irqs (line 127) | pub unsafe fn init_drivers_and_irqs(&self) { function enumerate (line 171) | pub fn enumerate(&self) { FILE: 20_timer_callbacks/kernel/src/exception.rs type PrivilegeLevel (line 25) | pub enum PrivilegeLevel { function test_runner_executes_in_kernel_mode (line 43) | fn test_runner_executes_in_kernel_mode() { FILE: 20_timer_callbacks/kernel/src/exception/asynchronous.rs type IRQNumber (line 28) | pub type IRQNumber = bsp::exception::asynchronous::IRQNumber; type IRQHandlerDescriptor (line 32) | pub struct IRQHandlerDescriptor type IRQContext (line 54) | pub struct IRQContext<'irq_context> { type IRQHandler (line 62) | pub trait IRQHandler { method handle (line 64) | fn handle(&self) -> Result<(), &'static str>; type IRQManager (line 71) | pub trait IRQManager { method register_handler (line 76) | fn register_handler( method enable (line 82) | fn enable(&self, irq_number: &Self::IRQNumberType); method handle_pending_irqs (line 92) | fn handle_pending_irqs<'irq_context>( method print_handler (line 98) | fn print_handler(&self) {} function new (line 120) | pub const fn new( function number (line 133) | pub const fn number(&self) -> T { function name (line 138) | pub const fn name(&self) -> &'static str { function handler (line 143) | pub const fn handler(&self) -> &'static (dyn interface::IRQHandler + Syn... function new (line 160) | pub unsafe fn new() -> Self { function exec_with_irq_masked (line 170) | pub fn exec_with_irq_masked(f: impl FnOnce() -> T) -> T { function register_irq_manager (line 179) | pub fn register_irq_manager( function irq_manager (line 188) | pub fn irq_manager() -> &'static dyn interface::IRQManager(&'irq_context self, _ic: &IRQCont... FILE: 20_timer_callbacks/kernel/src/lib.rs function version (line 157) | pub fn version() -> &'static str { function test_runner (line 170) | pub fn test_runner(tests: &[&test_types::UnitTest]) { function kernel_init (line 188) | unsafe fn kernel_init() -> ! { FILE: 20_timer_callbacks/kernel/src/main.rs function kernel_init (line 29) | unsafe fn kernel_init() -> ! { function kernel_main (line 59) | fn kernel_main() -> ! { FILE: 20_timer_callbacks/kernel/src/memory.rs type AddressType (line 22) | pub trait AddressType: Copy + Clone + PartialOrd + PartialEq + Ord + Eq {} type Physical (line 26) | pub enum Physical {} type Virtual (line 30) | pub enum Virtual {} type Address (line 34) | pub struct Address { function new (line 48) | pub const fn new(value: usize) -> Self { function as_usize (line 56) | pub const fn as_usize(self) -> usize { function align_down_page (line 62) | pub const fn align_down_page(self) -> Self { function align_up_page (line 70) | pub const fn align_up_page(self) -> Self { function is_page_aligned (line 77) | pub const fn is_page_aligned(&self) -> bool { function offset_into_page (line 82) | pub const fn offset_into_page(&self) -> usize { type Output (line 88) | type Output = Self; function add (line 91) | fn add(self, rhs: usize) -> Self::Output { type Output (line 100) | type Output = Self; function sub (line 103) | fn sub(self, rhs: usize) -> Self::Output { type Output (line 112) | type Output = Self; function sub (line 115) | fn sub(self, rhs: Address) -> Self::Output { function is_valid_stack_addr (line 125) | pub fn is_valid_stack_addr(&self) -> bool { function is_valid_code_addr (line 130) | pub fn is_valid_code_addr(&self) -> bool { function fmt (line 137) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { function fmt (line 150) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { function init (line 165) | pub fn init() { function address_type_method_sanity (line 181) | fn address_type_method_sanity() { FILE: 20_timer_callbacks/kernel/src/memory/heap_alloc.rs type HeapAllocator (line 23) | pub struct HeapAllocator { method new (line 77) | pub const fn new() -> Self { method print_usage (line 84) | pub fn print_usage(&self) { function debug_print_alloc_dealloc (line 39) | fn debug_print_alloc_dealloc(operation: &'static str, ptr: *mut u8, layo... function alloc_error_handler (line 66) | fn alloc_error_handler(layout: Layout) -> ! { function kernel_heap_allocator (line 71) | pub fn kernel_heap_allocator() -> &'static HeapAllocator { method alloc (line 106) | unsafe fn alloc(&self, layout: Layout) -> *mut u8 { method dealloc (line 123) | unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) { function kernel_init_heap_allocator (line 133) | pub fn kernel_init_heap_allocator() { FILE: 20_timer_callbacks/kernel/src/memory/mmu.rs type MMUEnableError (line 32) | pub enum MMUEnableError { method fmt (line 121) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { type MMU (line 42) | pub trait MMU { method enable_mmu_and_caching (line 48) | unsafe fn enable_mmu_and_caching( method is_enabled (line 54) | fn is_enabled(&self) -> bool; type TranslationGranule (line 59) | pub struct TranslationGranule; type AddressSpace (line 62) | pub struct AddressSpace; type AssociatedTranslationTable (line 65) | pub trait AssociatedTranslationTable { function kernel_map_at_unchecked (line 92) | unsafe fn kernel_map_at_unchecked( function try_kernel_virt_addr_to_phys_addr (line 109) | fn try_kernel_virt_addr_to_phys_addr( constant SIZE (line 131) | pub const SIZE: usize = Self::size_checked(); constant MASK (line 134) | pub const MASK: usize = Self::SIZE - 1; constant SHIFT (line 137) | pub const SHIFT: usize = Self::SIZE.trailing_zeros() as usize; function size_checked (line 139) | const fn size_checked() -> usize { constant SIZE (line 148) | pub const SIZE: usize = Self::size_checked(); constant SIZE_SHIFT (line 151) | pub const SIZE_SHIFT: usize = Self::SIZE.trailing_zeros() as usize; function size_checked (line 153) | const fn size_checked() -> usize { function kernel_init_mmio_va_allocator (line 165) | pub fn kernel_init_mmio_va_allocator() { function kernel_add_mapping_record (line 172) | pub fn kernel_add_mapping_record( function kernel_map_mmio (line 188) | pub unsafe fn kernel_map_mmio( function try_kernel_virt_page_addr_to_phys_page_addr (line 230) | pub fn try_kernel_virt_page_addr_to_phys_page_addr( function try_kernel_page_attributes (line 240) | pub fn try_kernel_page_attributes( function kernel_print_mappings (line 248) | pub fn kernel_print_mappings() { function enable_mmu_and_caching (line 258) | pub unsafe fn enable_mmu_and_caching( FILE: 20_timer_callbacks/kernel/src/memory/mmu/mapping_record.rs type MappingRecordEntry (line 20) | struct MappingRecordEntry { method new (line 44) | pub fn new( method add_user (line 59) | pub fn add_user(&mut self, user: &'static str) { type MappingRecord (line 28) | struct MappingRecord { method new (line 65) | pub const fn new() -> Self { method sort (line 69) | fn sort(&mut self) { method find_duplicate (line 75) | fn find_duplicate( method add (line 95) | pub fn add( method print (line 112) | pub fn print(&self) { function kernel_add (line 177) | pub fn kernel_add( function kernel_find_and_insert_mmio_duplicate (line 186) | pub fn kernel_find_and_insert_mmio_duplicate( function kernel_print (line 202) | pub fn kernel_print() { FILE: 20_timer_callbacks/kernel/src/memory/mmu/page_alloc.rs type PageAllocator (line 20) | pub struct PageAllocator { function kernel_mmio_va_allocator (line 36) | pub fn kernel_mmio_va_allocator() -> &'static IRQSafeNullLock Self { function init (line 47) | pub fn init(&mut self, pool: MemoryRegion) { function alloc (line 57) | pub fn alloc( FILE: 20_timer_callbacks/kernel/src/memory/mmu/translation_table.rs type TranslationTable (line 31) | pub trait TranslationTable { method init (line 38) | fn init(&mut self) -> Result<(), &'static str>; method map_at (line 49) | unsafe fn map_at( method try_virt_page_addr_to_phys_page_addr (line 59) | fn try_virt_page_addr_to_phys_page_addr( method try_page_attributes (line 67) | fn try_page_attributes( method try_virt_addr_to_phys_addr (line 75) | fn try_virt_addr_to_phys_addr( function translationtable_implementation_sanity (line 96) | fn translationtable_implementation_sanity() { FILE: 20_timer_callbacks/kernel/src/memory/mmu/types.rs type PageAddress (line 19) | pub struct PageAddress { type MemoryRegion (line 25) | pub struct MemoryRegion { type MemAttributes (line 33) | pub enum MemAttributes { type AccessPermissions (line 41) | pub enum AccessPermissions { type AttributeFields (line 49) | pub struct AttributeFields { type MMIODescriptor (line 57) | pub struct MMIODescriptor { method new (line 280) | pub const fn new(start_addr: Address, size: usize) -> Self { method start_addr (line 291) | pub const fn start_addr(&self) -> Address { method end_addr_exclusive (line 296) | pub fn end_addr_exclusive(&self) -> Address { constant MAX (line 71) | pub const MAX: Self = PageAddress { function into_inner (line 76) | pub fn into_inner(self) -> Address { function checked_offset (line 84) | pub fn checked_offset(self, count: isize) -> Option { function from (line 105) | fn from(addr: usize) -> Self { function from (line 118) | fn from(addr: Address) -> Self { method steps_between (line 126) | fn steps_between(start: &Self, end: &Self) -> Option { method forward_checked (line 138) | fn forward_checked(start: Self, count: usize) -> Option { method backward_checked (line 142) | fn backward_checked(start: Self, count: usize) -> Option { function new (line 152) | pub fn new(start: PageAddress, end_exclusive: PageAddress)... function as_range (line 161) | fn as_range(&self) -> Range> { function start_page_addr (line 166) | pub fn start_page_addr(&self) -> PageAddress { function start_addr (line 171) | pub fn start_addr(&self) -> Address { function end_exclusive_page_addr (line 176) | pub fn end_exclusive_page_addr(&self) -> PageAddress { function end_inclusive_page_addr (line 181) | pub fn end_inclusive_page_addr(&self) -> PageAddress { function contains (line 186) | pub fn contains(&self, addr: Address) -> bool { function overlaps (line 192) | pub fn overlaps(&self, other_region: &Self) -> bool { function num_pages (line 200) | pub fn num_pages(&self) -> usize { function size (line 205) | pub fn size(&self) -> usize { function take_first_n_pages (line 227) | pub fn take_first_n_pages(&mut self, num_pages: NonZeroUsize) -> Result<... type Item (line 251) | type Item = PageAddress; type IntoIter (line 252) | type IntoIter = Range; method into_iter (line 254) | fn into_iter(self) -> Self::IntoIter { function from (line 263) | fn from(desc: MMIODescriptor) -> Self { function pageaddress_type_method_sanity (line 313) | fn pageaddress_type_method_sanity() { function memoryregion_type_method_sanity (line 348) | fn memoryregion_type_method_sanity() { FILE: 20_timer_callbacks/kernel/src/panic_wait.rs function _panic_exit (line 19) | fn _panic_exit() -> ! { function panic_prevent_reenter (line 43) | fn panic_prevent_reenter() { function panic (line 61) | fn panic(info: &PanicInfo) -> ! { FILE: 20_timer_callbacks/kernel/src/print.rs function _print (line 15) | pub fn _print(args: fmt::Arguments) { FILE: 20_timer_callbacks/kernel/src/state.rs type State (line 15) | enum State { type StateManager (line 33) | pub struct StateManager(AtomicU8); constant INIT (line 51) | const INIT: u8 = 0; constant SINGLE_CORE_MAIN (line 52) | const SINGLE_CORE_MAIN: u8 = 1; constant MULTI_CORE_MAIN (line 53) | const MULTI_CORE_MAIN: u8 = 2; method new (line 56) | pub const fn new() -> Self { method state (line 61) | fn state(&self) -> State { method is_init (line 73) | pub fn is_init(&self) -> bool { method transition_to_single_core_main (line 78) | pub fn transition_to_single_core_main(&self) { function state_manager (line 46) | pub fn state_manager() -> &'static StateManager { FILE: 20_timer_callbacks/kernel/src/symbols.rs function kernel_symbol_section_virt_start_addr (line 33) | fn kernel_symbol_section_virt_start_addr() -> Address { function num_kernel_symbols (line 37) | fn num_kernel_symbols() -> usize { function kernel_symbols_slice (line 45) | fn kernel_symbols_slice() -> &'static [Symbol] { function lookup_symbol (line 56) | pub fn lookup_symbol(addr: Address) -> Option<&'static Symbol> { function symbols_sanity (line 73) | fn symbols_sanity() { FILE: 20_timer_callbacks/kernel/src/synchronization.rs type Mutex (line 24) | pub trait Mutex { method lock (line 29) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; type ReadWriteEx (line 36) | pub trait ReadWriteEx { method write (line 41) | fn write<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; method read (line 44) | fn read<'a, R>(&'a self, f: impl FnOnce(&'a Self::Data) -> R) -> R; type IRQSafeNullLock (line 55) | pub struct IRQSafeNullLock type InitStateLock (line 65) | pub struct InitStateLock function new (line 81) | pub const fn new(data: T) -> Self { function new (line 93) | pub const fn new(data: T) -> Self { type Data (line 106) | type Data = T; function lock (line 108) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { type Data (line 119) | type Data = T; function write (line 121) | fn write<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { function read (line 136) | fn read<'a, R>(&'a self, f: impl FnOnce(&'a Self::Data) -> R) -> R { function init_state_lock_is_transparent (line 154) | fn init_state_lock_is_transparent() { FILE: 20_timer_callbacks/kernel/src/time.rs type Timeout (line 32) | struct Timeout { method is_periodic (line 66) | pub fn is_periodic(&self) -> bool { method refresh (line 70) | pub fn refresh(&mut self) { type OrderedTimeoutQueue (line 38) | struct OrderedTimeoutQueue { method new (line 78) | pub const fn new() -> Self { method push (line 82) | pub fn push(&mut self, timeout: Timeout) { method peek_next_due_time (line 90) | pub fn peek_next_due_time(&self) -> Option { method pop (line 96) | pub fn pop(&mut self) -> Option { type TimeoutCallback (line 48) | pub type TimeoutCallback = Box; type TimeManager (line 51) | pub struct TimeManager { constant COMPATIBLE (line 112) | pub const COMPATIBLE: &'static str = "ARM Architectural Timer"; method new (line 115) | pub const fn new() -> Self { method resolution (line 122) | pub fn resolution(&self) -> Duration { method uptime (line 129) | pub fn uptime(&self) -> Duration { method spin_for (line 134) | pub fn spin_for(&self, duration: Duration) { method set_timeout (line 139) | fn set_timeout(&self, timeout: Timeout) { method set_timeout_once (line 148) | pub fn set_timeout_once(&self, delay: Duration, callback: TimeoutCallb... method set_timeout_periodic (line 159) | pub fn set_timeout_periodic(&self, delay: Duration, callback: TimeoutC... type IRQNumberType (line 190) | type IRQNumberType = IRQNumber; method compatible (line 192) | fn compatible(&self) -> &'static str { method register_and_enable_irq_handler (line 196) | fn register_and_enable_irq_handler( method handle (line 212) | fn handle(&self) -> Result<(), &'static str> { function time_manager (line 106) | pub fn time_manager() -> &'static TimeManager { function init (line 171) | pub fn init() -> Result<(), &'static str> { FILE: 20_timer_callbacks/kernel/tests/00_console_sanity.rb class TxRxHandshakeTest (line 10) | class TxRxHandshakeTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, qemu_in) class TxStatisticsTest (line 22) | class TxStatisticsTest < SubtestBase method name (line 23) | def name method run (line 27) | def run(qemu_out, _qemu_in) class RxStatisticsTest (line 33) | class RxStatisticsTest < SubtestBase method name (line 34) | def name method run (line 38) | def run(qemu_out, _qemu_in) function subtest_collection (line 46) | def subtest_collection FILE: 20_timer_callbacks/kernel/tests/00_console_sanity.rs function kernel_init (line 17) | unsafe fn kernel_init() -> ! { FILE: 20_timer_callbacks/kernel/tests/01_timer_sanity.rs function kernel_init (line 18) | unsafe fn kernel_init() -> ! { function timer_is_counting (line 32) | fn timer_is_counting() { function timer_resolution_is_sufficient (line 38) | fn timer_resolution_is_sufficient() { function spin_accuracy_check_1_second (line 45) | fn spin_accuracy_check_1_second() { FILE: 20_timer_callbacks/kernel/tests/02_exception_sync_page_fault.rs function kernel_init (line 23) | unsafe fn kernel_init() -> ! { FILE: 20_timer_callbacks/kernel/tests/03_exception_restore_sanity.rb class ExceptionRestoreTest (line 10) | class ExceptionRestoreTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, _qemu_in) function subtest_collection (line 23) | def subtest_collection FILE: 20_timer_callbacks/kernel/tests/03_exception_restore_sanity.rs function nested_system_call (line 18) | fn nested_system_call() { function kernel_init (line 32) | unsafe fn kernel_init() -> ! { FILE: 20_timer_callbacks/kernel/tests/04_exception_irq_sanity.rs function kernel_init (line 17) | unsafe fn kernel_init() -> ! { function local_irq_mask_works (line 31) | fn local_irq_mask_works() { function local_irq_unmask_works (line 44) | fn local_irq_unmask_works() { function local_irq_mask_save_works (line 55) | fn local_irq_mask_save_works() { FILE: 20_timer_callbacks/kernel/tests/05_backtrace_sanity.rb class PanicBacktraceTest (line 10) | class PanicBacktraceTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, _qemu_in) class BacktraceCorrectnessTest (line 22) | class BacktraceCorrectnessTest < SubtestBase method name (line 23) | def name method run (line 27) | def run(qemu_out, _qemu_in) function subtest_collection (line 37) | def subtest_collection FILE: 20_timer_callbacks/kernel/tests/05_backtrace_sanity.rs function nested (line 17) | fn nested() { function kernel_init (line 22) | unsafe fn kernel_init() -> ! { FILE: 20_timer_callbacks/kernel/tests/06_backtrace_invalid_frame.rb class InvalidFramePointerTest (line 10) | class InvalidFramePointerTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, _qemu_in) function subtest_collection (line 24) | def subtest_collection FILE: 20_timer_callbacks/kernel/tests/06_backtrace_invalid_frame.rs function nested (line 17) | fn nested() { function kernel_init (line 24) | unsafe fn kernel_init() -> ! { FILE: 20_timer_callbacks/kernel/tests/07_backtrace_invalid_link.rb class InvalidLinkTest (line 10) | class InvalidLinkTest < SubtestBase method name (line 11) | def name method run (line 15) | def run(qemu_out, _qemu_in) function subtest_collection (line 23) | def subtest_collection FILE: 20_timer_callbacks/kernel/tests/07_backtrace_invalid_link.rs function nested_2 (line 17) | fn nested_2() -> &'static str { function nested_1 (line 24) | fn nested_1() { function kernel_init (line 29) | unsafe fn kernel_init() -> ! { FILE: 20_timer_callbacks/kernel/tests/panic_exit_success/mod.rs function _panic_exit (line 7) | fn _panic_exit() -> ! { FILE: 20_timer_callbacks/kernel/tests/panic_wait_forever/mod.rs function _panic_exit (line 7) | fn _panic_exit() -> ! { FILE: 20_timer_callbacks/kernel_symbols/build.rs function main (line 3) | fn main() { FILE: 20_timer_callbacks/kernel_symbols/src/main.rs function panic (line 14) | fn panic(_info: &core::panic::PanicInfo) -> ! { FILE: 20_timer_callbacks/libraries/debug-symbol-types/src/lib.rs type Symbol (line 14) | pub struct Symbol { method new (line 21) | pub const fn new(start: usize, size: usize, name: &'static str) -> Sym... method contains (line 32) | pub fn contains(&self, addr: usize) -> bool { method name (line 37) | pub fn name(&self) -> &'static str { method size (line 42) | pub fn size(&self) -> usize { FILE: 20_timer_callbacks/libraries/test-macros/src/lib.rs function kernel_test (line 11) | pub fn kernel_test(_attr: TokenStream, input: TokenStream) -> TokenStream { FILE: 20_timer_callbacks/libraries/test-types/src/lib.rs type UnitTest (line 10) | pub struct UnitTest { FILE: 20_timer_callbacks/tools/kernel_symbols_tool/cmds.rb function generate_symbols (line 7) | def generate_symbols(kernel_elf, output_file) function get_symbols_section_virt_addr (line 29) | def get_symbols_section_virt_addr(kernel_elf) function patch_symbol_data (line 33) | def patch_symbol_data(kernel_elf, symbols_blob_path) function patch_num_symbols (line 42) | def patch_num_symbols(kernel_elf) FILE: 20_timer_callbacks/tools/kernel_symbols_tool/kernel_elf.rb class KernelELF (line 8) | class KernelELF method initialize (line 11) | def initialize(kernel_elf_path, kernel_symbols_section, num_kernel_sym... method fetch_values (line 21) | def fetch_values(kernel_symbols_section, num_kernel_symbols) method num_kernel_symbols_virt_addr (line 33) | def num_kernel_symbols_virt_addr method segment_containing_virt_addr (line 37) | def segment_containing_virt_addr(virt_addr) method virt_addr_to_file_offset (line 43) | def virt_addr_to_file_offset(virt_addr) method symbols (line 50) | def symbols method num_symbols (line 55) | def num_symbols method kernel_symbols_section_virt_addr (line 59) | def kernel_symbols_section_virt_addr method kernel_symbols_section_size (line 63) | def kernel_symbols_section_size method kernel_symbols_section_offset_in_file (line 67) | def kernel_symbols_section_offset_in_file method num_kernel_symbols_offset_in_file (line 71) | def num_kernel_symbols_offset_in_file FILE: 20_timer_callbacks/tools/translation_table_tool/arch.rb class BitField (line 8) | class BitField method initialize (line 9) | def initialize method attr_bitfield (line 13) | def self.attr_bitfield(name, offset, num_bits) method to_i (line 27) | def to_i method size_in_byte (line 31) | def size_in_byte class CArray (line 37) | class CArray < Array method initialize (line 40) | def initialize(phys_start_addr, size, &block) method size_in_byte (line 46) | def size_in_byte type Arch (line 54) | module Arch type ARMv8 (line 58) | module ARMv8 class Stage1TableDescriptor (line 60) | class Stage1TableDescriptor < BitField type NextLevelTableAddr (line 61) | module NextLevelTableAddr type Type (line 66) | module Type type Valid (line 74) | module Valid method next_level_table_addr= (line 86) | def next_level_table_addr=(addr) class Stage1PageDescriptor (line 96) | class Stage1PageDescriptor < BitField type UXN (line 97) | module UXN type PXN (line 105) | module PXN type OutputAddr (line 113) | module OutputAddr type AF (line 118) | module AF type SH (line 126) | module SH type AP (line 133) | module AP type AttrIndx (line 141) | module AttrIndx type Type (line 146) | module Type type Valid (line 154) | module Valid method output_addr= (line 172) | def output_addr=(addr) class TranslationTable (line 182) | class TranslationTable type MAIR (line 183) | module MAIR method initialize (line 187) | def initialize method map_at (line 200) | def map_at(virt_region, phys_region, attributes) method to_binary (line 212) | def to_binary method phys_tables_base_addr_binary (line 217) | def phys_tables_base_addr_binary method phys_tables_base_addr (line 221) | def phys_tables_base_addr method do_sanity_checks (line 227) | def do_sanity_checks method new_lvl3 (line 232) | def new_lvl3(num_lvl2_tables, start_addr) method new_lvl2 (line 243) | def new_lvl2(num_lvl2_tables, start_addr) method populate_lvl2_entries (line 249) | def populate_lvl2_entries method lvl2_lvl3_index_from (line 257) | def lvl2_lvl3_index_from(addr) method page_descriptor_from (line 268) | def page_descriptor_from(virt_addr) method set_attributes (line 275) | def set_attributes(desc, attributes) method set_lvl3_entry (line 304) | def set_lvl3_entry(desc, output_addr, attributes) FILE: 20_timer_callbacks/tools/translation_table_tool/bsp.rb class RaspberryPi (line 8) | class RaspberryPi method initialize (line 13) | def initialize method phys_addr_of_kernel_tables (line 25) | def phys_addr_of_kernel_tables method kernel_tables_offset_in_file (line 29) | def kernel_tables_offset_in_file method phys_kernel_tables_base_addr_offset_in_file (line 33) | def phys_kernel_tables_base_addr_offset_in_file method phys_addr_space_end_page (line 37) | def phys_addr_space_end_page FILE: 20_timer_callbacks/tools/translation_table_tool/generic.rb type Granule64KiB (line 7) | module Granule64KiB type Granule512MiB (line 12) | module Granule512MiB class Integer (line 19) | class Integer method power_of_two? (line 20) | def power_of_two? method aligned? (line 24) | def aligned?(alignment) method align_up (line 30) | def align_up(alignment) method to_hex_underscore (line 36) | def to_hex_underscore(with_leading_zeros: false) class MemoryRegion (line 45) | class MemoryRegion < Array method initialize (line 46) | def initialize(start_addr, size, granule_size) class AttributeFields (line 59) | class AttributeFields method initialize (line 62) | def initialize(mem_attributes, acc_perms, execute_never) method to_s (line 68) | def to_s class MappingDescriptor (line 92) | class MappingDescriptor method update_max_section_name_length (line 98) | def update_max_section_name_length(length) method initialize (line 105) | def initialize(name, virt_region, phys_region, attributes) method size_human_readable (line 112) | def size_human_readable(size) method to_s (line 122) | def to_s method print_divider (line 131) | def self.print_divider method print_header (line 137) | def self.print_header function kernel_map_binary (line 154) | def kernel_map_binary function kernel_patch_tables (line 172) | def kernel_patch_tables(kernel_elf_path) function kernel_patch_base_addr (line 180) | def kernel_patch_base_addr(kernel_elf_path) FILE: 20_timer_callbacks/tools/translation_table_tool/kernel_elf.rb class KernelELF (line 8) | class KernelELF method initialize (line 11) | def initialize(kernel_elf_path) method machine (line 16) | def machine method symbol_value (line 20) | def symbol_value(symbol_name) method segment_containing_virt_addr (line 24) | def segment_containing_virt_addr(virt_addr) method virt_to_phys (line 30) | def virt_to_phys(virt_addr) method virt_addr_to_file_offset (line 37) | def virt_addr_to_file_offset(virt_addr) method sections_in_segment (line 42) | def sections_in_segment(segment) method select_load_segments (line 56) | def select_load_segments method segment_get_acc_perms (line 62) | def segment_get_acc_perms(segment) method update_max_section_name_length (line 72) | def update_max_section_name_length(descriptors) method generate_mapping_descriptors (line 76) | def generate_mapping_descriptors FILE: X1_JTAG_boot/build.rs function main (line 3) | fn main() { FILE: X1_JTAG_boot/src/_arch/aarch64/cpu.rs function wait_forever (line 24) | pub fn wait_forever() -> ! { FILE: X1_JTAG_boot/src/_arch/aarch64/cpu/boot.rs function _start_rust (line 30) | pub unsafe fn _start_rust() -> ! { FILE: X1_JTAG_boot/src/_arch/aarch64/time.rs constant NANOSEC_PER_SEC (line 28) | const NANOSEC_PER_SEC: NonZeroU64 = NonZeroU64::new(1_000_000_000).unwra... type GenericTimerCounterValue (line 31) | struct GenericTimerCounterValue(u64); constant MAX (line 56) | pub const MAX: Self = GenericTimerCounterValue(u64::MAX); type Error (line 97) | type Error = &'static str; method try_from (line 99) | fn try_from(duration: Duration) -> Result { function arch_timer_counter_frequency (line 46) | fn arch_timer_counter_frequency() -> NonZeroU32 { type Output (line 60) | type Output = Self; method add (line 62) | fn add(self, other: Self) -> Self { method from (line 68) | fn from(counter_value: GenericTimerCounterValue) -> Self { function max_duration (line 92) | fn max_duration() -> Duration { function read_cntpct (line 122) | fn read_cntpct() -> GenericTimerCounterValue { function resolution (line 135) | pub fn resolution() -> Duration { function uptime (line 142) | pub fn uptime() -> Duration { function spin_for (line 148) | pub fn spin_for(duration: Duration) { FILE: X1_JTAG_boot/src/bsp/device_driver/bcm/bcm2xxx_gpio.rs type Registers (line 109) | type Registers = MMIODerefWrapper; type GPIOInner (line 111) | struct GPIOInner { method new (line 134) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method disable_pud_14_15_bcm2837 (line 142) | fn disable_pud_14_15_bcm2837(&mut self) { method disable_pud_14_15_bcm2711 (line 163) | fn disable_pud_14_15_bcm2711(&mut self) { method map_pl011_uart (line 174) | pub fn map_pl011_uart(&mut self) { type GPIO (line 120) | pub struct GPIO { constant COMPATIBLE (line 194) | pub const COMPATIBLE: &'static str = "BCM GPIO"; method new (line 201) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method map_pl011_uart (line 208) | pub fn map_pl011_uart(&self) { method compatible (line 219) | fn compatible(&self) -> &'static str { FILE: X1_JTAG_boot/src/bsp/device_driver/bcm/bcm2xxx_pl011_uart.rs type Registers (line 162) | type Registers = MMIODerefWrapper; type BlockingMode (line 165) | enum BlockingMode { type PL011UartInner (line 170) | struct PL011UartInner { method new (line 195) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method init (line 220) | pub fn init(&mut self) { method write_char (line 257) | fn write_char(&mut self, c: char) { method flush (line 270) | fn flush(&self) { method read_char_converting (line 278) | fn read_char_converting(&mut self, blocking_mode: BlockingMode) -> Opt... method write_str (line 317) | fn write_str(&mut self, s: &str) -> fmt::Result { type PL011Uart (line 181) | pub struct PL011Uart { constant COMPATIBLE (line 331) | pub const COMPATIBLE: &'static str = "BCM PL011 UART"; method new (line 338) | pub const unsafe fn new(mmio_start_addr: usize) -> Self { method compatible (line 351) | fn compatible(&self) -> &'static str { method init (line 355) | unsafe fn init(&self) -> Result<(), &'static str> { method write_char (line 365) | fn write_char(&self, c: char) { method write_fmt (line 369) | fn write_fmt(&self, args: core::fmt::Arguments) -> fmt::Result { method flush (line 375) | fn flush(&self) { method read_char (line 382) | fn read_char(&self) -> char { method clear_rx (line 387) | fn clear_rx(&self) { method chars_written (line 398) | fn chars_written(&self) -> usize { method chars_read (line 402) | fn chars_read(&self) -> usize { FILE: X1_JTAG_boot/src/bsp/device_driver/common.rs type MMIODerefWrapper (line 13) | pub struct MMIODerefWrapper { function new (line 24) | pub const unsafe fn new(start_addr: usize) -> Self { type Target (line 33) | type Target = T; function deref (line 35) | fn deref(&self) -> &Self::Target { FILE: X1_JTAG_boot/src/bsp/raspberrypi/driver.rs function post_init_uart (line 24) | fn post_init_uart() -> Result<(), &'static str> { function post_init_gpio (line 31) | fn post_init_gpio() -> Result<(), &'static str> { function driver_uart (line 36) | fn driver_uart() -> Result<(), &'static str> { function driver_gpio (line 44) | fn driver_gpio() -> Result<(), &'static str> { function init (line 60) | pub unsafe fn init() -> Result<(), &'static str> { FILE: X1_JTAG_boot/src/bsp/raspberrypi/memory.rs constant GPIO_OFFSET (line 15) | pub const GPIO_OFFSET: usize = 0x0020_0000; constant UART_OFFSET (line 16) | pub const UART_OFFSET: usize = 0x0020_1000; constant START (line 23) | pub const START: usize = 0x3F00_0000; constant GPIO_START (line 24) | pub const GPIO_START: usize = START + GPIO_OFFSET; constant PL011_UART_START (line 25) | pub const PL011_UART_START: usize = START + UART_OFFSET; constant START (line 33) | pub const START: usize = 0xFE00_0000; constant GPIO_START (line 34) | pub const GPIO_START: usize = START + GPIO_OFFSET; constant PL011_UART_START (line 35) | pub const PL011_UART_START: usize = START + UART_OFFSET; FILE: X1_JTAG_boot/src/console.rs type Write (line 20) | pub trait Write { method write_char (line 22) | fn write_char(&self, c: char); method write_fmt (line 25) | fn write_fmt(&self, args: fmt::Arguments) -> fmt::Result; method flush (line 28) | fn flush(&self); type Read (line 32) | pub trait Read { method read_char (line 34) | fn read_char(&self) -> char { method clear_rx (line 39) | fn clear_rx(&self); type Statistics (line 43) | pub trait Statistics { method chars_written (line 45) | fn chars_written(&self) -> usize { method chars_read (line 50) | fn chars_read(&self) -> usize { type All (line 56) | pub trait All: Write + Read + Statistics {} function register_console (line 72) | pub fn register_console(new_console: &'static (dyn interface::All + Sync... function console (line 79) | pub fn console() -> &'static dyn interface::All { FILE: X1_JTAG_boot/src/console/null_console.rs type NullConsole (line 14) | pub struct NullConsole; method write_char (line 27) | fn write_char(&self, _c: char) {} method write_fmt (line 29) | fn write_fmt(&self, _args: fmt::Arguments) -> fmt::Result { method flush (line 33) | fn flush(&self) {} method clear_rx (line 37) | fn clear_rx(&self) {} FILE: X1_JTAG_boot/src/driver.rs constant NUM_DRIVERS (line 13) | const NUM_DRIVERS: usize = 5; type DriverManagerInner (line 15) | struct DriverManagerInner { method new (line 69) | pub const fn new() -> Self { type DeviceDriver (line 27) | pub trait DeviceDriver { method compatible (line 29) | fn compatible(&self) -> &'static str; method init (line 36) | unsafe fn init(&self) -> Result<(), &'static str> { type DeviceDriverPostInitCallback (line 43) | pub type DeviceDriverPostInitCallback = unsafe fn() -> Result<(), &'stat... type DeviceDriverDescriptor (line 47) | pub struct DeviceDriverDescriptor { method new (line 83) | pub fn new( type DriverManager (line 53) | pub struct DriverManager { method new (line 101) | pub const fn new() -> Self { method register_driver (line 108) | pub fn register_driver(&self, descriptor: DeviceDriverDescriptor) { method for_each_descriptor (line 116) | fn for_each_descriptor<'a>(&'a self, f: impl FnMut(&'a DeviceDriverDes... method init_drivers (line 131) | pub unsafe fn init_drivers(&self) { function driver_manager (line 95) | pub fn driver_manager() -> &'static DriverManager { FILE: X1_JTAG_boot/src/main.rs function kernel_init (line 135) | unsafe fn kernel_init() -> ! { function kernel_main (line 150) | fn kernel_main() -> ! { FILE: X1_JTAG_boot/src/panic_wait.rs function panic_prevent_reenter (line 26) | fn panic_prevent_reenter() { function panic (line 44) | fn panic(info: &PanicInfo) -> ! { FILE: X1_JTAG_boot/src/print.rs function _print (line 15) | pub fn _print(args: fmt::Arguments) { FILE: X1_JTAG_boot/src/synchronization.rs type Mutex (line 24) | pub trait Mutex { method lock (line 29) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R; type NullLock (line 40) | pub struct NullLock function new (line 56) | pub const fn new(data: T) -> Self { type Data (line 68) | type Data = T; function lock (line 70) | fn lock<'a, R>(&'a self, f: impl FnOnce(&'a mut Self::Data) -> R) -> R { FILE: X1_JTAG_boot/src/time.rs type TimeManager (line 18) | pub struct TimeManager; method new (line 37) | pub const fn new() -> Self { method uptime (line 44) | pub fn uptime(&self) -> Duration { method spin_for (line 50) | pub fn spin_for(&self, duration: Duration) { function time_manager (line 31) | pub fn time_manager() -> &'static TimeManager { FILE: common/serial/minipush.rb class ProtocolError (line 13) | class ProtocolError < StandardError; end class MiniPush (line 16) | class MiniPush < MiniTerm method initialize (line 17) | def initialize(serial_name, payload_path) method wait_for_payload_request (line 29) | def wait_for_payload_request method load_payload (line 57) | def load_payload method send_size (line 62) | def send_size method send_payload (line 67) | def send_payload method handle_reconnect (line 84) | def handle_reconnect(_error) method run (line 97) | def run FILE: common/serial/minipush/progressbar_patch.rb class ProgressBar (line 9) | class ProgressBar class Progress (line 11) | class Progress method progress_kibi (line 12) | def progress_kibi type Format (line 17) | module Format class Molecule (line 19) | class Molecule method initialize (line 23) | def initialize(letter) FILE: common/serial/miniterm.rb class ConnectionError (line 17) | class ConnectionError < StandardError; end class MiniTerm (line 20) | class MiniTerm method initialize (line 21) | def initialize(serial_name) method serial_connected? (line 30) | def serial_connected? method wait_for_serial (line 34) | def wait_for_serial method open_serial (line 44) | def open_serial method terminal (line 58) | def terminal method connection_reset (line 91) | def connection_reset method handle_reconnect (line 98) | def handle_reconnect(_error) method handle_unexpected (line 105) | def handle_unexpected(error) method run (line 114) | def run FILE: common/tests/boot_test.rb class ExpectedBootPrintTest (line 10) | class ExpectedBootPrintTest < SubtestBase method initialize (line 11) | def initialize(expected_print) method name (line 16) | def name method run (line 20) | def run(qemu_out, _qemu_in) class BootTest (line 26) | class BootTest < ConsoleIOTest method initialize (line 27) | def initialize(qemu_cmd, expected_print) FILE: common/tests/console_io_test.rb class ExpectTimeoutError (line 13) | class ExpectTimeoutError < StandardError method initialize (line 14) | def initialize(string) class SubtestBase (line 20) | class SubtestBase method expect_or_raise (line 23) | def expect_or_raise(io, string, timeout = TIMEOUT_SECONDS) class IO (line 29) | class IO method unused_buf (line 30) | def unused_buf class PTYLoggerWrapper (line 36) | class PTYLoggerWrapper method initialize (line 37) | def initialize(pty, linebreak = "\n") method expect (line 43) | def expect(pattern, timeout) method log (line 54) | def log class ConsoleIOTest (line 60) | class ConsoleIOTest < Test method initialize (line 63) | def initialize(qemu_cmd, test_name, console_subtests) method format_test_name (line 77) | def format_test_name(number, name) method run_subtest (line 82) | def run_subtest(subtest, test_id, qemu_out, qemu_in) method setup (line 89) | def setup method finish (line 95) | def finish method run_concrete_test (line 102) | def run_concrete_test FILE: common/tests/exit_code_test.rb class ExitCodeTest (line 12) | class ExitCodeTest < Test method initialize (line 15) | def initialize(qemu_cmd, test_name) method setup (line 29) | def setup method finish (line 35) | def finish method run_concrete_test (line 41) | def run_concrete_test FILE: common/tests/test.rb class Test (line 8) | class Test method initialize (line 11) | def initialize method print_border (line 21) | def print_border(content) method print_header (line 27) | def print_header method print_footer_error (line 32) | def print_footer_error(error) method print_footer_success (line 39) | def print_footer_success method print_output (line 47) | def print_output method setup (line 52) | def setup; end method finish (line 55) | def finish; end method run_concrete_test (line 58) | def run_concrete_test method run (line 64) | def run FILE: utils/devtool.rb class TutorialCrate (line 15) | class TutorialCrate method initialize (line 18) | def initialize(folder) method tutorial? (line 22) | def tutorial? method clean (line 26) | def clean method update (line 33) | def update method clippy (line 40) | def clippy(bsp) method fmt_cargo_rust (line 47) | def fmt_cargo_rust(args) method make (line 51) | def make(bsp) method test (line 58) | def test(bsp) method test_boot (line 67) | def test_boot(bsp) method test_unit (line 76) | def test_unit(bsp) method test_integration (line 85) | def test_integration(bsp) method boot_test? (line 96) | def boot_test? method unit_integration_tests? (line 100) | def unit_integration_tests? class DevTool (line 106) | class DevTool method initialize (line 107) | def initialize method clean (line 115) | def clean method update (line 119) | def update method clippy (line 123) | def clippy(bsp = nil) method diff (line 129) | def diff method fmt (line 139) | def fmt method fmt_check (line 145) | def fmt_check method make (line 151) | def make(bsp = nil) method make_xtra (line 157) | def make_xtra method test (line 166) | def test(bsp = nil) method test_boot (line 172) | def test_boot(bsp = nil) method test_unit (line 178) | def test_unit(bsp = nil) method test_integration (line 184) | def test_integration(bsp = nil) method copyright (line 190) | def copyright method misspell (line 194) | def misspell method rubocop (line 204) | def rubocop method ready_for_publish_no_rust (line 209) | def ready_for_publish_no_rust method ready_for_publish (line 219) | def ready_for_publish method bsp_from_env (line 235) | def bsp_from_env method fmt_cargo_rust (line 243) | def fmt_cargo_rust(check: false) method fmt_prettier (line 256) | def fmt_prettier(check: false) method user_supplied_crate_list (line 273) | def user_supplied_crate_list method tutorials (line 290) | def tutorials method tracked_files (line 294) | def tracked_files method diff_pair (line 300) | def diff_pair(original, update, padding) method copyright_source_files (line 316) | def copyright_source_files FILE: utils/devtool/copyright.rb function copyright_check_files (line 11) | def copyright_check_files(source_files) function copyright_years (line 25) | def copyright_years(file)