summaryrefslogtreecommitdiff
path: root/src/sys
diff options
context:
space:
mode:
authorнаб <nabijaczleweli@nabijaczleweli.xyz>2020-12-27 18:00:29 +0100
committerнаб <nabijaczleweli@nabijaczleweli.xyz>2021-02-15 18:59:47 +0100
commit1f69c1da2facf7d5d14d290081d58813744c687e (patch)
treeb714f8c05bbc6ab6a956fa139758f0f65fc08d55 /src/sys
parent2abfdb4123f55e3475d8c1b10436682b511de09b (diff)
downloadnix-1f69c1da2facf7d5d14d290081d58813744c687e.zip
Port sysinfo to x32
Diffstat (limited to 'src/sys')
-rw-r--r--src/sys/sysinfo.rs8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/sys/sysinfo.rs b/src/sys/sysinfo.rs
index f4b82798..222a2fc0 100644
--- a/src/sys/sysinfo.rs
+++ b/src/sys/sysinfo.rs
@@ -10,6 +10,12 @@ use crate::errno::Errno;
#[repr(transparent)]
pub struct SysInfo(libc::sysinfo);
+// The fields are c_ulong on 32-bit linux, u64 on 64-bit linux; x32's ulong is u32
+#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
+type mem_blocks_t = u64;
+#[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))]
+type mem_blocks_t = libc::c_ulong;
+
impl SysInfo {
/// Returns the load average tuple.
///
@@ -58,7 +64,7 @@ impl SysInfo {
self.scale_mem(self.0.freeram)
}
- fn scale_mem(&self, units: libc::c_ulong) -> u64 {
+ fn scale_mem(&self, units: mem_blocks_t) -> u64 {
units as u64 * self.0.mem_unit as u64
}
}