[pbs-devel] [PATCH sys 1/2] sys: procfs: split read_meminfo into read and parse functions
Dietmar Maurer
dietmar at proxmox.com
Thu Mar 13 12:45:34 CET 2025
So that we can write tests.
Signed-off-by: Dietmar Maurer <dietmar at proxmox.com>
---
proxmox-sys/src/linux/procfs/mod.rs | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/proxmox-sys/src/linux/procfs/mod.rs b/proxmox-sys/src/linux/procfs/mod.rs
index 0875fcf8..f9dbb5bc 100644
--- a/proxmox-sys/src/linux/procfs/mod.rs
+++ b/proxmox-sys/src/linux/procfs/mod.rs
@@ -416,8 +416,12 @@ pub struct ProcFsMemInfo {
pub fn read_meminfo() -> Result<ProcFsMemInfo, Error> {
let path = "/proc/meminfo";
- let file = OpenOptions::new().read(true).open(path)?;
+ let meminfo_str = std::fs::read_to_string(path)?;
+ parse_proc_meminfo(&meminfo_str)
+}
+
+fn parse_proc_meminfo(text: &str) -> Result<ProcFsMemInfo, Error> {
let mut meminfo = ProcFsMemInfo {
memtotal: 0,
memfree: 0,
@@ -429,9 +433,8 @@ pub fn read_meminfo() -> Result<ProcFsMemInfo, Error> {
};
let (mut buffers, mut cached) = (0, 0);
- for line in BufReader::new(&file).lines() {
- let content = line?;
- let mut content_iter = content.split_whitespace();
+ for line in text.lines() {
+ let mut content_iter = line.split_whitespace();
if let (Some(key), Some(value)) = (content_iter.next(), content_iter.next()) {
match key {
"MemTotal:" => meminfo.memtotal = value.parse::<u64>()? * 1024,
--
2.39.5
More information about the pbs-devel
mailing list