mirror of
https://git.proxmox.com/git/proxmox
synced 2025-10-04 16:49:12 +00:00
sys: procfs: split read_meminfo into read and parse functions
So that we can write tests. Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
This commit is contained in:
parent
da8fdea632
commit
ec8a3de133
@ -417,8 +417,12 @@ pub struct ProcFsMemInfo {
|
|||||||
|
|
||||||
pub fn read_meminfo() -> Result<ProcFsMemInfo, Error> {
|
pub fn read_meminfo() -> Result<ProcFsMemInfo, Error> {
|
||||||
let path = "/proc/meminfo";
|
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 {
|
let mut meminfo = ProcFsMemInfo {
|
||||||
memtotal: 0,
|
memtotal: 0,
|
||||||
memfree: 0,
|
memfree: 0,
|
||||||
@ -430,9 +434,8 @@ pub fn read_meminfo() -> Result<ProcFsMemInfo, Error> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let (mut buffers, mut cached) = (0, 0);
|
let (mut buffers, mut cached) = (0, 0);
|
||||||
for line in BufReader::new(&file).lines() {
|
for line in text.lines() {
|
||||||
let content = line?;
|
let mut content_iter = line.split_whitespace();
|
||||||
let mut content_iter = content.split_whitespace();
|
|
||||||
if let (Some(key), Some(value)) = (content_iter.next(), content_iter.next()) {
|
if let (Some(key), Some(value)) = (content_iter.next(), content_iter.next()) {
|
||||||
match key {
|
match key {
|
||||||
"MemTotal:" => meminfo.memtotal = value.parse::<u64>()? * 1024,
|
"MemTotal:" => meminfo.memtotal = value.parse::<u64>()? * 1024,
|
||||||
|
Loading…
Reference in New Issue
Block a user