From 37818e1a25c68063f2e36b2cb24349643b44f34d Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Wed, 25 Feb 2026 23:11:43 +0000 Subject: [PATCH] Add getrusage suite to sys. Signed-off-by: Jason Volk --- src/core/utils/sys.rs | 3 ++- src/core/utils/sys/usage.rs | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 src/core/utils/sys/usage.rs diff --git a/src/core/utils/sys.rs b/src/core/utils/sys.rs index 66f224c8..43712487 100644 --- a/src/core/utils/sys.rs +++ b/src/core/utils/sys.rs @@ -1,10 +1,11 @@ pub mod compute; pub mod limits; pub mod storage; +pub mod usage; use std::path::PathBuf; -pub use self::{compute::available_parallelism, limits::*}; +pub use self::{compute::available_parallelism, limits::*, usage::*}; use crate::{Result, at}; /// Return a possibly corrected std::env::current_exe() even if the path is diff --git a/src/core/utils/sys/usage.rs b/src/core/utils/sys/usage.rs new file mode 100644 index 00000000..6bf6f01a --- /dev/null +++ b/src/core/utils/sys/usage.rs @@ -0,0 +1,25 @@ +use nix::sys::resource::Usage; +#[cfg(unix)] +use nix::sys::resource::{UsageWho, getrusage}; + +use crate::Result; + +#[cfg(unix)] +pub fn usage() -> Result { getrusage(UsageWho::RUSAGE_SELF).map_err(Into::into) } + +#[cfg(not(unix))] +pub fn usage() -> Result { Ok(Usage::default()) } + +#[cfg(any( + target_os = "linux", + target_os = "freebsd", + target_os = "openbsd" +))] +pub fn thread_usage() -> Result { getrusage(UsageWho::RUSAGE_THREAD).map_err(Into::into) } + +#[cfg(not(any( + target_os = "linux", + target_os = "freebsd", + target_os = "openbsd" +)))] +pub fn thread_usage() -> Result { Ok(Usage::default()) }