os/arch/riscv/lib/
sbi.rs

1/// use sbi call to putchar to console (qemu uart handler)
2pub fn console_putchar(c: usize) {
3    #[allow(deprecated)]
4    sbi_rt::legacy::console_putchar(c);
5}
6
7/// 使用 sbi 调用从控制台获取字符(qemu uart handler)
8/// 返回值:字符的 ASCII 码
9pub fn console_getchar() -> usize {
10    #[allow(deprecated)]
11    sbi_rt::legacy::console_getchar()
12}
13
14/// use sbi call to set timer
15pub fn set_timer(timer: usize) {
16    sbi_rt::set_timer(timer as _);
17}
18
19/// use sbi call to shutdown the system
20pub fn shutdown(failure: bool) -> ! {
21    use sbi_rt::{NoReason, Shutdown, SystemFailure, system_reset};
22    if !failure {
23        system_reset(Shutdown, NoReason);
24    } else {
25        system_reset(Shutdown, SystemFailure);
26    }
27    unreachable!()
28}