mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 06:48:12 +00:00
Kernel+SystemMonitor: Expose amount of per-process clean inode memory
This is memory that's loaded from an inode (file) but not modified in memory, so still identical to what's on disk. This kind of memory can be freed and reloaded transparently from disk if needed.
This commit is contained in:
parent
0d5e0e4cad
commit
c74cde918a
9 changed files with 42 additions and 0 deletions
|
@ -2504,6 +2504,9 @@ void Process::die()
|
|||
|
||||
size_t Process::amount_dirty_private() const
|
||||
{
|
||||
// FIXME: This gets a bit more complicated for Regions sharing the same underlying VMObject.
|
||||
// The main issue I'm thinking of is when the VMObject has physical pages that none of the Regions are mapping.
|
||||
// That's probably a situation that needs to be looked at in general.
|
||||
size_t amount = 0;
|
||||
for (auto& region : m_regions) {
|
||||
if (!region.is_shared())
|
||||
|
@ -2512,6 +2515,19 @@ size_t Process::amount_dirty_private() const
|
|||
return amount;
|
||||
}
|
||||
|
||||
size_t Process::amount_clean_inode() const
|
||||
{
|
||||
HashTable<const InodeVMObject*> vmobjects;
|
||||
for (auto& region : m_regions) {
|
||||
if (region.vmobject().is_inode())
|
||||
vmobjects.set(&static_cast<const InodeVMObject&>(region.vmobject()));
|
||||
}
|
||||
size_t amount = 0;
|
||||
for (auto& vmobject : vmobjects)
|
||||
amount += vmobject->amount_clean();
|
||||
return amount;
|
||||
}
|
||||
|
||||
size_t Process::amount_virtual() const
|
||||
{
|
||||
size_t amount = 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue