use std::io::Read;
use pagemap::{PageMap, PageMapError};
fn main() -> Result<(), PageMapError> {
let mut comm = String::with_capacity(16);
for dirent in std::fs::read_dir("/proc")? {
comm.clear();
let mut path = dirent?.path();
let pid = match path.file_name() {
Some(name) => match name.to_string_lossy().parse::<u64>() {
Ok(pid) => pid,
Err(_) => continue,
},
None => continue,
};
path.push("comm");
let _ = std::fs::File::open(&path)?.read_to_string(&mut comm)?;
println!("{}({}):", comm.trim_end(), pid);
let mut pm = PageMap::new(pid)?;
let entries = pm.pagemap()?;
entries.iter().for_each(|e| {
e.1.iter().filter(|&pme| pme.swapped()).for_each(|pme| {
println!("\t- {}", pme);
});
});
}
Ok(())
}