#[derive(Debug, Clone, PartialEq, Eq)]
#[derive(Deserialize, Serialize)]
#[serde(deny_unknown_fields)]
pub struct MemoryMapEntryKilobyteStatistics
{
pub resident_set_size: SizeAndProcessShareOfSize,
pub shared: CleanDirtyAndHuge,
pub private: CleanDirtyAndHuge,
pub referenced: Kilobyte,
pub anonymous: Kilobyte,
pub anonymous_huge_pages: Kilobyte,
pub lazy_free: Kilobyte,
pub shmem_memory_mapped_into_user_space_using_huge_pages: Kilobyte,
pub file_memory_mapped_into_user_space_using_huge_pages: Kilobyte,
pub swap: SizeAndProcessShareOfSize,
pub locked: Kilobyte,
pub unknown: HashMap<Box<[u8]>, u64>,
}
impl AddAssign<&Self> for MemoryMapEntryKilobyteStatistics
{
#[inline(always)]
fn add_assign(&mut self, rhs: &Self)
{
self.resident_set_size += &rhs.resident_set_size;
self.shared += &rhs.shared;
self.private += &rhs.private;
self.referenced += rhs.referenced;
self.anonymous += rhs.anonymous;
self.anonymous_huge_pages += rhs.anonymous_huge_pages;
self.lazy_free += rhs.lazy_free;
self.shmem_memory_mapped_into_user_space_using_huge_pages += rhs.shmem_memory_mapped_into_user_space_using_huge_pages;
self.file_memory_mapped_into_user_space_using_huge_pages += rhs.file_memory_mapped_into_user_space_using_huge_pages;
self.swap += &rhs.swap;
self.locked += rhs.locked;
for (key, &kilobytes) in rhs.unknown.iter()
{
let value = self.unknown.get_mut(key);
match value
{
None =>
{
self.unknown.insert(key.clone(), kilobytes);
},
Some(pointer) =>
{
*pointer = *pointer + kilobytes;
}
}
}
}
}