rust-raspberrypi-OS-tutorials/19_kernel_heap/kernel/tests/00_console_sanity.rs
2022-05-17 23:24:45 +02:00

40 lines
1002 B
Rust

// SPDX-License-Identifier: MIT OR Apache-2.0
//
// Copyright (c) 2019-2022 Andre Richter <andre.o.richter@gmail.com>
//! Console sanity tests - RX, TX and statistics.
#![feature(format_args_nl)]
#![no_main]
#![no_std]
/// Console tests should time out on the I/O harness in case of panic.
mod panic_wait_forever;
use libkernel::{bsp, console, cpu, driver, exception, memory, print};
#[no_mangle]
unsafe fn kernel_init() -> ! {
use console::console;
use driver::interface::DriverManager;
exception::handling_init();
memory::init();
bsp::driver::driver_manager().qemu_bring_up_console();
// Handshake
assert_eq!(console().read_char(), 'A');
assert_eq!(console().read_char(), 'B');
assert_eq!(console().read_char(), 'C');
print!("OK1234");
// 6
print!("{}", console().chars_written());
// 3
print!("{}", console().chars_read());
// The QEMU process running this test will be closed by the I/O test harness.
cpu::wait_forever();
}