[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openembedded-core
Subject:    [OE-core] [PATCH] stress-ng: Detemine minimal stack size via sysconf
From:       "Khem Raj" <raj.khem () gmail ! com>
Date:       2021-07-31 19:11:37
Message-ID: 20210731191137.1858822-1-raj.khem () gmail ! com
[Download RAW message or body]

Content-Transfer-Encoding: 8bit

This helps it compile with glibc 2.34+

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 ...-stack-size-via-sysconf-then-PTHREAD.patch | 103 ++++++++++++++++++
 .../stress-ng/stress-ng_0.12.12.bb            |   1 +
 2 files changed, 104 insertions(+)
 create mode 100644 meta/recipes-extended/stress-ng/stress-ng/0001-Detemine-minimal-stack-size-via-sysconf-then-PTHREAD.patch


diff --git a/meta/recipes-extended/stress-ng/stress-ng/0001-Detemine-minimal-stack-size-via-sysconf-then-PTHREAD.patch \
b/meta/recipes-extended/stress-ng/stress-ng/0001-Detemine-minimal-stack-size-via-sysconf-then-PTHREAD.patch
 new file mode 100644
index 0000000000..d275e3d7f9
--- /dev/null
+++ b/meta/recipes-extended/stress-ng/stress-ng/0001-Detemine-minimal-stack-size-via-sysconf-then-PTHREAD.patch
 @@ -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
diff --git a/meta/recipes-extended/stress-ng/stress-ng_0.12.12.bb \
b/meta/recipes-extended/stress-ng/stress-ng_0.12.12.bb index 430eac0d87..2925815044 \
                100644
--- a/meta/recipes-extended/stress-ng/stress-ng_0.12.12.bb
+++ b/meta/recipes-extended/stress-ng/stress-ng_0.12.12.bb
@@ -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"  
-- 
2.32.0



-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#154298): https://lists.openembedded.org/g/openembedded-core/message/154298
Mute This Topic: https://lists.openembedded.org/mt/84576407/4454766
Group Owner: openembedded-core+owner@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [openembedded-core@marc.info]
-=-=-=-=-=-=-=-=-=-=-=-



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic