Fix start_thread

This commit is contained in:
Quentin Legot 2023-03-08 21:43:03 +01:00
parent 4ca85b54d4
commit fe4bbb2fc2
2 changed files with 6 additions and 6 deletions

View File

@ -28,7 +28,7 @@ impl<'a> ThreadManager<'a> {
} }
/// Start a thread, attaching it to a process /// Start a thread, attaching it to a process
pub fn start_thread(&mut self, thread: &mut Thread, owner: Process, func_pc: i64, argument: i64) -> Result<(), ErrorCode> { pub fn start_thread(&mut self, mut thread: Thread, owner: Process, func_pc: i64, argument: i64) -> Result<(), ErrorCode> {
thread.process = Option::Some(owner); thread.process = Option::Some(owner);
let ptr = 0; // todo addrspace let ptr = 0; // todo addrspace
thread.init_thread_context(func_pc, ptr, argument); thread.init_thread_context(func_pc, ptr, argument);
@ -36,8 +36,8 @@ impl<'a> ThreadManager<'a> {
thread.init_simulator_context(base_stack_addr); thread.init_simulator_context(base_stack_addr);
thread.process.as_mut().unwrap().num_thread += 1; thread.process.as_mut().unwrap().num_thread += 1;
let thread_m = Rc::new(thread); let thread_m = Rc::new(thread);
// self.get_g_alive().push(Rc::clone(thread)); self.get_g_alive().push(Rc::clone(&thread_m));
// self.g_scheduler().ready_to_run(Rc::clone(&thread)); self.g_scheduler().ready_to_run(Rc::clone(&thread_m));
Result::Ok(()) Result::Ok(())
} }

View File

@ -12,10 +12,10 @@ impl Interrupt {
} }
} }
pub fn set_status(&mut self, newStatus: InterruptStatus) -> InterruptStatus { pub fn set_status(&mut self, new_status: InterruptStatus) -> InterruptStatus {
let old = self.level; let old = self.level;
self.level = newStatus; self.level = new_status;
if newStatus == InterruptStatus::InterruptOn && old == InterruptStatus::InterruptOff { if new_status == InterruptStatus::InterruptOn && old == InterruptStatus::InterruptOff {
self.one_tick(1); self.one_tick(1);
} }
old old