update comments

pull/64/head
Yu Chen 3 years ago
parent b922eb4e12
commit 3d1d55670d

@ -1,3 +1,5 @@
//! batch subsystem
use crate::sync::UPSafeCell;
use crate::trap::TrapContext;
use core::arch::asm;
@ -111,14 +113,17 @@ lazy_static! {
};
}
/// init batch subsystem
pub fn init() {
print_app_info();
}
/// print apps info
pub fn print_app_info() {
APP_MANAGER.exclusive_access().print_app_info();
}
/// run next app
pub fn run_next_app() -> ! {
let mut app_manager = APP_MANAGER.exclusive_access();
let current_app = app_manager.get_current_app();

@ -24,17 +24,16 @@ use core::arch::global_asm;
#[macro_use]
mod console;
mod batch;
pub mod batch;
mod lang_items;
mod sbi;
mod sync;
mod syscall;
mod trap;
pub mod syscall;
pub mod trap;
global_asm!(include_str!("entry.asm"));
global_asm!(include_str!("link_app.S"));
/// clear BSS segment
fn clear_bss() {
extern "C" {

@ -1,25 +1,30 @@
use riscv::register::sstatus::{self, Sstatus, SPP};
/// Trap Context
#[repr(C)]
pub struct TrapContext {
/// general regs[0..31]
pub x: [usize; 32],
/// CSR sstatus
pub sstatus: Sstatus,
/// CSR sepc
pub sepc: usize,
}
impl TrapContext {
/// set stack pointer to x_2 reg (sp)
pub fn set_sp(&mut self, sp: usize) {
self.x[2] = sp;
}
/// init app context
pub fn app_init_context(entry: usize, sp: usize) -> Self {
let mut sstatus = sstatus::read();
sstatus.set_spp(SPP::User);
let mut sstatus = sstatus::read(); // CSR sstatus
sstatus.set_spp(SPP::User); //previous privilege mode: user mode
let mut cx = Self {
x: [0; 32],
sstatus,
sepc: entry,
sepc: entry, // entry point of app
};
cx.set_sp(sp);
cx
cx.set_sp(sp); // app's user stack pointer
cx // return initial Trap Context of app
}
}

Loading…
Cancel
Save