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);
|
machine.interrupt.set_status(old_status);
|
||||||
Ok(MachineOk::Ok)
|
Ok(MachineOk::Ok)
|
||||||
}
|
}
|
||||||
@ -464,7 +465,7 @@ mod test {
|
|||||||
{
|
{
|
||||||
let lock = thread_manager.get_obj_addrs().search_lock(lock_id).unwrap();
|
let lock = thread_manager.get_obj_addrs().search_lock(lock_id).unwrap();
|
||||||
assert_eq!(lock.owner, None);
|
assert_eq!(lock.owner, None);
|
||||||
assert!(!lock.free);
|
assert!(lock.free);
|
||||||
assert!(lock.waiting_queue.is_empty());
|
assert!(lock.waiting_queue.is_empty());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -66,6 +66,11 @@ impl ObjAddr {
|
|||||||
self.locks.get_mut(&id)
|
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
|
/// Searches for a lock of id **id** in self
|
||||||
pub fn search_thread(&mut self, id: i32) -> Option<&Rc<RefCell<Thread>>> {
|
pub fn search_thread(&mut self, id: i32) -> Option<&Rc<RefCell<Thread>>> {
|
||||||
self.threads.get(&id)
|
self.threads.get(&id)
|
||||||
|
Loading…
Reference in New Issue
Block a user