1
0
forked from Rativel/BurritOS

added lock acquire system call

This commit is contained in:
Samy Solhi
2023-04-13 00:17:34 +02:00
parent 6e6d3424f5
commit 05f72af035
3 changed files with 48 additions and 5 deletions

View File

@@ -177,7 +177,7 @@ fn syscall(machine: &mut Machine, system: &mut System) -> Result<MachineOk, Mach
SC_SEM_DESTROY => sc_sem_remove(machine, system),
SC_LOCK_CREATE => sc_lock_create(machine, system),
SC_LOCK_DESTROY => sc_lock_destroy(machine, system),
SC_LOCK_ACQUIRE => todo!(),
SC_LOCK_ACQUIRE => sc_lock_acquire(machine, system),
SC_LOCK_RELEASE => todo!(),
SC_COND_CREATE => todo!(),
SC_COND_DESTROY => todo!(),
@@ -197,9 +197,14 @@ fn syscall(machine: &mut Machine, system: &mut System) -> Result<MachineOk, Mach
}
}
fn sc_lock_acquire(machine: &mut Machine, system: &mut System) -> Result<MachineOk, MachineError> {
let id = machine.read_int_register(10) as i32;
system.get_thread_manager().lock_acquire(id, machine)
}
fn sc_lock_create(machine: &mut Machine, system: &mut System) -> Result<MachineOk, MachineError> {
let addr_name = machine.read_int_register(10) as usize;
let size = get_length_param(addr_name, &machine);
let size = get_length_param(addr_name, machine);
let _name = get_string_param(addr_name, size, machine);
let lock = Lock::new();
let id = system.get_thread_manager().get_obj_addrs().add_lock(lock);