增加TCB以及一个用来表示任务状态的结构体
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…
Reference in New Issue