struct-context
struct context 是内核线程切换时的“快照”。
存储内容 (Callee-Saved Only)
它只保存 被调用者保存寄存器 (Callee-Saved Registers):
ra(Return Address): 最关键! 决定了swtch返回后去哪儿执行。sp(Stack Pointer): 次关键! 决定了当前的栈在哪里。s0-s11: 通用寄存器。
对比 Trapframe
- Trapframe: 保存用户态的所有寄存器(User → Kernel)。
- Context: 仅保存内核态的关键寄存器(Kernel Thread → Scheduler)。
- 为什么不存
a0,t0等? 因为swtch是一个 C 函数调用。根据 RISC-V 约定,调用者 (sched) 会自动处理 Caller-Saved 寄存器,swtch不需要管。
- 为什么不存