Rollup merge of #124721 - ids1024:netbsd-32-bit-ulong, r=workingjubilee

library/std: Fix build for NetBSD targets with 32-bit `c_long`

This fixes building `std` for targets like `mipsel-unknown-netbsd`.

If `c_long` is an `i64`, this conversion works with `Into`. But if it's an `i32`, this failed to convert a `u32` to an `i32`.
This commit is contained in:
Matthias Krüger 2024-05-04 22:27:34 +02:00 committed by GitHub
commit 4577b1a7d3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -5,7 +5,7 @@
use crate::ffi::{c_int, c_void}; use crate::ffi::{c_int, c_void};
use crate::ptr; use crate::ptr;
use crate::time::Duration; use crate::time::Duration;
use libc::{_lwp_self, clockid_t, lwpid_t, time_t, timespec, CLOCK_MONOTONIC}; use libc::{_lwp_self, c_long, clockid_t, lwpid_t, time_t, timespec, CLOCK_MONOTONIC};
extern "C" { extern "C" {
fn ___lwp_park60( fn ___lwp_park60(
@ -38,7 +38,7 @@ pub fn park_timeout(dur: Duration, hint: usize) {
// Saturate so that the operation will definitely time out // Saturate so that the operation will definitely time out
// (even if it is after the heat death of the universe). // (even if it is after the heat death of the universe).
tv_sec: dur.as_secs().try_into().ok().unwrap_or(time_t::MAX), tv_sec: dur.as_secs().try_into().ok().unwrap_or(time_t::MAX),
tv_nsec: dur.subsec_nanos().into(), tv_nsec: dur.subsec_nanos() as c_long,
}; };
// Timeout needs to be mutable since it is modified on NetBSD 9.0 and // Timeout needs to be mutable since it is modified on NetBSD 9.0 and