Fix start_thread

This commit is contained in:
Quentin Legot 2023-03-08 21:43:03 +01:00 committed by François Autin
parent 6820086579
commit 0c3af96b78
No known key found for this signature in database
GPG Key ID: 343F5D382E1DD77C
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
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);
let ptr = 0; // todo addrspace
thread.init_thread_context(func_pc, ptr, argument);
@ -36,8 +36,8 @@ impl<'a> ThreadManager<'a> {
thread.init_simulator_context(base_stack_addr);
thread.process.as_mut().unwrap().num_thread += 1;
let thread_m = Rc::new(thread);
// self.get_g_alive().push(Rc::clone(thread));
// self.g_scheduler().ready_to_run(Rc::clone(&thread));
self.get_g_alive().push(Rc::clone(&thread_m));
self.g_scheduler().ready_to_run(Rc::clone(&thread_m));
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;
self.level = newStatus;
if newStatus == InterruptStatus::InterruptOn && old == InterruptStatus::InterruptOff {
self.level = new_status;
if new_status == InterruptStatus::InterruptOn && old == InterruptStatus::InterruptOff {
self.one_tick(1);
}
old