Struct sysinfo::CpuRefreshKind
source · pub struct CpuRefreshKind { /* private fields */ }
Expand description
Used to determine what you want to refresh specifically on the Cpu
type.
⚠️ Just like all other refresh types, ruling out a refresh doesn’t assure you that the information won’t be retrieved if the information is accessible without needing extra computation.
use sysinfo::{CpuExt, CpuRefreshKind, System, SystemExt};
let mut system = System::new();
// We don't want to update all the CPU information.
system.refresh_cpu_specifics(CpuRefreshKind::everything().without_frequency());
for cpu in system.cpus() {
assert_eq!(cpu.frequency(), 0);
}
Implementations§
source§impl CpuRefreshKind
impl CpuRefreshKind
sourcepub fn new() -> Self
pub fn new() -> Self
Creates a new CpuRefreshKind
with every refresh set to false
.
use sysinfo::CpuRefreshKind;
let r = CpuRefreshKind::new();
assert_eq!(r.frequency(), false);
Examples found in repository?
More examples
sourcepub fn everything() -> Self
pub fn everything() -> Self
Creates a new CpuRefreshKind
with every refresh set to true
.
use sysinfo::CpuRefreshKind;
let r = CpuRefreshKind::everything();
assert_eq!(r.frequency(), true);
Examples found in repository?
src/common.rs (line 428)
420 421 422 423 424 425 426 427 428 429 430 431 432 433
pub fn everything() -> Self {
Self {
networks: true,
networks_list: true,
processes: Some(ProcessRefreshKind::everything()),
disks: true,
disks_list: true,
memory: true,
cpu: Some(CpuRefreshKind::everything()),
components: true,
components_list: true,
users_list: true,
}
}
sourcepub fn cpu_usage(&self) -> bool
pub fn cpu_usage(&self) -> bool
Returns the value of the “cpu_usage” refresh kind.
use sysinfo::CpuRefreshKind;
let r = CpuRefreshKind::new();
assert_eq!(r.cpu_usage(), false);
let r = r.with_cpu_usage();
assert_eq!(r.cpu_usage(), true);
let r = r.without_cpu_usage();
assert_eq!(r.cpu_usage(), false);
sourcepub fn with_cpu_usage(self) -> Self
pub fn with_cpu_usage(self) -> Self
Sets the value of the “cpu_usage” refresh kind to true
.
use sysinfo::CpuRefreshKind;
let r = CpuRefreshKind::new();
assert_eq!(r.cpu_usage(), false);
let r = r.with_cpu_usage();
assert_eq!(r.cpu_usage(), true);
sourcepub fn without_cpu_usage(self) -> Self
pub fn without_cpu_usage(self) -> Self
Sets the value of the “cpu_usage” refresh kind to false
.
use sysinfo::CpuRefreshKind;
let r = CpuRefreshKind::everything();
assert_eq!(r.cpu_usage(), true);
let r = r.without_cpu_usage();
assert_eq!(r.cpu_usage(), false);
sourcepub fn frequency(&self) -> bool
pub fn frequency(&self) -> bool
Returns the value of the “frequency” refresh kind.
use sysinfo::CpuRefreshKind;
let r = CpuRefreshKind::new();
assert_eq!(r.frequency(), false);
let r = r.with_frequency();
assert_eq!(r.frequency(), true);
let r = r.without_frequency();
assert_eq!(r.frequency(), false);
Examples found in repository?
More examples
src/windows/tools.rs (line 26)
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
pub(crate) fn init_cpus(refresh_kind: CpuRefreshKind) -> (Vec<Cpu>, String, String) {
unsafe {
let mut sys_info: SYSTEM_INFO = zeroed();
GetSystemInfo(&mut sys_info);
let (vendor_id, brand) = cpu::get_vendor_id_and_brand(&sys_info);
let nb_cpus = sys_info.dwNumberOfProcessors as usize;
let frequencies = if refresh_kind.frequency() {
cpu::get_frequencies(nb_cpus)
} else {
vec![0; nb_cpus]
};
let mut ret = Vec::with_capacity(nb_cpus + 1);
for (nb, frequency) in frequencies.iter().enumerate() {
ret.push(Cpu::new_with_values(
format!("CPU {}", nb + 1),
vendor_id.clone(),
brand.clone(),
*frequency,
));
}
(ret, vendor_id, brand)
}
}
src/windows/system.rs (line 167)
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171
fn refresh_cpu_specifics(&mut self, refresh_kind: CpuRefreshKind) {
if self.query.is_none() {
self.query = Query::new();
if let Some(ref mut query) = self.query {
add_english_counter(
r"\Processor(_Total)\% Processor Time".to_string(),
query,
get_key_used(self.cpus.global_cpu_mut()),
"tot_0".to_owned(),
);
for (pos, proc_) in self.cpus.iter_mut(refresh_kind).enumerate() {
add_english_counter(
format!(r"\Processor({pos})\% Processor Time"),
query,
get_key_used(proc_),
format!("{pos}_0"),
);
}
}
}
if let Some(ref mut query) = self.query {
query.refresh();
let mut used_time = None;
if let Some(ref key_used) = *get_key_used(self.cpus.global_cpu_mut()) {
used_time = Some(
query
.get(&key_used.unique_id)
.expect("global_key_idle disappeared"),
);
}
if let Some(used_time) = used_time {
self.cpus.global_cpu_mut().set_cpu_usage(used_time);
}
for p in self.cpus.iter_mut(refresh_kind) {
let mut used_time = None;
if let Some(ref key_used) = *get_key_used(p) {
used_time = Some(
query
.get(&key_used.unique_id)
.expect("key_used disappeared"),
);
}
if let Some(used_time) = used_time {
p.set_cpu_usage(used_time);
}
}
if refresh_kind.frequency() {
self.cpus.get_frequencies();
}
}
}
sourcepub fn with_frequency(self) -> Self
pub fn with_frequency(self) -> Self
Sets the value of the “frequency” refresh kind to true
.
use sysinfo::CpuRefreshKind;
let r = CpuRefreshKind::new();
assert_eq!(r.frequency(), false);
let r = r.with_frequency();
assert_eq!(r.frequency(), true);
sourcepub fn without_frequency(self) -> Self
pub fn without_frequency(self) -> Self
Sets the value of the “frequency” refresh kind to false
.
use sysinfo::CpuRefreshKind;
let r = CpuRefreshKind::everything();
assert_eq!(r.frequency(), true);
let r = r.without_frequency();
assert_eq!(r.frequency(), false);
Trait Implementations§
source§impl Clone for CpuRefreshKind
impl Clone for CpuRefreshKind
source§fn clone(&self) -> CpuRefreshKind
fn clone(&self) -> CpuRefreshKind
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for CpuRefreshKind
impl Debug for CpuRefreshKind
source§impl Default for CpuRefreshKind
impl Default for CpuRefreshKind
source§fn default() -> CpuRefreshKind
fn default() -> CpuRefreshKind
Returns the “default value” for a type. Read more
source§impl PartialEq<CpuRefreshKind> for CpuRefreshKind
impl PartialEq<CpuRefreshKind> for CpuRefreshKind
source§fn eq(&self, other: &CpuRefreshKind) -> bool
fn eq(&self, other: &CpuRefreshKind) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.