mirror of
https://git.yoctoproject.org/poky
synced 2026-03-19 13:49:41 +01:00
stress-ng: Detemine minimal stack size via sysconf
This helps it compile with glibc 2.34+ (From OE-Core rev: 9150933dc524b6cedc42b063b7a2092e202f3672) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
From f839de283c44ffe46a2d14bfdf854c145abd8ed6 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Ian King <colin.king@canonical.com>
|
||||
Date: Mon, 19 Jul 2021 20:49:34 +0100
|
||||
Subject: [PATCH] Detemine minimal stack size via sysconf, then PTHREAD_STACK_MIN then guess
|
||||
|
||||
Don't rely on PTHREAD_STACK_MIN being defined, use sysconf, then
|
||||
PTHREAD_STACK_MIN if it is defined, then 8K default.
|
||||
|
||||
Upstream-Status: Backport [https://kernel.ubuntu.com/git/cking/stress-ng.git/commit/?id=f839de283c44ffe46a2d14bfdf854c145abd8ed6]
|
||||
Signed-off-by: Colin Ian King <colin.king@canonical.com>
|
||||
---
|
||||
core-helper.c | 31 +++++++++++++++++++++++++++++++
|
||||
stress-ng.h | 1 +
|
||||
stress-pthread.c | 13 ++-----------
|
||||
3 files changed, 34 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/core-helper.c b/core-helper.c
|
||||
index 508627f2..97a3b869 100644
|
||||
--- a/core-helper.c
|
||||
+++ b/core-helper.c
|
||||
@@ -2494,6 +2494,37 @@ size_t stress_min_sig_stack_size(void)
|
||||
return (size_t)sz;
|
||||
}
|
||||
|
||||
+size_t stress_min_pthread_stack_size(void)
|
||||
+{
|
||||
+ static long sz = -1, min;
|
||||
+
|
||||
+ /* return cached copy */
|
||||
+ if (sz > 0)
|
||||
+ return sz;
|
||||
+
|
||||
+ min = stress_min_aux_sig_stack_size();
|
||||
+#if defined(__SC_THREAD_STACK_MIN_VALUE)
|
||||
+ sz = sysconf(__SC_THREAD_STACK_MIN_VALUE);
|
||||
+ if (sz > min)
|
||||
+ min = sz;
|
||||
+#endif
|
||||
+#if defined(_SC_THREAD_STACK_MIN_VALUE)
|
||||
+ sz = sysconf(_SC_THREAD_STACK_MIN_VALUE);
|
||||
+ if (sz > min)
|
||||
+ min = sz;
|
||||
+#endif
|
||||
+#if defined(PTHREAD_STACK_MIN)
|
||||
+ if (PTHREAD_STACK_MIN > min)
|
||||
+ min = PTHREAD_STACK_MIN;
|
||||
+#endif
|
||||
+ if (8192 > min)
|
||||
+ min = 8192;
|
||||
+
|
||||
+ sz = min;
|
||||
+
|
||||
+ return (size_t)sz;
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* stress_sig_handler_exit()
|
||||
* signal handler that exits a process via _exit(0) for
|
||||
diff --git a/stress-ng.h b/stress-ng.h
|
||||
index 8a8b17ae..cd744756 100644
|
||||
--- a/stress-ng.h
|
||||
+++ b/stress-ng.h
|
||||
@@ -4056,6 +4056,7 @@ extern WARN_UNUSED int32_t stress_get_opt_ionice_class(const char *const str);
|
||||
/* Misc helper funcs */
|
||||
extern WARN_UNUSED size_t stress_sig_stack_size(void);
|
||||
extern WARN_UNUSED size_t stress_min_sig_stack_size(void);
|
||||
+extern WARN_UNUSED size_t stress_min_pthread_stack_size(void);
|
||||
|
||||
#define STRESS_SIGSTKSZ (stress_sig_stack_size())
|
||||
#define STRESS_MINSIGSTKSZ (stress_min_sig_stack_size())
|
||||
diff --git a/stress-pthread.c b/stress-pthread.c
|
||||
index 0da3aeec..27777af8 100644
|
||||
--- a/stress-pthread.c
|
||||
+++ b/stress-pthread.c
|
||||
@@ -69,12 +69,7 @@ static const stress_opt_set_func_t opt_set_funcs[] = {
|
||||
|
||||
#if defined(HAVE_LIB_PTHREAD)
|
||||
|
||||
-/* Some systems such as GNU/HURD don't define PTHREAD_STACK_MIN */
|
||||
-#if !defined(PTHREAD_STACK_MIN)
|
||||
-#define PTHREAD_STACK_MIN (16 * KB)
|
||||
-#endif
|
||||
-
|
||||
-#define DEFAULT_STACK_MIN (16 * KB)
|
||||
+#define DEFAULT_STACK_MIN (8 * KB)
|
||||
|
||||
#if defined(HAVE_GET_ROBUST_LIST) && \
|
||||
defined(HAVE_LINUX_FUTEX_H)
|
||||
@@ -404,11 +399,7 @@ static int stress_pthread(const stress_args_t *args)
|
||||
stress_pthread_args_t pargs = { args, NULL, 0 };
|
||||
sigset_t set;
|
||||
#if defined(HAVE_PTHREAD_ATTR_SETSTACK)
|
||||
-#if DEFAULT_STACK_MIN == PTHREAD_STACK_MIN
|
||||
- const size_t stack_size = PTHREAD_STACK_MIN;
|
||||
-#else
|
||||
- const size_t stack_size = STRESS_MAXIMUM(DEFAULT_STACK_MIN, PTHREAD_STACK_MIN);
|
||||
-#endif
|
||||
+ const size_t stack_size = STRESS_MAXIMUM(DEFAULT_STACK_MIN, stress_min_pthread_stack_size());
|
||||
#endif
|
||||
|
||||
keep_running_flag = true;
|
||||
--
|
||||
2.32.0
|
||||
@@ -7,6 +7,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
|
||||
|
||||
SRC_URI = "https://kernel.ubuntu.com/~cking/tarballs/${BPN}/${BP}.tar.xz \
|
||||
file://0001-Do-not-preserve-ownership-when-installing-example-jo.patch \
|
||||
file://0001-Detemine-minimal-stack-size-via-sysconf-then-PTHREAD.patch \
|
||||
"
|
||||
SRC_URI[sha256sum] = "f27af50f6f2308e707fef927674bdd209a046b116734281b792aeca35a4e4499"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user