rust/library/std/src/sys_common
Michael Goulet ff3326d925
Rollup merge of #105903 - joboet:unify_parking, r=m-ou-se
Unify id-based thread parking implementations

Multiple platforms currently use thread-id-based parking implementations (NetBSD and SGX[^1]). Even though the strategy does not differ, these are duplicated for each platform, as the id is encoded into an atomic thread variable in different ways for each platform.

Since `park` is only called by one thread, it is possible to move the thread id into a separate field. By ensuring that the field is only written to once, before any other threads access it, these accesses can be unsynchronized, removing any restrictions on the size and niches of the thread id.

This PR also renames the internal `thread_parker` modules to `thread_parking`, as that name now better reflects their contents. I hope this does not add too much reviewing noise.

r? `@m-ou-se`

`@rustbot` label +T-libs

[^1]: SOLID supports this as well, I will switch it over in a follow-up PR.
2022-12-30 21:26:33 -08: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
once std: use a more efficient Once on platforms without threads 2022-12-14 13:55:30 +01:00
thread_local_key avoid some int2ptr casts in thread_local_key tests 2022-08-11 09:39:25 -04:00
thread_parking std: rename Parker::new to Parker::new_in_place, add safe Parker::new constructor for SGX 2022-12-30 15:49:47 +01:00
wtf8 Remove is_known_utf8 checks from more tests where it's no longer set. 2022-06-23 13:10:47 -07:00
backtrace.rs Replace libstd, libcore, liballoc in line comments. 2022-12-30 14:00:42 +01: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 std: unify id-based thread parking implementations 2022-12-29 17:45:07 +01:00
net.rs Reduce CString allocations in std as much as possible 2022-10-03 11:13:17 -07:00
process.rs More verbose Debug implementation of std::process:Command 2022-12-27 09:50:01 +01: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 Make sentinel value configurable 2022-12-06 09:38:09 +01:00
wstr.rs Extract WStrUnits to sys_common::wstr 2022-11-28 21:17:08 +05:30
wtf8.rs Auto merge of #96869 - sunfishcode:main, r=joshtriplett 2022-08-24 01:17:52 +00:00