about summary refs log tree commit diff
path: root/library/std
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2024-06-02 15:42:33 +0000
committerbors <bors@rust-lang.org>2024-06-02 15:42:33 +0000
commiteda9d7f987de76b9d61c633a6ac328936e1b94f0 (patch)
treef998c827b8c7aae3cb09616f9a22379167d76b6e /library/std
parent5e6c2b6092d63705368cfb96c91188f77b722eaf (diff)
parent073e5d4a2a5eff241b87bafeb636b0c94f2f3f47 (diff)
downloadrust-eda9d7f987de76b9d61c633a6ac328936e1b94f0.tar.gz
rust-eda9d7f987de76b9d61c633a6ac328936e1b94f0.zip
Auto merge of #125577 - devnexen:netbsd_stack_min, r=joboet
std::pal::unix::thread fetching min stack size on netbsd.

PTHREAD_STACK_MIN is not defined however sysconf/_SC_THREAD_STACK_MIN returns it as it can vary from arch to another.
Diffstat (limited to 'library/std')
-rw-r--r--library/std/src/sys/pal/unix/thread.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/library/std/src/sys/pal/unix/thread.rs b/library/std/src/sys/pal/unix/thread.rs
index 853ef8736de..1ab54ec57c3 100644
--- a/library/std/src/sys/pal/unix/thread.rs
+++ b/library/std/src/sys/pal/unix/thread.rs
@@ -717,5 +717,14 @@ unsafe fn min_stack_size(_: *const libc::pthread_attr_t) -> usize {
 
 #[cfg(target_os = "netbsd")]
 unsafe fn min_stack_size(_: *const libc::pthread_attr_t) -> usize {
-    2048 // just a guess
+    static STACK: crate::sync::OnceLock<usize> = crate::sync::OnceLock::new();
+
+    *STACK.get_or_init(|| {
+        let mut stack = unsafe { libc::sysconf(libc::_SC_THREAD_STACK_MIN) };
+        if stack < 0 {
+            stack = 2048; // just a guess
+        }
+
+        stack as usize
+    })
 }