add some comment
This commit is contained in:
parent
aae2fca5c9
commit
927a0302f3
|
@ -95,6 +95,7 @@ pub unsafe extern "C" fn shared_peek_task(
|
||||||
shared_scheduler: NonNull<()>,
|
shared_scheduler: NonNull<()>,
|
||||||
should_switch: extern "C" fn(AddressSpaceId) -> bool
|
should_switch: extern "C" fn(AddressSpaceId) -> bool
|
||||||
) -> TaskResult {
|
) -> TaskResult {
|
||||||
|
// 得到共享调度器的引用
|
||||||
let mut s: NonNull<SharedScheduler> = shared_scheduler.cast();
|
let mut s: NonNull<SharedScheduler> = shared_scheduler.cast();
|
||||||
let mut scheduler = s.as_mut().lock();
|
let mut scheduler = s.as_mut().lock();
|
||||||
let mut ret_task;
|
let mut ret_task;
|
||||||
|
@ -117,15 +118,17 @@ pub unsafe extern "C" fn shared_peek_task(
|
||||||
// 进行下一个循环
|
// 进行下一个循环
|
||||||
} else {
|
} else {
|
||||||
if should_switch(task.address_space_id) {
|
if should_switch(task.address_space_id) {
|
||||||
// 需要跳转到其他地址空间
|
// 如果需要跳转到其他地址空间,则不弹出任务,返回需要跳转到的地址空间编号
|
||||||
return TaskResult::ShouldYield(task.address_space_id.into_inner());
|
return TaskResult::ShouldYield(task.address_space_id.into_inner());
|
||||||
} else {
|
} else {
|
||||||
|
// 直接把任务交给调用者
|
||||||
let task_repr = task.task_repr;
|
let task_repr = task.task_repr;
|
||||||
drop(scheduler);
|
drop(scheduler); // 释放锁
|
||||||
return TaskResult::Task(task_repr);
|
return TaskResult::Task(task_repr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
// 没有任务了,返回已完成
|
||||||
None => return TaskResult::Finished
|
None => return TaskResult::Finished
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue