Merge branch 'limits-max' into 'master'

Define max limits in rust

See merge request redox-os/relibc!889
This commit is contained in:
Jeremy Soller
2026-01-17 06:59:05 -07:00
5 changed files with 92 additions and 34 deletions
-1
View File
@@ -1,6 +1,5 @@
sys_includes = []
include_guard = "_RELIBC_LIMITS_H"
trailer = "#include <bits/limits.h>"
language = "C"
style = "Tag"
no_includes = true
+47 -1
View File
@@ -2,7 +2,10 @@
//!
//! See <https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/limits.h.html>.
use core::ffi::c_long;
use crate::platform::types::{
c_char, c_int, c_long, c_longlong, c_schar, c_short, c_uchar, c_uint, c_ulong, c_ulonglong,
c_ushort, ssize_t,
};
pub const HOST_NAME_MAX: usize = 64;
pub const NAME_MAX: usize = 255;
@@ -10,6 +13,49 @@ pub const PASS_MAX: usize = 128;
pub const PATH_MAX: usize = 4096;
pub const NGROUPS_MAX: usize = 65536;
pub const CHAR_BIT: u32 = 8;
pub const WORD_BIT: u32 = 32;
#[cfg(target_pointer_width = "32")]
pub const LONG_BIT: u32 = 32;
#[cfg(target_pointer_width = "64")]
pub const LONG_BIT: u32 = 64;
#[cfg(any(target_arch = "aarch64", target_arch = "riscv64"))]
pub const CHAR_MAX: c_char = 0xFF;
#[cfg(not(any(target_arch = "aarch64", target_arch = "riscv64")))]
pub const CHAR_MAX: c_char = 0x7F;
pub const SCHAR_MAX: c_schar = 0x7F;
pub const SHRT_MAX: c_short = 0x7FFF;
pub const INT_MAX: c_int = 0x7FFF_FFFF;
#[cfg(target_pointer_width = "32")]
pub const LONG_MAX: c_long = 0x7FFF_FFFF;
#[cfg(target_pointer_width = "64")]
pub const LONG_MAX: c_long = 0x7FFF_FFFF_FFFF_FFFF;
pub const LLONG_MAX: c_longlong = 0x7FFF_FFFF_FFFF_FFFF;
#[cfg(target_pointer_width = "32")]
pub const SSIZE_MAX: ssize_t = 0x7FFF_FFFF;
#[cfg(target_pointer_width = "64")]
pub const SSIZE_MAX: ssize_t = 0x7FFF_FFFF_FFFF_FFFF;
pub const UCHAR_MAX: c_uchar = 0xFF;
pub const USHRT_MAX: c_ushort = 0xFFFF;
pub const UINT_MAX: c_uint = 0xFFFFFFFF;
#[cfg(target_pointer_width = "32")]
pub const ULONG_MAX: c_ulong = 0xFFFF_FFFF;
#[cfg(target_pointer_width = "64")]
pub const ULONG_MAX: c_ulong = 0xFFFF_FFFF_FFFF_FFFF;
pub const ULLONG_MAX: c_ulonglong = 0xFFFF_FFFF_FFFF_FFFF;
#[cfg(any(target_arch = "aarch64", target_arch = "riscv64"))]
pub const CHAR_MIN: c_char = 0;
#[cfg(not(any(target_arch = "aarch64", target_arch = "riscv64")))]
pub const CHAR_MIN: c_char = -0x80;
pub const SCHAR_MIN: c_schar = -SCHAR_MAX - 1;
pub const SHRT_MIN: c_short = -SHRT_MAX - 1;
pub const INT_MIN: c_int = -INT_MAX - 1;
pub const LONG_MIN: c_long = -LONG_MAX - 1;
pub const LLONG_MIN: c_longlong = -LLONG_MAX - 1;
// TODO: 4096 for most architectures as determined by a quick grep of musl's source; need a better
// way to determine it for other archs or to hard code a value.
#[cfg(target_os = "linux")]