use libc::sysconf;
use libc::_SC_IOV_MAX;
use libc::_SC_NPROCESSORS_CONF;
use libc::_SC_NPROCESSORS_ONLN;
use libc::_SC_PAGESIZE;
use crate::errno_result;
use crate::Result;
const IOV_MAX_DEFAULT: usize = 1024;
#[inline(always)]
pub fn iov_max() -> usize {
let iov_max = unsafe { sysconf(_SC_IOV_MAX) };
if iov_max < 0 {
IOV_MAX_DEFAULT
} else {
iov_max as usize
}
}
#[inline(always)]
pub fn pagesize() -> usize {
let pagesize = unsafe { sysconf(_SC_PAGESIZE) };
if pagesize <= 0 {
panic!("Error reading system page size, got invalid value.");
}
pagesize as usize
}
#[inline(always)]
pub fn number_of_logical_cores() -> Result<usize> {
let nprocs_conf = unsafe { sysconf(_SC_NPROCESSORS_CONF) };
if nprocs_conf < 0 {
errno_result()
} else {
Ok(nprocs_conf as usize)
}
}
#[inline(always)]
pub fn number_of_online_cores() -> Result<usize> {
let nprocs_onln = unsafe { sysconf(_SC_NPROCESSORS_ONLN) };
if nprocs_onln < 0 {
errno_result()
} else {
Ok(nprocs_onln as usize)
}
}