forked from Rativel/BurritOS
remove machine from system
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
use crate::kernel::thread_manager;
|
||||
use crate::utility::list::List;
|
||||
use crate::kernel::thread::Thread;
|
||||
use crate::simulator::interrupt::InterruptStatus::InterruptOff;
|
||||
@@ -227,14 +226,14 @@ impl Condition {
|
||||
/// ### Parameters
|
||||
/// - **machine** the machine where the code is executed
|
||||
/// - **scheduler** the scheduler which determine which thread to execute
|
||||
pub fn signal(&mut self, system: &mut System) {
|
||||
let old_status = system.get_machine().interrupt.set_status(InterruptOff);
|
||||
pub fn signal(&mut self, machine: &mut Machine, thread_manager: &mut ThreadManager) {
|
||||
let old_status = machine.interrupt.set_status(InterruptOff);
|
||||
|
||||
if self.waiting_queue.peek() != None {
|
||||
system.get_thread_manager().ready_to_run(self.waiting_queue.pop().unwrap());
|
||||
thread_manager.ready_to_run(self.waiting_queue.pop().unwrap());
|
||||
}
|
||||
|
||||
system.get_machine().interrupt.set_status(old_status);
|
||||
machine.interrupt.set_status(old_status);
|
||||
|
||||
}
|
||||
|
||||
@@ -244,13 +243,13 @@ impl Condition {
|
||||
/// ### Parameters
|
||||
/// - **machine** the machine where the code is executed
|
||||
/// - **scheduler** the scheduler which determine which thread to execute
|
||||
pub fn broadcast(&mut self, system: &mut System) {
|
||||
let old_status = system.get_machine().interrupt.set_status(InterruptOff);
|
||||
pub fn broadcast(&mut self, machine: &mut Machine, thread_manager: &mut ThreadManager) {
|
||||
let old_status = machine.interrupt.set_status(InterruptOff);
|
||||
|
||||
while self.waiting_queue.peek() != None {
|
||||
system.get_thread_manager().ready_to_run(self.waiting_queue.pop().unwrap());
|
||||
thread_manager.ready_to_run(self.waiting_queue.pop().unwrap());
|
||||
}
|
||||
system.get_machine().interrupt.set_status(old_status);
|
||||
machine.interrupt.set_status(old_status);
|
||||
|
||||
}
|
||||
|
||||
@@ -260,7 +259,7 @@ impl Condition {
|
||||
mod test {
|
||||
use std::{rc::Rc, cell::RefCell};
|
||||
|
||||
use crate::{kernel::{thread::Thread, synch::{Semaphore, Lock}, thread_manager::ThreadManager}, init_system, simulator::machine::Machine};
|
||||
use crate::{kernel::{thread::Thread, synch::{Semaphore, Lock}, thread_manager::ThreadManager}, simulator::machine::Machine};
|
||||
|
||||
#[test]
|
||||
fn test_semaphore_single() {
|
||||
|
||||
Reference in New Issue
Block a user