Add capability to get precise free size for userspace
This commit is contained in:
parent
69cb68ced3
commit
1e8584af10
@ -14,7 +14,7 @@ impl MemInfoINode {
|
||||
impl ProcINode for MemInfoINode {
|
||||
fn generate_data_in_bytes(&self) -> vfs::Result<Vec<u8>> {
|
||||
let total_ram = USER_SPACE_VM_MANAGER.get_total_size();
|
||||
let free_ram = current!().vm().get_free_size();
|
||||
let free_ram = USER_SPACE_VM_MANAGER.get_precise_free_size();
|
||||
Ok(format!(
|
||||
"MemTotal: {} kB\n\
|
||||
MemFree: {} kB\n\
|
||||
|
@ -26,7 +26,7 @@ pub fn do_sysinfo() -> Result<sysinfo_t> {
|
||||
let info = sysinfo_t {
|
||||
uptime: time::up_time::get().unwrap().as_secs() as i64, // Duration can't be negative
|
||||
totalram: USER_SPACE_VM_MANAGER.get_total_size() as u64,
|
||||
freeram: current!().vm().get_free_size() as u64,
|
||||
freeram: USER_SPACE_VM_MANAGER.get_precise_free_size() as u64,
|
||||
procs: table::get_all_processes().len() as u16,
|
||||
mem_unit: 1,
|
||||
..Default::default()
|
||||
|
@ -46,6 +46,15 @@ impl VMManager {
|
||||
self.internal().free_manager.free_size()
|
||||
}
|
||||
|
||||
pub fn get_precise_free_size(&self) -> usize {
|
||||
let internal = self.internal();
|
||||
internal.free_manager.free_size()
|
||||
+ internal
|
||||
.chunks
|
||||
.iter()
|
||||
.fold(0, |acc, chunks| acc + chunks.free_size())
|
||||
}
|
||||
|
||||
pub fn verified_clean_when_exit(&self) -> bool {
|
||||
let internal = self.internal();
|
||||
internal.chunks.len() == 0 && internal.free_manager.free_size() == self.range.size()
|
||||
|
Loading…
Reference in New Issue
Block a user