From 2f9711a3f1bdc74ef56be2d7998b594c90ccae3d Mon Sep 17 00:00:00 2001 From: Yifan Wu Date: Wed, 29 Mar 2023 20:24:30 +0800 Subject: [PATCH] fix ch3 --- os/src/boards/qemu.rs | 3 +++ os/src/main.rs | 4 ++++ os/src/sbi.rs | 8 +++----- os/src/task/mod.rs | 4 ++-- 4 files changed, 12 insertions(+), 7 deletions(-) create mode 100644 os/src/boards/qemu.rs diff --git a/os/src/boards/qemu.rs b/os/src/boards/qemu.rs new file mode 100644 index 0000000..c2f609a --- /dev/null +++ b/os/src/boards/qemu.rs @@ -0,0 +1,3 @@ +//! Constants used in rCore for qemu + +pub const CLOCK_FREQ: usize = 12500000; diff --git a/os/src/main.rs b/os/src/main.rs index de26477..ac8f9bb 100644 --- a/os/src/main.rs +++ b/os/src/main.rs @@ -22,6 +22,10 @@ #![feature(panic_info_message)] use core::arch::global_asm; + +#[path = "boards/qemu.rs"] +mod board; + #[macro_use] mod console; mod config; diff --git a/os/src/sbi.rs b/os/src/sbi.rs index 62da527..5a2eed2 100644 --- a/os/src/sbi.rs +++ b/os/src/sbi.rs @@ -6,11 +6,9 @@ pub fn console_putchar(c: usize) { sbi_rt::legacy::console_putchar(c); } -/// use sbi call to getchar from console (qemu uart handler) -#[allow(unused)] -pub fn console_getchar() -> usize { - #[allow(deprecated)] - sbi_rt::legacy::console_getchar() +/// use sbi call to set timer +pub fn set_timer(timer: usize) { + sbi_rt::set_timer(timer as _); } /// use sbi call to shutdown the kernel diff --git a/os/src/task/mod.rs b/os/src/task/mod.rs index 860feca..8696db4 100644 --- a/os/src/task/mod.rs +++ b/os/src/task/mod.rs @@ -17,6 +17,7 @@ mod task; use crate::config::MAX_APP_NUM; use crate::loader::{get_num_app, init_app_cx}; +use crate::sbi::shutdown; use crate::sync::UPSafeCell; use lazy_static::*; use switch::__switch; @@ -134,8 +135,7 @@ impl TaskManager { // go back to user mode } else { println!("All applications completed!"); - use crate::board::QEMUExit; - crate::board::QEMU_EXIT_HANDLE.exit_success(); + shutdown(false); } } }