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