Skip to content
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Fix cfg
  • Loading branch information
youknowone committed Dec 25, 2025
commit 4af41d3462cbcc82119cbee4ceb9b93160d9eb59
15 changes: 9 additions & 6 deletions crates/stdlib/src/multiprocessing.rs
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ mod _multiprocessing {
}
}

#[cfg(unix)]
// Apple platforms don't support sem_timedwait/sem_getvalue in libc crate
#[cfg(all(unix, not(target_vendor = "apple")))]
#[pymodule]
mod _multiprocessing {
use crate::vm::{
Expand All @@ -57,10 +58,6 @@ mod _multiprocessing {
sync::atomic::{AtomicU64, AtomicUsize, Ordering},
time::Duration,
};
unsafe extern "C" {
fn sem_getvalue(sem: *mut sem_t, sval: *mut libc::c_int) -> libc::c_int;
fn sem_timedwait(sem: *mut sem_t, abs_timeout: *const libc::timespec) -> libc::c_int;
}

const RECURSIVE_MUTEX_KIND: i32 = 0;
const SEMAPHORE_KIND: i32 = 1;
Expand Down Expand Up @@ -381,9 +378,10 @@ mod _multiprocessing {
fn wait_timeout(&self, duration: Duration, vm: &VirtualMachine) -> PyResult<bool> {
let mut ts = current_timespec(vm)?;
let nsec_total = ts.tv_nsec as i64 + i64::from(duration.subsec_nanos());
let extra_secs = (nsec_total / 1_000_000_000) as libc::time_t;
ts.tv_sec = ts
.tv_sec
.saturating_add(duration.as_secs() as libc::time_t + nsec_total / 1_000_000_000);
.saturating_add(duration.as_secs() as libc::time_t + extra_secs);
ts.tv_nsec = (nsec_total % 1_000_000_000) as _;
loop {
let res = unsafe { libc::sem_timedwait(self.handle.as_ptr(), &ts) };
Expand Down Expand Up @@ -480,6 +478,11 @@ mod _multiprocessing {
}
}

// Apple platforms (macOS, iOS, etc.) - empty module
#[cfg(all(unix, target_vendor = "apple"))]
#[pymodule]
mod _multiprocessing {}

#[cfg(all(not(unix), not(windows)))]
#[pymodule]
mod _multiprocessing {}
Loading