// 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, }