diff --git a/os/src/task/mod.rs b/os/src/task/mod.rs index 0b856fd8..31bc435a 100644 --- a/os/src/task/mod.rs +++ b/os/src/task/mod.rs @@ -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) { diff --git a/os/src/task/processor.rs b/os/src/task/processor.rs index 677d8792..a08d5d67 100644 --- a/os/src/task/processor.rs +++ b/os/src/task/processor.rs @@ -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, ); } } diff --git a/os/src/task/switch.S b/os/src/task/switch.S index df668f35..262511fe 100644 --- a/os/src/task/switch.S +++ b/os/src/task/switch.S @@ -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) diff --git a/os/src/task/switch.rs b/os/src/task/switch.rs index c5fe5f47..867fcb1e 100644 --- a/os/src/task/switch.rs +++ b/os/src/task/switch.rs @@ -1,5 +1,8 @@ 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 + ); }