From b1d81bf8c936509b6f83b2eac98da8ae72e0a4e3 Mon Sep 17 00:00:00 2001 From: Mustafa Salih <37256744+MustafaSalih1993@users.noreply.github.com> Date: Wed, 12 May 2021 16:46:48 +0300 Subject: getting data programmatically (#56) * getting loadavg programmatically * added missing uptime in rsblock.yml * using clock_gettime syscall to get uptime --- src/utils/load_average.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/utils/load_average.rs') diff --git a/src/utils/load_average.rs b/src/utils/load_average.rs index 414ab6f..43dc88b 100644 --- a/src/utils/load_average.rs +++ b/src/utils/load_average.rs @@ -1,12 +1,16 @@ use crate::config::CONFIG; use crate::types::ThreadsData; -use nix::sys::sysinfo; + +use nix::libc::{c_double, c_int, getloadavg}; pub fn get_load_avg() -> ThreadsData { - let load = sysinfo::sysinfo().unwrap().load_average().0; + let mut data: [c_double; 3] = [0f64; 3]; + unsafe { getloadavg(data.as_mut_ptr(), data.len() as c_int) }; + let [load, _, _] = data; let data = format!( " {} {:.2} {}", CONFIG.loadavg.icon, load, CONFIG.seperator ); + ThreadsData::LoadAvg(data) } -- cgit v1.2.3