Mara Bos
4f212f08cf
Use Rust 2021 prelude in std itself.
2022-05-09 11:12:32 +02:00
Josh Stone
bee923f0df
unix: always use 64-bit Timespec
2022-05-06 08:50:51 -07:00
Mara Bos
9299e6915d
Round timeouts up to infinite in futex_wait on DragonFlyBSD.
2022-05-03 12:37:52 +02:00
Mara Bos
8ee9b93c4f
Add #[cfg] in cfg_if for linux in unix/futex.
2022-05-03 12:37:52 +02:00
Mara Bos
7b7d1d6c48
Don't use futexes on netbsd.
...
The latest NetBSD release doesn't include the futex syscall yet.
2022-05-03 12:26:17 +02:00
Mara Bos
c4c69143a9
Always return false in futex_wake on {Free,DragonFly}BSD.
2022-04-29 16:45:17 +02:00
Mara Bos
04b0bc97bb
Use futex-based locks and thread parker on FreeBSD.
2022-04-29 16:45:17 +02:00
Mara Bos
69f0bcb26d
Use futex-based locks and thread parker on DragonFlyBSD.
2022-04-29 16:30:54 +02:00
Mara Bos
2dfad1e3f8
Use futex-based locks and thread parker on NetBSD.
2022-04-29 16:30:54 +02:00
Mara Bos
afe1a256ce
Use futex-based locks and thread parker on OpenBSD.
2022-04-29 16:30:54 +02:00
Mara Bos
6abdd0b6d4
Make std::sys::unix::futex consistent on emscripten.
2022-04-19 09:19:29 +02:00
Mara Bos
7a35c0f52d
Use u32 instead of i32 for futexes.
2022-04-14 11:44:12 +02:00
Mara Bos
7c28791565
Add doc comments to futex operations.
2022-04-11 14:26:52 +02:00
Mara Bos
f1a40410ec
Return status from futex_wake().
2022-04-07 11:34:35 +02:00
Mara Bos
c49887da27
Add comment about futex_wait timeout.
2022-04-01 11:10:58 +02:00
Mara Bos
c9ae3fe68f
Explicitly use CLOCK_MONOTONIC in futex_wait.
...
Instant might be changed to use CLOCK_BOOTTIME at some point.
2022-03-24 11:11:31 +01:00
Mara Bos
87299298d9
Use FUTEX_WAIT_BITSET rather than FUTEX_WAIT on Linux.
2022-03-24 09:51:48 +01:00
Mara Bos
73d63488e4
Add futex_wake_all.
2022-03-23 14:53:59 +01:00
Mara Bos
4fbd71c943
Return timeout status in futex_wait.
2022-03-23 14:53:59 +01:00
J. Ryan Stinnett
bf3be09ee8
Fix timeout conversion
2020-11-12 03:40:15 +00:00
J. Ryan Stinnett
951576051b
Update thread and futex APIs to work with Emscripten
...
This updates the thread and futex APIs in `std` to match the APIs exposed by
Emscripten. This allows threads to run on `wasm32-unknown-emscripten` and the
thread parker to compile without errors related to the missing `futex` module.
To make use of this, Rust code must be compiled with `-C target-feature=atomics`
and Emscripten must link with `-pthread`.
I have confirmed this works well locally when building multithreaded crates.
Attempting to enable `std` thread tests currently fails for seemingly obscure
reasons and Emscripten is currently disabled in CI, so further work is needed to
have proper test coverage here.
2020-11-12 01:41:49 +00:00
Mara Bos
485f882d77
Check conversion from Duration to timespec in futex_wait.
2020-09-27 11:56:43 +02:00
Mara Bos
2cf0f64722
Move linux-specific futex code into sys module.
2020-09-27 11:56:43 +02:00