Fix deadlock

This commit is contained in:
2024-04-03 23:28:17 +02:00
parent 5b857af041
commit 649b9334b9
3 changed files with 4 additions and 1 deletions

View File

@@ -172,7 +172,7 @@ int AddressSpace::unmap(void *virt) {
}
FDT *AddressSpace::getFdt() {
if (_fdt.get() == nullptr) {
LockGuard l(_lock);
LockGuard l(_fdtLock);
if (_fdt.get() == nullptr) {
_fdt = UniquePtr(new FDT());
}

View File

@@ -55,6 +55,7 @@ private:
uint64_t *PML4;
UniquePtr<FDT> _fdt;
Mutex _fdtLock;
UniquePtr<cgistd::vector<uint64_t *>> _taken_pages;

View File

@@ -23,6 +23,8 @@ bool Mutex::try_lock() {
//}
void Mutex::lock() {
assert((owner() != Scheduler::cur_task() || !locked));
bool spinned = false;
if (Mutex::try_lock()) {