You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
812 B
Rust
33 lines
812 B
Rust
|
|
|
|
|
|
// TCB的字段, 用来保存任务的状态
|
|
#[derive(Copy, Clone, PartialEq)]
|
|
pub enum TaskStatus {
|
|
UnInit, // 未初始化
|
|
Ready, // 准备运行
|
|
Running, // 正在运行
|
|
Exited, // 已退出
|
|
}
|
|
|
|
|
|
// TCB的字段 用来保存cpu 在内核切换人物的时候 寄存器还有栈顶的信息, 这个结构体将来会传到 switch.S 中的汇编中
|
|
pub struct TaskContext{
|
|
ra: usize, // 保存了进行切换之后需要 跳转继续执行的地址
|
|
sp: usize, // 当前任务的内核栈的栈顶
|
|
s: [usize; 12] // 当前任务内核 有必要 保存的寄存器
|
|
}
|
|
|
|
|
|
// 一个任务的主体, 用来保存或者控制一个任务所有需要的东西
|
|
#[derive(Copy, Clone)]
|
|
pub struct TaskControlBlock {
|
|
pub task_status: TaskStatus,
|
|
pub task_cx: TaskContext,
|
|
}
|
|
|
|
|
|
|
|
|
|
|