summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManos Pitsidianakis <el13635@mail.ntua.gr>2020-11-03 15:29:39 +0200
committerManos Pitsidianakis <el13635@mail.ntua.gr>2020-11-03 15:29:39 +0200
commit13e7ee8afd3f7191cd1a157081d11a7c4ef15c65 (patch)
treed99628a199c5f1133f2b9acbb42ffc8727f89e81
parentfb8666980f6f350e7bbc97c0bf74391391916a52 (diff)
Fix incorrect available RAM amount shown
Fixes #18
-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)
}