From 5d98a7dae955bafa6740c26eaba9c86060ae0344 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Mon, 21 Jun 2021 12:42:56 -0700 Subject: Define PTHREAD_STACK_MIN to sysconf(_SC_THREAD_STACK_MIN) The constant PTHREAD_STACK_MIN may be too small for some processors. Rename _SC_SIGSTKSZ_SOURCE to _DYNAMIC_STACK_SIZE_SOURCE. When _DYNAMIC_STACK_SIZE_SOURCE or _GNU_SOURCE are defined, define PTHREAD_STACK_MIN to sysconf(_SC_THREAD_STACK_MIN) which is changed to MIN (PTHREAD_STACK_MIN, sysconf(_SC_MINSIGSTKSZ)). Consolidate with to provide a constant target specific PTHREAD_STACK_MIN value. Reviewed-by: Carlos O'Donell --- sysdeps/unix/sysv/linux/bits/local_lim.h | 8 +++++++- sysdeps/unix/sysv/linux/bits/pthread_stack_min.h | 20 ++++++++++++++++++++ sysdeps/unix/sysv/linux/bits/sigstksz.h | 2 +- 3 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 sysdeps/unix/sysv/linux/bits/pthread_stack_min.h (limited to 'sysdeps/unix/sysv/linux/bits') diff --git a/sysdeps/unix/sysv/linux/bits/local_lim.h b/sysdeps/unix/sysv/linux/bits/local_lim.h index b88ca3d4d2..0b1c7f40be 100644 --- a/sysdeps/unix/sysv/linux/bits/local_lim.h +++ b/sysdeps/unix/sysv/linux/bits/local_lim.h @@ -78,7 +78,13 @@ #define AIO_PRIO_DELTA_MAX 20 /* Minimum size for a thread. We are free to choose a reasonable value. */ -#define PTHREAD_STACK_MIN 16384 +#undef PTHREAD_STACK_MIN +#if defined __USE_DYNAMIC_STACK_SIZE && __USE_DYNAMIC_STACK_SIZE +# include +# define PTHREAD_STACK_MIN sysconf (_SC_THREAD_STACK_MIN) +#else +# include +#endif /* Maximum number of timer expiration overruns. */ #define DELAYTIMER_MAX 2147483647 diff --git a/sysdeps/unix/sysv/linux/bits/pthread_stack_min.h b/sysdeps/unix/sysv/linux/bits/pthread_stack_min.h new file mode 100644 index 0000000000..7bd6fa1242 --- /dev/null +++ b/sysdeps/unix/sysv/linux/bits/pthread_stack_min.h @@ -0,0 +1,20 @@ +/* Definition of PTHREAD_STACK_MIN. Linux version. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +/* Minimum size for a thread. We are free to choose a reasonable value. */ +#define PTHREAD_STACK_MIN 16384 diff --git a/sysdeps/unix/sysv/linux/bits/sigstksz.h b/sysdeps/unix/sysv/linux/bits/sigstksz.h index 926508f2b4..cd45d122e0 100644 --- a/sysdeps/unix/sysv/linux/bits/sigstksz.h +++ b/sysdeps/unix/sysv/linux/bits/sigstksz.h @@ -20,7 +20,7 @@ # error "Never include directly; use instead." #endif -#if defined __USE_SC_SIGSTKSZ && __USE_SC_SIGSTKSZ +#if defined __USE_DYNAMIC_STACK_SIZE && __USE_DYNAMIC_STACK_SIZE # include /* Default stack size for a signal handler: sysconf (SC_SIGSTKSZ). */ -- cgit v1.2.3-70-g09d2