增加TCB以及一个用来表示任务状态的结构体

ch3
zhangxinyu 2 years ago
parent b0338d7648
commit a1a34d0fac

@ -1,12 +1,32 @@
// TCB的字段, 用来保存任务的状态
#[derive(Copy, Clone, PartialEq)]
pub enum TaskStatus {
UnInit, // 未初始化
Ready, // 准备运行
Running, // 正在运行
Exited, // 已退出
}
// TCB的字段 用来保存cpu 在内核切换人物的时候 寄存器还有栈顶的信息, 这个结构体将来会传到 switch.S 中的汇编中
pub struct TaskContext{ pub struct TaskContext{
ra: usize, // 保存了进行切换之后需要 跳转继续执行的地址 ra: usize, // 保存了进行切换之后需要 跳转继续执行的地址
sp: usize, // 当前任务的内核栈的栈顶 sp: usize, // 当前任务的内核栈的栈顶
s: [usize; 12] // 当前任务内核状态 s: [usize; 12] // 当前任务内核 有必要 保存的寄存器
}
// 一个任务的主体, 用来保存或者控制一个任务所有需要的东西
#[derive(Copy, Clone)]
pub struct TaskControlBlock {
pub task_status: TaskStatus,
pub task_cx: TaskContext,
} }

Loading…
Cancel
Save