mirror of
https://github.com/RGBCube/serenity
synced 2025-07-23 10:37:41 +00:00
Kernel: Remove unused ShouldDeallocateVirtualRange parameters
Since there is no separate virtual range allocator anymore, this is no longer used for anything.
This commit is contained in:
parent
b36c3a68d8
commit
e3e1d79a7d
6 changed files with 21 additions and 38 deletions
|
@ -431,7 +431,7 @@ UNMAP_AFTER_INIT void APIC::do_boot_aps()
|
||||||
|
|
||||||
// NOTE: Since this region is identity-mapped, we have to unmap it manually to prevent the virtual
|
// NOTE: Since this region is identity-mapped, we have to unmap it manually to prevent the virtual
|
||||||
// address range from leaking into the general virtual range allocator.
|
// address range from leaking into the general virtual range allocator.
|
||||||
m_ap_boot_environment->unmap(Memory::Region::ShouldDeallocateVirtualRange::No);
|
m_ap_boot_environment->unmap();
|
||||||
m_ap_boot_environment = nullptr;
|
m_ap_boot_environment = nullptr;
|
||||||
// When the APs signal that they finished their initialization they have already switched over to their
|
// When the APs signal that they finished their initialization they have already switched over to their
|
||||||
// idle thread's stack, so the temporary boot stack can be deallocated
|
// idle thread's stack, so the temporary boot stack can be deallocated
|
||||||
|
|
|
@ -71,11 +71,9 @@ ErrorOr<void> AddressSpace::unmap_mmap_range(VirtualAddress addr, size_t size)
|
||||||
return EPERM;
|
return EPERM;
|
||||||
|
|
||||||
// Remove the old region from our regions tree, since were going to add another region
|
// Remove the old region from our regions tree, since were going to add another region
|
||||||
// with the exact same start address, but don't deallocate it yet.
|
// with the exact same start address.
|
||||||
auto region = take_region(*old_region);
|
auto region = take_region(*old_region);
|
||||||
|
region->unmap();
|
||||||
// We manually unmap the old region here, specifying that we *don't* want the VM deallocated.
|
|
||||||
region->unmap(Region::ShouldDeallocateVirtualRange::No);
|
|
||||||
|
|
||||||
auto new_regions = TRY(try_split_region_around_range(*region, range_to_unmap));
|
auto new_regions = TRY(try_split_region_around_range(*region, range_to_unmap));
|
||||||
|
|
||||||
|
@ -113,11 +111,9 @@ ErrorOr<void> AddressSpace::unmap_mmap_range(VirtualAddress addr, size_t size)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove the old region from our regions tree, since were going to add another region
|
// Remove the old region from our regions tree, since were going to add another region
|
||||||
// with the exact same start address, but don't deallocate it yet.
|
// with the exact same start address.
|
||||||
auto region = take_region(*old_region);
|
auto region = take_region(*old_region);
|
||||||
|
region->unmap();
|
||||||
// We manually unmap the old region here, specifying that we *don't* want the VM deallocated.
|
|
||||||
region->unmap(Region::ShouldDeallocateVirtualRange::No);
|
|
||||||
|
|
||||||
// Otherwise, split the regions and collect them for future mapping.
|
// Otherwise, split the regions and collect them for future mapping.
|
||||||
auto split_regions = TRY(try_split_region_around_range(*region, range_to_unmap));
|
auto split_regions = TRY(try_split_region_around_range(*region, range_to_unmap));
|
||||||
|
@ -339,7 +335,7 @@ void AddressSpace::remove_all_regions(Badge<Process>)
|
||||||
SpinlockLocker pd_locker(m_page_directory->get_lock());
|
SpinlockLocker pd_locker(m_page_directory->get_lock());
|
||||||
SpinlockLocker mm_locker(s_mm_lock);
|
SpinlockLocker mm_locker(s_mm_lock);
|
||||||
for (auto& region : m_region_tree.regions())
|
for (auto& region : m_region_tree.regions())
|
||||||
region.unmap_with_locks_held(Region::ShouldDeallocateVirtualRange::No, ShouldFlushTLB::No, pd_locker, mm_locker);
|
region.unmap_with_locks_held(ShouldFlushTLB::No, pd_locker, mm_locker);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_region_tree.delete_all_regions_assuming_they_are_unmapped();
|
m_region_tree.delete_all_regions_assuming_they_are_unmapped();
|
||||||
|
|
|
@ -73,7 +73,7 @@ Region::~Region()
|
||||||
// If the region is "PROT_NONE", we didn't map it in the first place.
|
// If the region is "PROT_NONE", we didn't map it in the first place.
|
||||||
} else {
|
} else {
|
||||||
SpinlockLocker mm_locker(s_mm_lock);
|
SpinlockLocker mm_locker(s_mm_lock);
|
||||||
unmap_with_locks_held(ShouldDeallocateVirtualRange::Yes, ShouldFlushTLB::Yes, pd_locker, mm_locker);
|
unmap_with_locks_held(ShouldFlushTLB::Yes, pd_locker, mm_locker);
|
||||||
VERIFY(!m_page_directory);
|
VERIFY(!m_page_directory);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -266,16 +266,16 @@ bool Region::remap_vmobject_page(size_t page_index, bool with_flush)
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Region::unmap(ShouldDeallocateVirtualRange should_deallocate_range, ShouldFlushTLB should_flush_tlb)
|
void Region::unmap(ShouldFlushTLB should_flush_tlb)
|
||||||
{
|
{
|
||||||
if (!m_page_directory)
|
if (!m_page_directory)
|
||||||
return;
|
return;
|
||||||
SpinlockLocker pd_locker(m_page_directory->get_lock());
|
SpinlockLocker pd_locker(m_page_directory->get_lock());
|
||||||
SpinlockLocker mm_locker(s_mm_lock);
|
SpinlockLocker mm_locker(s_mm_lock);
|
||||||
unmap_with_locks_held(should_deallocate_range, should_flush_tlb, pd_locker, mm_locker);
|
unmap_with_locks_held(should_flush_tlb, pd_locker, mm_locker);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Region::unmap_with_locks_held(ShouldDeallocateVirtualRange, ShouldFlushTLB should_flush_tlb, SpinlockLocker<RecursiveSpinlock>&, SpinlockLocker<RecursiveSpinlock>&)
|
void Region::unmap_with_locks_held(ShouldFlushTLB should_flush_tlb, SpinlockLocker<RecursiveSpinlock>&, SpinlockLocker<RecursiveSpinlock>&)
|
||||||
{
|
{
|
||||||
if (!m_page_directory)
|
if (!m_page_directory)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -182,12 +182,8 @@ public:
|
||||||
|
|
||||||
void set_page_directory(PageDirectory&);
|
void set_page_directory(PageDirectory&);
|
||||||
ErrorOr<void> map(PageDirectory&, ShouldFlushTLB = ShouldFlushTLB::Yes);
|
ErrorOr<void> map(PageDirectory&, ShouldFlushTLB = ShouldFlushTLB::Yes);
|
||||||
enum class ShouldDeallocateVirtualRange {
|
void unmap(ShouldFlushTLB = ShouldFlushTLB::Yes);
|
||||||
No,
|
void unmap_with_locks_held(ShouldFlushTLB, SpinlockLocker<RecursiveSpinlock>& pd_locker, SpinlockLocker<RecursiveSpinlock>& mm_locker);
|
||||||
Yes,
|
|
||||||
};
|
|
||||||
void unmap(ShouldDeallocateVirtualRange, ShouldFlushTLB = ShouldFlushTLB::Yes);
|
|
||||||
void unmap_with_locks_held(ShouldDeallocateVirtualRange, ShouldFlushTLB, SpinlockLocker<RecursiveSpinlock>& pd_locker, SpinlockLocker<RecursiveSpinlock>& mm_locker);
|
|
||||||
|
|
||||||
void remap();
|
void remap();
|
||||||
|
|
||||||
|
|
|
@ -290,11 +290,9 @@ ErrorOr<FlatPtr> Process::sys$mprotect(Userspace<void*> addr, size_t size, int p
|
||||||
TRY(validate_inode_mmap_prot(prot, static_cast<Memory::InodeVMObject const&>(old_region->vmobject()).inode(), old_region->is_shared()));
|
TRY(validate_inode_mmap_prot(prot, static_cast<Memory::InodeVMObject const&>(old_region->vmobject()).inode(), old_region->is_shared()));
|
||||||
|
|
||||||
// Remove the old region from our regions tree, since were going to add another region
|
// Remove the old region from our regions tree, since were going to add another region
|
||||||
// with the exact same start address, but do not deallocate it yet
|
// with the exact same start address.
|
||||||
auto region = address_space().take_region(*old_region);
|
auto region = address_space().take_region(*old_region);
|
||||||
|
region->unmap();
|
||||||
// Unmap the old region here, specifying that we *don't* want the VM deallocated.
|
|
||||||
region->unmap(Memory::Region::ShouldDeallocateVirtualRange::No);
|
|
||||||
|
|
||||||
// This vector is the region(s) adjacent to our range.
|
// This vector is the region(s) adjacent to our range.
|
||||||
// We need to allocate a new region for the range we wanted to change permission bits on.
|
// We need to allocate a new region for the range we wanted to change permission bits on.
|
||||||
|
@ -346,11 +344,9 @@ ErrorOr<FlatPtr> Process::sys$mprotect(Userspace<void*> addr, size_t size, int p
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// Remove the old region from our regions tree, since were going to add another region
|
// Remove the old region from our regions tree, since were going to add another region
|
||||||
// with the exact same start address, but dont deallocate it yet
|
// with the exact same start address.
|
||||||
auto region = address_space().take_region(*old_region);
|
auto region = address_space().take_region(*old_region);
|
||||||
|
region->unmap();
|
||||||
// Unmap the old region here, specifying that we *don't* want the VM deallocated.
|
|
||||||
region->unmap(Memory::Region::ShouldDeallocateVirtualRange::No);
|
|
||||||
|
|
||||||
// This vector is the region(s) adjacent to our range.
|
// This vector is the region(s) adjacent to our range.
|
||||||
// We need to allocate a new region for the range we wanted to change permission bits on.
|
// We need to allocate a new region for the range we wanted to change permission bits on.
|
||||||
|
@ -467,8 +463,7 @@ ErrorOr<FlatPtr> Process::sys$mremap(Userspace<Syscall::SC_mremap_params const*>
|
||||||
auto new_vmobject = TRY(Memory::PrivateInodeVMObject::try_create_with_inode(inode));
|
auto new_vmobject = TRY(Memory::PrivateInodeVMObject::try_create_with_inode(inode));
|
||||||
auto old_name = old_region->take_name();
|
auto old_name = old_region->take_name();
|
||||||
|
|
||||||
// Unmap without deallocating the VM range since we're going to reuse it.
|
old_region->unmap();
|
||||||
old_region->unmap(Memory::Region::ShouldDeallocateVirtualRange::No);
|
|
||||||
address_space().deallocate_region(*old_region);
|
address_space().deallocate_region(*old_region);
|
||||||
|
|
||||||
auto* new_region = TRY(address_space().allocate_region_with_vmobject(range, move(new_vmobject), old_offset, old_name->view(), old_prot, false));
|
auto* new_region = TRY(address_space().allocate_region_with_vmobject(range, move(new_vmobject), old_offset, old_name->view(), old_prot, false));
|
||||||
|
|
|
@ -156,11 +156,9 @@ ErrorOr<void> Process::remap_range_as_stack(FlatPtr address, size_t size)
|
||||||
return EINVAL;
|
return EINVAL;
|
||||||
|
|
||||||
// Remove the old region from our regions tree, since were going to add another region
|
// Remove the old region from our regions tree, since were going to add another region
|
||||||
// with the exact same start address, but do not deallocate it yet
|
// with the exact same start address.
|
||||||
auto region = address_space().take_region(*old_region);
|
auto region = address_space().take_region(*old_region);
|
||||||
|
region->unmap();
|
||||||
// Unmap the old region here, specifying that we *don't* want the VM deallocated.
|
|
||||||
region->unmap(Memory::Region::ShouldDeallocateVirtualRange::No);
|
|
||||||
|
|
||||||
// This vector is the region(s) adjacent to our range.
|
// This vector is the region(s) adjacent to our range.
|
||||||
// We need to allocate a new region for the range we wanted to change permission bits on.
|
// We need to allocate a new region for the range we wanted to change permission bits on.
|
||||||
|
@ -214,11 +212,9 @@ ErrorOr<void> Process::remap_range_as_stack(FlatPtr address, size_t size)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// Remove the old region from our regions tree, since were going to add another region
|
// Remove the old region from our regions tree, since were going to add another region
|
||||||
// with the exact same start address, but dont deallocate it yet
|
// with the exact same start address.
|
||||||
auto region = address_space().take_region(*old_region);
|
auto region = address_space().take_region(*old_region);
|
||||||
|
region->unmap();
|
||||||
// Unmap the old region here, specifying that we *don't* want the VM deallocated.
|
|
||||||
region->unmap(Memory::Region::ShouldDeallocateVirtualRange::No);
|
|
||||||
|
|
||||||
// This vector is the region(s) adjacent to our range.
|
// This vector is the region(s) adjacent to our range.
|
||||||
// We need to allocate a new region for the range we wanted to change permission bits on.
|
// We need to allocate a new region for the range we wanted to change permission bits on.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue