arceos_posix_api/imp/
sys.rsuse core::ffi::{c_int, c_long};
use crate::ctypes;
const PAGE_SIZE_4K: usize = 4096;
pub fn sys_sysconf(name: c_int) -> c_long {
debug!("sys_sysconf <= {}", name);
#[cfg(feature = "alloc")]
let (phys_pages, avail_pages) = {
let alloc = axalloc::global_allocator();
let avail_pages = alloc.available_pages();
(alloc.used_pages() + avail_pages, avail_pages)
};
#[cfg(not(feature = "alloc"))]
let (phys_pages, avail_pages) = {
let mem_size = axconfig::plat::PHYS_MEMORY_SIZE;
(mem_size / PAGE_SIZE_4K, mem_size / PAGE_SIZE_4K) };
syscall_body!(sys_sysconf, {
match name as u32 {
ctypes::_SC_PAGE_SIZE => Ok(PAGE_SIZE_4K),
ctypes::_SC_NPROCESSORS_ONLN => Ok(axconfig::SMP),
ctypes::_SC_PHYS_PAGES => Ok(phys_pages),
ctypes::_SC_AVPHYS_PAGES => Ok(avail_pages),
#[cfg(feature = "fd")]
ctypes::_SC_OPEN_MAX => Ok(super::fd_ops::AX_FILE_LIMIT),
_ => Ok(0),
}
})
}