summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/components/kernel.rs38
1 files changed, 17 insertions, 21 deletions
diff --git a/src/components/kernel.rs b/src/components/kernel.rs
index 21748d9..feeae6a 100644
--- a/src/components/kernel.rs
+++ b/src/components/kernel.rs
@@ -523,27 +523,23 @@ fn get_mem_info() -> (usize, usize) {
let mut file = File::open("/proc/meminfo").unwrap();
let mut res = String::with_capacity(2048);
file.read_to_string(&mut res).unwrap();
- let mut lines_iter = res.lines();
- let mem_total = usize::from_str(
- lines_iter
- .next()
- .unwrap()
- .split_whitespace()
- .skip(1)
- .next()
- .unwrap(),
- )
- .unwrap();
- let mem_available = usize::from_str(
- lines_iter
- .next()
- .unwrap()
- .split_whitespace()
- .skip(1)
- .next()
- .unwrap(),
- )
- .unwrap();
+ let mut mem_total = 0;
+ let mut mem_available = 0;
+ let mut counter = 0;
+ for line in res.lines() {
+ if line.starts_with("MemTotal") {
+ mem_total = usize::from_str(line.split_whitespace().skip(1).next().unwrap()).unwrap();
+ counter += 1;
+ } else if line.starts_with("MemAvailable") {
+ mem_available =
+ usize::from_str(line.split_whitespace().skip(1).next().unwrap()).unwrap();
+ counter += 1;
+ }
+
+ if counter == 2 {
+ break;
+ }
+ }
(mem_available, mem_total)
}