rust/library/std/src/sys_common
Matthias Krüger c348beacea
Rollup merge of #97140 - joboet:solid_parker, r=m-ou-se
std: use an event-flag-based thread parker on SOLID

`Mutex` and `Condvar` are being replaced by more efficient implementations, which need thread parking themselves (see #93740). Therefore, the generic `Parker` needs to be replaced on all platforms where the new lock implementation will be used, which, after #96393, are SOLID, SGX and Hermit (more PRs coming soon).

SOLID, conforming to the [μITRON specification](http://www.ertl.jp/ITRON/SPEC/FILE/mitron-400e.pdf), has event flags, which are a thread parking primitive very similar to `Parker`. However, they do not make any atomic ordering guarantees (even though those can probably be assumed) and necessitate a system call even when the thread token is already available. Hence, this `Parker`, like the Windows parker, uses an extra atomic state variable.

I future-proofed the code by wrapping the event flag in a `WaitFlag` structure, as both SGX and Hermit can share the Parker implementation, they just have slightly different primitives (SGX uses signals and Hermit has a thread blocking API).

`````@kawadakk````` I assume you are the target maintainer? Could you test this for me?
2022-06-26 19:46:59 +02:00
..
condvar Lazily allocate+initialize locks. 2022-06-03 17:04:14 +02:00
memchr Move std::memchr to sys_common 2021-05-14 03:54:46 +02:00
net Use implicit capture syntax in format_args 2022-03-10 10:23:40 -05:00
remutex Fix more “a”/“an” typos 2021-08-22 16:35:29 +02:00
thread_local_key std: move "mod tests/benches" to separate files 2020-08-31 02:56:59 +00:00
thread_parker Rollup merge of #97140 - joboet:solid_parker, r=m-ou-se 2022-06-26 19:46:59 +02:00
wtf8 Use implicit capture syntax in format_args 2022-03-10 10:23:40 -05:00
backtrace.rs Use implicit capture syntax in format_args 2022-03-10 10:23:40 -05:00
condvar.rs Make all {Mutex, Condvar, RwLock}::new #[inline]. 2022-06-06 13:49:23 +02:00
fs.rs Hide Repr details from io::Error, and rework io::Error::new_const. 2022-02-04 18:47:29 -08:00
io.rs Avoid double panics when using TempDir in tests 2022-01-25 10:36:10 +00:00
lazy_box.rs Leak pthreax_mutex_t when it's dropped while locked. 2022-06-16 12:09:12 +02:00
memchr.rs Move std::memchr to sys_common 2021-05-14 03:54:46 +02:00
mod.rs Lazily allocate+initialize locks. 2022-06-03 17:04:14 +02:00
mutex.rs Remove lies in comments. 2022-06-20 23:02:21 +02:00
net.rs Lower listen backlog to fix accept crashes 2022-06-13 20:44:56 -07:00
process.rs Remove CommandEnv::apply 2021-12-29 10:07:44 +01:00
remutex.rs Use Drop instead of destroy() for locks. 2022-06-03 16:45:47 +02:00
rwlock.rs Remove lies in comments. 2022-06-20 23:02:21 +02:00
tests.rs std: move "mod tests/benches" to separate files 2020-08-31 02:56:59 +00:00
thread.rs Relax memory ordering used in min_stack 2022-05-01 15:55:54 -07:00
thread_info.rs Merge two THREAD_INFO.with and following RefCell borrow 2021-09-16 15:24:53 +02:00
thread_local_dtor.rs Remove "sys isn't exported yet" phrase 2022-05-30 12:07:43 +02:00
thread_local_key.rs Remove "sys isn't exported yet" phrase 2022-05-30 12:07:43 +02:00
wtf8.rs Use Rust 2021 prelude in std itself. 2022-05-09 11:12:32 +02:00