Skip to content

Commit

Permalink
Kernel: Always dump kernel regions when dumping process regions
Browse files Browse the repository at this point in the history
  • Loading branch information
awesomekling committed Jan 18, 2020
1 parent 345f92d commit 19c31d1
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 23 deletions.
2 changes: 2 additions & 0 deletions Kernel/Process.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1266,6 +1266,8 @@ void Process::dump_regions()
region.vmobject().is_purgeable() ? 'P' : ' ',
region.name().characters());
}

MM.dump_kernel_regions();
}

void Process::sys$exit(int status)
Expand Down
42 changes: 19 additions & 23 deletions Kernel/VM/MemoryManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -227,29 +227,6 @@ Region* MemoryManager::user_region_from_vaddr(Process& process, VirtualAddress v
return &region;
}
dbg() << process << " Couldn't find user region for " << vaddr;
if (auto* kreg = kernel_region_from_vaddr(vaddr)) {
dbg() << process << " OTOH, there is a kernel region: " << kreg->range() << ": " << kreg->name();
} else {
dbg() << process << " AND no kernel region either";
}

process.dump_regions();

kprintf("Kernel regions:\n");
kprintf("BEGIN END SIZE ACCESS NAME\n");
for (auto& region : MM.m_kernel_regions) {
kprintf("%08x -- %08x %08x %c%c%c%c%c%c %s\n",
region.vaddr().get(),
region.vaddr().offset(region.size() - 1).get(),
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());
}
return nullptr;
}

Expand Down Expand Up @@ -664,6 +641,25 @@ void MemoryManager::unregister_region(Region& region)
m_user_regions.remove(&region);
}

void MemoryManager::dump_kernel_regions()
{
kprintf("Kernel regions:\n");
kprintf("BEGIN END SIZE ACCESS NAME\n");
for (auto& region : MM.m_kernel_regions) {
kprintf("%08x -- %08x %08x %c%c%c%c%c%c %s\n",
region.vaddr().get(),
region.vaddr().offset(region.size() - 1).get(),
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());
}
}

ProcessPagingScope::ProcessPagingScope(Process& process)
{
ASSERT(current);
Expand Down
2 changes: 2 additions & 0 deletions Kernel/VM/MemoryManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,8 @@ class MemoryManager {
static Region* region_from_vaddr(Process&, VirtualAddress);
static const Region* region_from_vaddr(const Process&, VirtualAddress);

void dump_kernel_regions();

private:
MemoryManager();
~MemoryManager();
Expand Down

0 comments on commit 19c31d1

Please sign in to comment.