Updated lock_release to update lock in objaddr list
This commit is contained in:
parent
c33df28307
commit
aba2fbc718
@ -373,6 +373,7 @@ impl ThreadManager {
|
||||
}
|
||||
}
|
||||
};
|
||||
self.get_obj_addrs().update_lock(id, lock);
|
||||
machine.interrupt.set_status(old_status);
|
||||
Ok(MachineOk::Ok)
|
||||
}
|
||||
@ -464,7 +465,7 @@ mod test {
|
||||
{
|
||||
let lock = thread_manager.get_obj_addrs().search_lock(lock_id).unwrap();
|
||||
assert_eq!(lock.owner, None);
|
||||
assert!(!lock.free);
|
||||
assert!(lock.free);
|
||||
assert!(lock.waiting_queue.is_empty());
|
||||
}
|
||||
}
|
||||
|
@ -66,6 +66,11 @@ impl ObjAddr {
|
||||
self.locks.get_mut(&id)
|
||||
}
|
||||
|
||||
/// Update lock at given id
|
||||
pub fn update_lock(&mut self, id: i32, lock: Lock) {
|
||||
self.locks.insert(id, lock);
|
||||
}
|
||||
|
||||
/// Searches for a lock of id **id** in self
|
||||
pub fn search_thread(&mut self, id: i32) -> Option<&Rc<RefCell<Thread>>> {
|
||||
self.threads.get(&id)
|
||||
|
Loading…
Reference in New Issue
Block a user