|
|
|
@ -129,18 +129,18 @@ lazy_static!{
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
// 初始化用户的应用对应的 TCB
|
|
|
|
|
for i in 0..num_app {
|
|
|
|
|
for app_idx in 0..num_app {
|
|
|
|
|
// 初始化用户应用的内核栈
|
|
|
|
|
let kernel_app_stack_ptr = init_app_cx(i);
|
|
|
|
|
let kernel_app_stack_ptr = init_app_cx(app_idx);
|
|
|
|
|
|
|
|
|
|
// 从 初始内核栈的栈顶(保存 trap_context的位置) 创建 任务context
|
|
|
|
|
let task_context = TaskContext::from(kernel_app_stack_ptr);
|
|
|
|
|
|
|
|
|
|
// 把内核栈的信息保存到 TCB中
|
|
|
|
|
tasks[i].task_cx = task_context;
|
|
|
|
|
tasks[app_idx].task_cx = task_context;
|
|
|
|
|
|
|
|
|
|
// 初始为 准备好的状态
|
|
|
|
|
tasks[i].task_status = TaskStatus::Ready
|
|
|
|
|
tasks[app_idx].task_status = TaskStatus::Ready
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
TaskManager { // 直接返回即可, 所有字段都是sync的, 那这个结构体也是sync
|
|
|
|
|