diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index 14ef8e033f..848ef64d4a 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -25,6 +25,7 @@ */ #include +#include #include #include #include @@ -392,7 +393,19 @@ void Process::dump_regions() { klog() << "Process regions:"; klog() << "BEGIN END SIZE ACCESS NAME"; - for (auto& region : m_regions) { + + ScopedSpinLock lock(m_lock); + + Vector sorted_regions; + sorted_regions.ensure_capacity(m_regions.size()); + for (auto& region : m_regions) + sorted_regions.append(®ion); + quick_sort(sorted_regions, [](auto& a, auto& b) { + return a->vaddr() < b->vaddr(); + }); + + for (auto& sorted_region : sorted_regions) { + auto& region = *sorted_region; klog() << String::format("%08x", region.vaddr().get()) << " -- " << String::format("%08x", region.vaddr().offset(region.size() - 1).get()) << " " << String::format("%08x", region.size()) << " " << (region.is_readable() ? 'R' : ' ') << (region.is_writable() ? 'W' : ' ') << (region.is_executable() ? 'X' : ' ') << (region.is_shared() ? 'S' : ' ') << (region.is_stack() ? 'T' : ' ') << (region.vmobject().is_purgeable() ? 'P' : ' ') << " " << region.name().characters(); } MM.dump_kernel_regions();