提交 5730bac8 编写于 作者: Y Yifan Wu

Move some variable name to task_cx to task_cx_ptr2(ch5 ver).

上级 87a3500b
......@@ -29,7 +29,7 @@ pub fn suspend_current_and_run_next() {
let task = take_current_task().unwrap();
// ---- temporarily hold current PCB lock
let task_cx_ptr = task.acquire_inner_lock().get_task_cx_ptr2();
let task_cx_ptr2 = task.acquire_inner_lock().get_task_cx_ptr2();
// ---- release current PCB lock
// ++++ temporarily hold current PCB lock
......@@ -40,7 +40,7 @@ pub fn suspend_current_and_run_next() {
// push back to ready queue.
add_task(task);
// jump to scheduling cycle
schedule(task_cx_ptr);
schedule(task_cx_ptr2);
}
pub fn exit_current_and_run_next(exit_code: i32) {
......
......@@ -33,16 +33,16 @@ impl Processor {
pub fn run(&self) {
loop {
if let Some(task) = fetch_task() {
let idle_task_cx_ptr = self.get_idle_task_cx_ptr2();
let idle_task_cx_ptr2 = self.get_idle_task_cx_ptr2();
// acquire
let next_task_cx_ptr = task.acquire_inner_lock().get_task_cx_ptr2();
let next_task_cx_ptr2 = task.acquire_inner_lock().get_task_cx_ptr2();
task.acquire_inner_lock().task_status = TaskStatus::Running;
// release
self.inner.lock().current = Some(task);
unsafe {
__switch(
idle_task_cx_ptr,
next_task_cx_ptr,
idle_task_cx_ptr2,
next_task_cx_ptr2,
);
}
}
......
......@@ -8,7 +8,10 @@
.section .text
.globl __switch
__switch:
# __switch(current_task_cx: &*const TaskContext, next_task_cx: &*const TaskContext)
# __switch(
# current_task_cx_ptr2: &*const TaskContext,
# next_task_cx_ptr2: &*const TaskContext
# )
# push TaskContext to current sp and save its address to where a0 points to
addi sp, sp, -13*8
sd sp, 0(a0)
......
global_asm!(include_str!("switch.S"));
extern "C" {
pub fn __switch(current_task_cx: *const usize, next_task_cx: *const usize);
pub fn __switch(
current_task_cx_ptr2: *const usize,
next_task_cx_ptr2: *const usize
);
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册