Added sc_p call

This commit is contained in:
François Autin 2023-04-12 13:28:55 +02:00
parent 729eba656c
commit 355071a2f1
No known key found for this signature in database
GPG Key ID: 343F5D382E1DD77C

View File

@ -203,7 +203,7 @@ fn syscall(machine: &mut Machine, system: &mut System) -> Result<MachineOk, Mach
}, },
SC_YIELD => todo!(), SC_YIELD => todo!(),
SC_PERROR => todo!(), SC_PERROR => todo!(),
SC_P => todo!(), SC_P => sc_p(machine, system),
SC_V => sc_v(machine, system), SC_V => sc_v(machine, system),
SC_SEM_CREATE => { SC_SEM_CREATE => {
let addr_name = machine.read_int_register(10) as usize; let addr_name = machine.read_int_register(10) as usize;
@ -240,6 +240,14 @@ fn syscall(machine: &mut Machine, system: &mut System) -> Result<MachineOk, Mach
} }
} }
fn sc_p(machine: &mut Machine, system: &mut System) -> Result<(), Error> {
let id_sema = machine.int_reg.get_reg(10);
match system.get_obj_addrs().search_semaphore(id_sema) {
Some(sema) => { sema.p(machine, system.get_thread_manager()); Ok(()) }
None => Err(format!("Coudn't find semaphore {}", id_sema))
}
}
fn sc_v(machine: &mut Machine, system: &mut System) -> Result<(), Error> { fn sc_v(machine: &mut Machine, system: &mut System) -> Result<(), Error> {
let id_sema = machine.int_reg.get_reg(10); let id_sema = machine.int_reg.get_reg(10);
match system.get_obj_addrs().search_semaphore(id_sema) { match system.get_obj_addrs().search_semaphore(id_sema) {