rust/library/std/src
Ali Saidi a333b91e5b linux/aarch64 Now() should be actually_monotonic()
While issues have been seen on arm64 platforms the Arm architecture requires
that the counter monotonically increases and that it must provide a uniform
view of system time (e.g. it must not be possible for a core to receive a
message from another core with a time stamp and observe time going backwards
(ARM DDI 0487G.b D11.1.2). While there have been a few 64bit SoCs that have
bugs (#49281, #56940) which cause time to not monotonically increase, these have
been fixed in the Linux kernel and we shouldn't penalize all Arm SoCs for those
who refuse to update their kernels:
SUN50I_ERRATUM_UNKNOWN1 - Allwinner A64 / Pine A64 - fixed in 5.1
FSL_ERRATUM_A008585 - Freescale LS2080A/LS1043A - fixed in 4.10
HISILICON_ERRATUM_161010101 - Hisilicon 1610 - fixed in 4.11
ARM64_ERRATUM_858921 - Cortex A73 - fixed in 4.12

255a3f3e18 std: Force `Instant::now()` to be monotonic added a mutex to work around
this problem and a small test program using glommio shows the majority of time spent
acquiring and releasing this Mutex. 3914a7b0da tries to improve this, but actually
makes it worse on big systems as for 128b atomics a ldxp/stxp pair (and
successful loop) is required which is expensive as a lock and because of how
the load/store-exclusives scale on large Arm systems is both unfair to threads
and tends to go backwards in performance.
2021-09-04 15:28:16 -05:00
..
backtrace Add Frames iterator for Backtrace 2021-01-23 11:56:33 -06:00
collections Rollup merge of #88230 - steffahn:a_an, r=oli-obk 2021-08-23 20:45:49 +02:00
env std: move "mod tests/benches" to separate files 2020-08-31 02:56:59 +00:00
error std: move "mod tests/benches" to separate files 2020-08-31 02:56:59 +00:00
f32 More lerp tests, altering lerp docs 2021-06-13 14:00:15 -04:00
f64 More lerp tests, altering lerp docs 2021-06-13 14:00:15 -04:00
ffi Fix typo “a Rc” → “an Rc” 2021-08-24 02:23:16 +02:00
fs Fix may not to appropriate might not or must not 2021-07-29 01:15:20 -04:00
io Rollup merge of #88299 - ijackson:bufwriter, r=Mark-Simulacrum 2021-08-25 15:49:01 +02:00
lazy Upgrade wasm32 image to Ubuntu 20.04 2021-02-06 13:05:56 +01:00
net Rollup merge of #88524 - soenkehahn:master, r=jyn514 2021-08-31 17:55:02 +02:00
num rustc_expand: Mark inner #![test] attributes as soft-unstable 2020-11-20 19:35:03 +03:00
os Rollup merge of #88177 - joshtriplett:stabilize-chroot, r=m-ou-se 2021-09-02 19:10:12 +02:00
panic review: fix nits and move panic safety tests to the correct place 2020-09-25 23:10:24 +02:00
path Auto merge of #85166 - mbhall88:file-prefix, r=dtolnay 2021-08-22 05:19:48 +00:00
prelude Move asm! and global_asm! to core::arch 2021-07-18 18:30:58 -04:00
process Test that env_clear works on Windows 2021-06-24 09:32:24 +01:00
sync Fix may not to appropriate might not or must not 2021-07-29 01:15:20 -04:00
sys linux/aarch64 Now() should be actually_monotonic() 2021-09-04 15:28:16 -05:00
sys_common add TcpStream::set_linger and TcpStream::linger 2021-08-30 13:42:52 -04:00
thread removed references to parent/child from std::thread documentation 2021-08-07 11:33:18 -04:00
time Fix typos “an”→“a” and a few different ones that appeared in the same search 2021-08-22 18:15:49 +02:00
alloc.rs Rename rterr to rtprintpanic 2021-05-19 15:52:09 +02:00
ascii.rs Convert many files to intra-doc links 2020-09-02 17:37:40 -04:00
backtrace.rs Fix may not to appropriate might not or must not 2021-07-29 01:15:20 -04:00
env.rs Document std::env::current_exe rename behaviour 2021-08-27 14:25:29 +01:00
error.rs Rollup merge of #82179 - mbartlett21:patch-5, r=joshtriplett 2021-06-15 17:40:03 +09:00
f32.rs Fix may not to appropriate might not or must not 2021-07-29 01:15:20 -04:00
f64.rs Fix may not to appropriate might not or must not 2021-07-29 01:15:20 -04:00
fs.rs Add comments about impls for File, TcpStream, ChildStdin, etc. 2021-08-19 12:02:40 -07:00
keyword_docs.rs Fix typos “an”→“a” and a few different ones that appeared in the same search 2021-08-22 18:15:49 +02:00
lazy.rs Constified Default implementations 2021-08-17 07:15:54 +00:00
lib.rs Auto merge of #87580 - ChrisDenton:win-arg-parse-2008, r=m-ou-se 2021-09-02 16:16:13 +00:00
macros.rs bump bootstrap compiler to 1.55 2021-08-01 11:19:24 -04:00
num.rs Add Saturating type (based on Wrapping type) 2021-08-10 19:27:01 +02:00
panic.rs Move UnwindSafe, RefUnwindSafe, AssertUnwindSafe to core 2021-07-30 10:42:15 -07:00
panicking.rs rustc: Fill out remaining parts of C-unwind ABI 2021-08-03 07:06:19 -07:00
path.rs Auto merge of #85166 - mbhall88:file-prefix, r=dtolnay 2021-08-22 05:19:48 +00:00
primitive_docs.rs Update primitive docs for rust 2021. 2021-09-03 12:49:37 +02:00
process.rs Add comments about impls for File, TcpStream, ChildStdin, etc. 2021-08-19 12:02:40 -07:00
rt.rs Change entry point to 🛡️ against 💥 💥-payloads 2021-06-19 11:46:56 +03:00
time.rs linux/aarch64 Now() should be actually_monotonic() 2021-09-04 15:28:16 -05:00