diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:18:32 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:18:32 +0000 |
commit | 4547b622d8d29df964fa2914213088b148c498fc (patch) | |
tree | 9fc6b25f3c3add6b745be9a2400a6e96140046e9 /vendor/parking_lot_core | |
parent | Releasing progress-linux version 1.66.0+dfsg1-1~progress7.99u1. (diff) | |
download | rustc-4547b622d8d29df964fa2914213088b148c498fc.tar.xz rustc-4547b622d8d29df964fa2914213088b148c498fc.zip |
Merging upstream version 1.67.1+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/parking_lot_core')
7 files changed, 69 insertions, 56 deletions
diff --git a/vendor/parking_lot_core/.cargo-checksum.json b/vendor/parking_lot_core/.cargo-checksum.json index 25f569e0b..196164748 100644 --- a/vendor/parking_lot_core/.cargo-checksum.json +++ b/vendor/parking_lot_core/.cargo-checksum.json @@ -1 +1 @@ -{"files":{"Cargo.toml":"ce9a63db10b0941d6bfe4e6cacd2ae3fe330a9c2cf1ba221578f46402fd23ed9","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"c9a75f18b9ab2927829a208fc6aa2cf4e63b8420887ba29cdb265d6619ae82d5","build.rs":"29e629057144d1238dcd8ea70ad6cbb6ec14ca742797af3fa9335710ff5cbaaa","src/lib.rs":"def53c1ff1d4a05e6261aa9b75ac089a51ecc15642e1320202e5c6836e2bb732","src/parking_lot.rs":"509f15c9f578187032063d2791cf71b2bfa8d4d0f29a2779bfdb0a87b03186dd","src/spinwait.rs":"0d73980c72e84fd75c73693f0b351e097353b46f4b8aaa67b3dde7c721817bf7","src/thread_parker/generic.rs":"6cd0e99511fda16ab5830ebaf0a3c9ff935b96e27a905373508e54021f186508","src/thread_parker/linux.rs":"6837304ca62e1774b0d811f9a61f4a7a70b8914a905b69aa4808220fb9063879","src/thread_parker/mod.rs":"afaf652e242d5235d38f5749f3b12dc6def793dee40cd6c820e1dd45a70a5ac8","src/thread_parker/redox.rs":"38fbede41817b6606a5612ee9456940eaf627540a4aa39de8452e355ca1df306","src/thread_parker/sgx.rs":"3b6190eb90fd88d5eee5370213a1de408cce24ded04bfb0f374c3bbf10752187","src/thread_parker/unix.rs":"857d687674523f8ca3bbd8097257293c3a443b21b60066270ceed9abdd9a445e","src/thread_parker/wasm.rs":"86e954d009d57d2dfdbca71e5c0f116a99a182af83b7e51ed5b14fc55b2f7b01","src/thread_parker/wasm_atomic.rs":"6fbc09accc9df9d42444cec6f55d3eed2c7078a474485fa269a9f503da2ee1c5","src/thread_parker/windows/keyed_event.rs":"9adb0c830bc49c32e3ae609577e2205c42fb84d49a7abe2891f4e647e3bf1829","src/thread_parker/windows/mod.rs":"3073e82ecc46d713b2c4296459ead9f3788d29e7b5c9be4b68d29d98b5a803ce","src/thread_parker/windows/waitaddress.rs":"4681fc85e71ff9313ece440e14f3a0309b735813133f7372895730d557672f64","src/util.rs":"285e6133150645525f2ca1ece41f6d35bad4e7c5e08b42b20c99d2a97e04a974","src/word_lock.rs":"9ba49082359c35ad5b4e8d219fede1ffca75225f9ccb971cbba01f20e2ed2738"},"package":"09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929"}
\ No newline at end of file +{"files":{"Cargo.toml":"894a414fd99c9650a87b880fbc3b14e35e7bb33eb9c318404ec260a7a9b34fb9","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"c9a75f18b9ab2927829a208fc6aa2cf4e63b8420887ba29cdb265d6619ae82d5","build.rs":"29e629057144d1238dcd8ea70ad6cbb6ec14ca742797af3fa9335710ff5cbaaa","src/lib.rs":"def53c1ff1d4a05e6261aa9b75ac089a51ecc15642e1320202e5c6836e2bb732","src/parking_lot.rs":"b08d6c00de6fc342a1b4f0268b056789ad1300aa8a9c4fb7ad4d49514cfab72c","src/spinwait.rs":"0d73980c72e84fd75c73693f0b351e097353b46f4b8aaa67b3dde7c721817bf7","src/thread_parker/generic.rs":"414bd3114b40f7665efe59fa4c5033d2401eafc58b57a9ba5803949d26cc0454","src/thread_parker/linux.rs":"6837304ca62e1774b0d811f9a61f4a7a70b8914a905b69aa4808220fb9063879","src/thread_parker/mod.rs":"afaf652e242d5235d38f5749f3b12dc6def793dee40cd6c820e1dd45a70a5ac8","src/thread_parker/redox.rs":"38fbede41817b6606a5612ee9456940eaf627540a4aa39de8452e355ca1df306","src/thread_parker/sgx.rs":"3b6190eb90fd88d5eee5370213a1de408cce24ded04bfb0f374c3bbf10752187","src/thread_parker/unix.rs":"4a314ea3b0b2a22cd3857bedcd1d15d843365acbc085f0cdc9ae085d600760da","src/thread_parker/wasm.rs":"86e954d009d57d2dfdbca71e5c0f116a99a182af83b7e51ed5b14fc55b2f7b01","src/thread_parker/wasm_atomic.rs":"6fbc09accc9df9d42444cec6f55d3eed2c7078a474485fa269a9f503da2ee1c5","src/thread_parker/windows/keyed_event.rs":"758b475e6931d5cb8715786e8ef3b4e6b0d017fb163ea5d8cc8b6b728454238b","src/thread_parker/windows/mod.rs":"3073e82ecc46d713b2c4296459ead9f3788d29e7b5c9be4b68d29d98b5a803ce","src/thread_parker/windows/waitaddress.rs":"8eee4b444a00e7ad83bdc50eb4b4af36610dfa4690329e8947962fef04cb1000","src/util.rs":"285e6133150645525f2ca1ece41f6d35bad4e7c5e08b42b20c99d2a97e04a974","src/word_lock.rs":"9ba49082359c35ad5b4e8d219fede1ffca75225f9ccb971cbba01f20e2ed2738"},"package":"4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0"}
\ No newline at end of file diff --git a/vendor/parking_lot_core/Cargo.toml b/vendor/parking_lot_core/Cargo.toml index 4706c434a..f4daf6f02 100644 --- a/vendor/parking_lot_core/Cargo.toml +++ b/vendor/parking_lot_core/Cargo.toml @@ -12,7 +12,7 @@ [package] edition = "2018" name = "parking_lot_core" -version = "0.9.3" +version = "0.9.4" authors = ["Amanieu d'Antras <amanieu@gmail.com>"] description = "An advanced API for creating custom synchronization primitives." keywords = [ @@ -59,7 +59,7 @@ version = "0.2.8" version = "0.2.95" [target."cfg(windows)".dependencies.windows-sys] -version = "0.36.0" +version = "0.42.0" features = [ "Win32_Foundation", "Win32_System_LibraryLoader", diff --git a/vendor/parking_lot_core/src/parking_lot.rs b/vendor/parking_lot_core/src/parking_lot.rs index 9b8452582..b3886197d 100644 --- a/vendor/parking_lot_core/src/parking_lot.rs +++ b/vendor/parking_lot_core/src/parking_lot.rs @@ -724,6 +724,10 @@ pub unsafe fn park( /// /// The `callback` function is called while the queue is locked and must not /// panic or call into any function in `parking_lot`. +/// +/// The `parking_lot` functions are not re-entrant and calling this method +/// from the context of an asynchronous signal handler may result in undefined +/// behavior, including corruption of internal state and/or deadlocks. #[inline] pub unsafe fn unpark_one( key: usize, @@ -801,6 +805,10 @@ pub unsafe fn unpark_one( /// You should only call this function with an address that you control, since /// you could otherwise interfere with the operation of other synchronization /// primitives. +/// +/// The `parking_lot` functions are not re-entrant and calling this method +/// from the context of an asynchronous signal handler may result in undefined +/// behavior, including corruption of internal state and/or deadlocks. #[inline] pub unsafe fn unpark_all(key: usize, unpark_token: UnparkToken) -> usize { // Lock the bucket for the given key diff --git a/vendor/parking_lot_core/src/thread_parker/generic.rs b/vendor/parking_lot_core/src/thread_parker/generic.rs index 990bcb7fc..93c94faf7 100644 --- a/vendor/parking_lot_core/src/thread_parker/generic.rs +++ b/vendor/parking_lot_core/src/thread_parker/generic.rs @@ -8,8 +8,8 @@ //! A simple spin lock based thread parker. Used on platforms without better //! parking facilities available. -use core::sync::atomic::{AtomicBool, Ordering}; use core::hint::spin_loop; +use core::sync::atomic::{AtomicBool, Ordering}; use std::thread; use std::time::Instant; diff --git a/vendor/parking_lot_core/src/thread_parker/unix.rs b/vendor/parking_lot_core/src/thread_parker/unix.rs index a75e1768b..88b6df839 100644 --- a/vendor/parking_lot_core/src/thread_parker/unix.rs +++ b/vendor/parking_lot_core/src/thread_parker/unix.rs @@ -127,12 +127,22 @@ impl super::ThreadParkerT for ThreadParker { impl ThreadParker { /// Initializes the condvar to use CLOCK_MONOTONIC instead of CLOCK_REALTIME. - #[cfg(any(target_os = "macos", target_os = "ios", target_os = "android", target_os = "espidf"))] + #[cfg(any( + target_os = "macos", + target_os = "ios", + target_os = "android", + target_os = "espidf" + ))] #[inline] unsafe fn init(&self) {} /// Initializes the condvar to use CLOCK_MONOTONIC instead of CLOCK_REALTIME. - #[cfg(not(any(target_os = "macos", target_os = "ios", target_os = "android", target_os = "espidf")))] + #[cfg(not(any( + target_os = "macos", + target_os = "ios", + target_os = "android", + target_os = "espidf" + )))] #[inline] unsafe fn init(&self) { let mut attr = MaybeUninit::<libc::pthread_condattr_t>::uninit(); diff --git a/vendor/parking_lot_core/src/thread_parker/windows/keyed_event.rs b/vendor/parking_lot_core/src/thread_parker/windows/keyed_event.rs index bbe45a4cc..302bab585 100644 --- a/vendor/parking_lot_core/src/thread_parker/windows/keyed_event.rs +++ b/vendor/parking_lot_core/src/thread_parker/windows/keyed_event.rs @@ -55,42 +55,40 @@ impl KeyedEvent { #[allow(non_snake_case)] pub fn create() -> Option<KeyedEvent> { - unsafe { - let ntdll = GetModuleHandleA(b"ntdll.dll\0".as_ptr()); - if ntdll == 0 { - return None; - } - - let NtCreateKeyedEvent = - GetProcAddress(ntdll, b"NtCreateKeyedEvent\0".as_ptr())?; - let NtReleaseKeyedEvent = - GetProcAddress(ntdll, b"NtReleaseKeyedEvent\0".as_ptr())?; - let NtWaitForKeyedEvent = - GetProcAddress(ntdll, b"NtWaitForKeyedEvent\0".as_ptr())?; - - let NtCreateKeyedEvent: extern "system" fn( - KeyedEventHandle: *mut HANDLE, - DesiredAccess: u32, - ObjectAttributes: *mut ffi::c_void, - Flags: u32, - ) -> NTSTATUS = mem::transmute(NtCreateKeyedEvent); - let mut handle = MaybeUninit::uninit(); - let status = NtCreateKeyedEvent( - handle.as_mut_ptr(), - GENERIC_READ | GENERIC_WRITE, - ptr::null_mut(), - 0, - ); - if status != STATUS_SUCCESS { - return None; - } + let ntdll = unsafe { GetModuleHandleA(b"ntdll.dll\0".as_ptr()) }; + if ntdll == 0 { + return None; + } - Some(KeyedEvent { - handle: handle.assume_init(), - NtReleaseKeyedEvent: mem::transmute(NtReleaseKeyedEvent), - NtWaitForKeyedEvent: mem::transmute(NtWaitForKeyedEvent), - }) + let NtCreateKeyedEvent = + unsafe { GetProcAddress(ntdll, b"NtCreateKeyedEvent\0".as_ptr())? }; + let NtReleaseKeyedEvent = + unsafe { GetProcAddress(ntdll, b"NtReleaseKeyedEvent\0".as_ptr())? }; + let NtWaitForKeyedEvent = + unsafe { GetProcAddress(ntdll, b"NtWaitForKeyedEvent\0".as_ptr())? }; + + let NtCreateKeyedEvent: extern "system" fn( + KeyedEventHandle: *mut HANDLE, + DesiredAccess: u32, + ObjectAttributes: *mut ffi::c_void, + Flags: u32, + ) -> NTSTATUS = unsafe { mem::transmute(NtCreateKeyedEvent) }; + let mut handle = MaybeUninit::uninit(); + let status = NtCreateKeyedEvent( + handle.as_mut_ptr(), + GENERIC_READ | GENERIC_WRITE, + ptr::null_mut(), + 0, + ); + if status != STATUS_SUCCESS { + return None; } + + Some(KeyedEvent { + handle: unsafe { handle.assume_init() }, + NtReleaseKeyedEvent: unsafe { mem::transmute(NtReleaseKeyedEvent) }, + NtWaitForKeyedEvent: unsafe { mem::transmute(NtWaitForKeyedEvent) }, + }) } #[inline] diff --git a/vendor/parking_lot_core/src/thread_parker/windows/waitaddress.rs b/vendor/parking_lot_core/src/thread_parker/windows/waitaddress.rs index dde0db7b6..ef6cb44e3 100644 --- a/vendor/parking_lot_core/src/thread_parker/windows/waitaddress.rs +++ b/vendor/parking_lot_core/src/thread_parker/windows/waitaddress.rs @@ -32,24 +32,21 @@ pub struct WaitAddress { impl WaitAddress { #[allow(non_snake_case)] pub fn create() -> Option<WaitAddress> { - unsafe { - // MSDN claims that that WaitOnAddress and WakeByAddressSingle are - // located in kernel32.dll, but they are lying... - let synch_dll = - GetModuleHandleA(b"api-ms-win-core-synch-l1-2-0.dll\0".as_ptr()); - if synch_dll == 0 { - return None; - } + // MSDN claims that that WaitOnAddress and WakeByAddressSingle are + // located in kernel32.dll, but they are lying... + let synch_dll = unsafe { GetModuleHandleA(b"api-ms-win-core-synch-l1-2-0.dll\0".as_ptr()) }; + if synch_dll == 0 { + return None; + } - let WaitOnAddress = GetProcAddress(synch_dll, b"WaitOnAddress\0".as_ptr())?; - let WakeByAddressSingle = - GetProcAddress(synch_dll, b"WakeByAddressSingle\0".as_ptr())?; + let WaitOnAddress = unsafe { GetProcAddress(synch_dll, b"WaitOnAddress\0".as_ptr())? }; + let WakeByAddressSingle = + unsafe { GetProcAddress(synch_dll, b"WakeByAddressSingle\0".as_ptr())? }; - Some(WaitAddress { - WaitOnAddress: mem::transmute(WaitOnAddress), - WakeByAddressSingle: mem::transmute(WakeByAddressSingle), - }) - } + Some(WaitAddress { + WaitOnAddress: unsafe { mem::transmute(WaitOnAddress) }, + WakeByAddressSingle: unsafe { mem::transmute(WakeByAddressSingle) }, + }) } #[inline] |