mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-24 03:31:07 +00:00
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 <bits/local_lim.h> with <bits/pthread_stack_min.h> to provide a constant target specific PTHREAD_STACK_MIN value. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
This commit is contained in:
parent
7c241325d6
commit
5d98a7dae9
8
NEWS
8
NEWS
@ -9,8 +9,12 @@ Version 2.34
|
||||
|
||||
Major new features:
|
||||
|
||||
* Add _SC_MINSIGSTKSZ and _SC_SIGSTKSZ. When _SC_SIGSTKSZ_SOURCE or
|
||||
_GNU_SOURCE are defined, MINSIGSTKSZ and SIGSTKSZ are no longer
|
||||
* When _DYNAMIC_STACK_SIZE_SOURCE or _GNU_SOURCE are defined,
|
||||
PTHREAD_STACK_MIN is no longer constant and is redefined to
|
||||
sysconf(_SC_THREAD_STACK_MIN).
|
||||
|
||||
* Add _SC_MINSIGSTKSZ and _SC_SIGSTKSZ. When _DYNAMIC_STACK_SIZE_SOURCE
|
||||
or _GNU_SOURCE are defined, MINSIGSTKSZ and SIGSTKSZ are no longer
|
||||
constant on Linux. MINSIGSTKSZ is redefined to sysconf(_SC_MINSIGSTKSZ)
|
||||
and SIGSTKSZ is redefined to sysconf (_SC_SIGSTKSZ).
|
||||
|
||||
|
7
include/bits/local_lim.h
Normal file
7
include/bits/local_lim.h
Normal file
@ -0,0 +1,7 @@
|
||||
/* Don't define PTHREAD_STACK_MIN to sysconf (_SC_THREAD_STACK_MIN) for
|
||||
glibc build. */
|
||||
#if !defined _ISOMAC
|
||||
# undef __USE_DYNAMIC_STACK_SIZE
|
||||
#endif
|
||||
|
||||
#include_next <bits/local_lim.h>
|
@ -50,8 +50,8 @@
|
||||
_LARGEFILE64_SOURCE Additional functionality from LFS for large files.
|
||||
_FILE_OFFSET_BITS=N Select default filesystem interface.
|
||||
_ATFILE_SOURCE Additional *at interfaces.
|
||||
_SC_SIGSTKSZ_SOURCE Select correct (but non compile-time constant)
|
||||
MINSIGSTKSZ and SIGSTKSZ.
|
||||
_DYNAMIC_STACK_SIZE_SOURCE Select correct (but non compile-time constant)
|
||||
MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
|
||||
_GNU_SOURCE All of the above, plus GNU extensions.
|
||||
_DEFAULT_SOURCE The default set of features (taking precedence over
|
||||
__STRICT_ANSI__).
|
||||
@ -98,8 +98,8 @@
|
||||
__USE_FILE_OFFSET64 Define 64bit interface as default.
|
||||
__USE_MISC Define things from 4.3BSD or System V Unix.
|
||||
__USE_ATFILE Define *at interfaces and AT_* constants for them.
|
||||
__USE_SC_SIGSTKSZ Define correct (but non compile-time constant)
|
||||
MINSIGSTKSZ and SIGSTKSZ.
|
||||
__USE_DYNAMIC_STACK_SIZE Define correct (but non compile-time constant)
|
||||
MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
|
||||
__USE_GNU Define GNU extensions.
|
||||
__USE_FORTIFY_LEVEL Additional security measures used, according to level.
|
||||
|
||||
@ -143,7 +143,7 @@
|
||||
#undef __USE_FILE_OFFSET64
|
||||
#undef __USE_MISC
|
||||
#undef __USE_ATFILE
|
||||
#undef __USE_SC_SIGSTKSZ
|
||||
#undef __USE_DYNAMIC_STACK_SIZE
|
||||
#undef __USE_GNU
|
||||
#undef __USE_FORTIFY_LEVEL
|
||||
#undef __KERNEL_STRICT_NAMES
|
||||
@ -220,8 +220,8 @@
|
||||
# define _DEFAULT_SOURCE 1
|
||||
# undef _ATFILE_SOURCE
|
||||
# define _ATFILE_SOURCE 1
|
||||
# undef _SC_SIGSTKSZ_SOURCE
|
||||
# define _SC_SIGSTKSZ_SOURCE 1
|
||||
# undef _DYNAMIC_STACK_SIZE_SOURCE
|
||||
# define _DYNAMIC_STACK_SIZE_SOURCE 1
|
||||
#endif
|
||||
|
||||
/* If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
|
||||
@ -399,8 +399,8 @@
|
||||
# define __USE_ATFILE 1
|
||||
#endif
|
||||
|
||||
#ifdef _SC_SIGSTKSZ_SOURCE
|
||||
# define __USE_SC_SIGSTKSZ 1
|
||||
#ifdef _DYNAMIC_STACK_SIZE_SOURCE
|
||||
# define __USE_DYNAMIC_STACK_SIZE 1
|
||||
#endif
|
||||
|
||||
#ifdef _GNU_SOURCE
|
||||
|
@ -308,10 +308,10 @@ checks are applied. If defined to @math{3}, @theglibc{} may also use
|
||||
checks that may have an additional performance overhead.
|
||||
@end defvr
|
||||
|
||||
@defvr Macro _SC_SIGSTKSZ_SOURCE
|
||||
@defvr Macro _DYNAMIC_STACK_SIZE_SOURCE
|
||||
@standards{GNU, (none)}
|
||||
If this macro is defined, correct (but non compile-time constant)
|
||||
MINSIGSTKSZ and SIGSTKSZ are defined.
|
||||
MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN are defined.
|
||||
@end defvr
|
||||
|
||||
@defvr Macro _REENTRANT
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <ucontext.h>
|
||||
#include <support/support.h>
|
||||
|
||||
#define N 4
|
||||
#if __WORDSIZE == 64
|
||||
@ -36,7 +37,8 @@ typedef struct {
|
||||
unsigned long guard[3];
|
||||
} tst_context_t;
|
||||
|
||||
static char stacks[N][2 * PTHREAD_STACK_MIN];
|
||||
static char *stacks[N];
|
||||
static size_t stack_size;
|
||||
static tst_context_t ctx[N][2];
|
||||
static volatile int failures;
|
||||
|
||||
@ -79,7 +81,7 @@ fct (long int n)
|
||||
exit (1);
|
||||
}
|
||||
|
||||
if (on_stack < stacks[n] || on_stack >= stacks[n] + sizeof (stacks[0]))
|
||||
if (on_stack < stacks[n] || on_stack >= stacks[n] + stack_size)
|
||||
{
|
||||
printf ("%ld: on_stack not on appropriate stack\n", n);
|
||||
exit (1);
|
||||
@ -109,7 +111,7 @@ tf (void *arg)
|
||||
printf ("%d: %s: before makecontext\n", n, __FUNCTION__);
|
||||
|
||||
ctx[n][1].uctx.uc_stack.ss_sp = stacks[n];
|
||||
ctx[n][1].uctx.uc_stack.ss_size = sizeof (stacks[n]);
|
||||
ctx[n][1].uctx.uc_stack.ss_size = stack_size;
|
||||
ctx[n][1].uctx.uc_link = &ctx[n][0].uctx;
|
||||
makecontext (&ctx[n][1].uctx, (void (*) (void)) fct, 1, (long int) n);
|
||||
|
||||
@ -137,6 +139,10 @@ do_test (void)
|
||||
pthread_t th[N];
|
||||
ucontext_t mctx;
|
||||
|
||||
stack_size = 2 * PTHREAD_STACK_MIN;
|
||||
for (int i = 0; i < N; i++)
|
||||
stacks[i] = xmalloc (stack_size);
|
||||
|
||||
puts ("making contexts");
|
||||
if (getcontext (&mctx) != 0)
|
||||
{
|
||||
@ -198,6 +204,9 @@ do_test (void)
|
||||
exit (1);
|
||||
}
|
||||
|
||||
for (int i = 0; i < N; i++)
|
||||
free (stacks[i]);
|
||||
|
||||
return failures;
|
||||
}
|
||||
|
||||
|
@ -38,11 +38,6 @@
|
||||
|
||||
const size_t kNumThreads = 1024;
|
||||
const size_t kNumHandlers = 1024;
|
||||
const size_t kStacksize =
|
||||
#ifdef PTHREAD_STACK_MIN
|
||||
0x20000 < PTHREAD_STACK_MIN ? PTHREAD_STACK_MIN :
|
||||
#endif
|
||||
0x20000;
|
||||
|
||||
static void *
|
||||
threadfunc (void *unused)
|
||||
@ -66,6 +61,12 @@ do_test (void)
|
||||
/* With default 8MiB Linux stack size, creating 1024 threads can cause
|
||||
VM exhausiton on 32-bit machines. Reduce stack size of each thread to
|
||||
128KiB for a maximum required VM size of 128MiB. */
|
||||
size_t kStacksize =
|
||||
#ifdef PTHREAD_STACK_MIN
|
||||
0x20000 < PTHREAD_STACK_MIN ? PTHREAD_STACK_MIN :
|
||||
#endif
|
||||
0x20000;
|
||||
|
||||
xpthread_attr_setstacksize (&attr, kStacksize);
|
||||
|
||||
for (i = 0; i < kNumThreads; ++i) {
|
||||
|
@ -17,6 +17,7 @@
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <support/check.h>
|
||||
#include <support/support.h>
|
||||
#include <sys/stat.h>
|
||||
|
29
sysdeps/posix/sysconf-pthread_stack_min.h
Normal file
29
sysdeps/posix/sysconf-pthread_stack_min.h
Normal file
@ -0,0 +1,29 @@
|
||||
/* __get_pthread_stack_min (). POSIX 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
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Return sysconf (_SC_THREAD_STACK_MIN). */
|
||||
|
||||
static inline long int
|
||||
__get_pthread_stack_min (void)
|
||||
{
|
||||
#ifdef PTHREAD_STACK_MIN
|
||||
return PTHREAD_STACK_MIN;
|
||||
#else
|
||||
return -1;
|
||||
#endif
|
||||
}
|
@ -31,6 +31,7 @@
|
||||
#include <sys/types.h>
|
||||
#include <sys/uio.h>
|
||||
#include <regex.h>
|
||||
#include <sysconf-pthread_stack_min.h>
|
||||
|
||||
#define NEED_SPEC_ARRAY 0
|
||||
#include <posix-conf-vars.h>
|
||||
@ -569,11 +570,7 @@ __sysconf (int name)
|
||||
#endif
|
||||
|
||||
case _SC_THREAD_STACK_MIN:
|
||||
#ifdef PTHREAD_STACK_MIN
|
||||
return PTHREAD_STACK_MIN;
|
||||
#else
|
||||
return -1;
|
||||
#endif
|
||||
return __get_pthread_stack_min ();
|
||||
|
||||
case _SC_THREAD_THREADS_MAX:
|
||||
#ifdef PTHREAD_THREADS_MAX
|
||||
|
@ -108,7 +108,8 @@ sysdep_headers += sys/mount.h sys/acct.h \
|
||||
bits/types/struct_semid64_ds.h \
|
||||
bits/types/struct_semid64_ds_helper.h \
|
||||
bits/types/struct_shmid64_ds.h \
|
||||
bits/types/struct_shmid64_ds_helper.h
|
||||
bits/types/struct_shmid64_ds_helper.h \
|
||||
bits/pthread_stack_min.h
|
||||
|
||||
tests += tst-clone tst-clone2 tst-clone3 tst-fanotify tst-personality \
|
||||
tst-quota tst-sync_file_range tst-sysconf-iov_max tst-ttyname \
|
||||
|
@ -1,101 +0,0 @@
|
||||
/* Minimum guaranteed maximum values for system limits. Linux version.
|
||||
Copyright (C) 1993-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
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* The kernel header pollutes the namespace with the NR_OPEN symbol
|
||||
and defines LINK_MAX although filesystems have different maxima. A
|
||||
similar thing is true for OPEN_MAX: the limit can be changed at
|
||||
runtime and therefore the macro must not be defined. Remove this
|
||||
after including the header if necessary. */
|
||||
#ifndef NR_OPEN
|
||||
# define __undef_NR_OPEN
|
||||
#endif
|
||||
#ifndef LINK_MAX
|
||||
# define __undef_LINK_MAX
|
||||
#endif
|
||||
#ifndef OPEN_MAX
|
||||
# define __undef_OPEN_MAX
|
||||
#endif
|
||||
#ifndef ARG_MAX
|
||||
# define __undef_ARG_MAX
|
||||
#endif
|
||||
|
||||
/* The kernel sources contain a file with all the needed information. */
|
||||
#include <linux/limits.h>
|
||||
|
||||
/* Have to remove NR_OPEN? */
|
||||
#ifdef __undef_NR_OPEN
|
||||
# undef NR_OPEN
|
||||
# undef __undef_NR_OPEN
|
||||
#endif
|
||||
/* Have to remove LINK_MAX? */
|
||||
#ifdef __undef_LINK_MAX
|
||||
# undef LINK_MAX
|
||||
# undef __undef_LINK_MAX
|
||||
#endif
|
||||
/* Have to remove OPEN_MAX? */
|
||||
#ifdef __undef_OPEN_MAX
|
||||
# undef OPEN_MAX
|
||||
# undef __undef_OPEN_MAX
|
||||
#endif
|
||||
/* Have to remove ARG_MAX? */
|
||||
#ifdef __undef_ARG_MAX
|
||||
# undef ARG_MAX
|
||||
# undef __undef_ARG_MAX
|
||||
#endif
|
||||
|
||||
/* The number of data keys per process. */
|
||||
#define _POSIX_THREAD_KEYS_MAX 128
|
||||
/* This is the value this implementation supports. */
|
||||
#define PTHREAD_KEYS_MAX 1024
|
||||
|
||||
/* Controlling the iterations of destructors for thread-specific data. */
|
||||
#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
|
||||
/* Number of iterations this implementation does. */
|
||||
#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
|
||||
|
||||
/* The number of threads per process. */
|
||||
#define _POSIX_THREAD_THREADS_MAX 64
|
||||
/* We have no predefined limit on the number of threads. */
|
||||
#undef PTHREAD_THREADS_MAX
|
||||
|
||||
/* Maximum amount by which a process can descrease its asynchronous I/O
|
||||
priority level. */
|
||||
#define AIO_PRIO_DELTA_MAX 20
|
||||
|
||||
/* Minimum size for a thread. At least two pages for systems with 64k
|
||||
pages. */
|
||||
#define PTHREAD_STACK_MIN 131072
|
||||
|
||||
/* Maximum number of timer expiration overruns. */
|
||||
#define DELAYTIMER_MAX 2147483647
|
||||
|
||||
/* Maximum tty name length. */
|
||||
#define TTY_NAME_MAX 32
|
||||
|
||||
/* Maximum login name length. This is arbitrary. */
|
||||
#define LOGIN_NAME_MAX 256
|
||||
|
||||
/* Maximum host name length. */
|
||||
#define HOST_NAME_MAX 64
|
||||
|
||||
/* Maximum message queue priority level. */
|
||||
#define MQ_PRIO_MAX 32768
|
||||
|
||||
/* Maximum value the semaphore can have. */
|
||||
#define SEM_VALUE_MAX (2147483647)
|
22
sysdeps/unix/sysv/linux/aarch64/bits/pthread_stack_min.h
Normal file
22
sysdeps/unix/sysv/linux/aarch64/bits/pthread_stack_min.h
Normal file
@ -0,0 +1,22 @@
|
||||
/* Definition of PTHREAD_STACK_MIN. Linux/aarch64 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
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Minimum size for a thread. At least two pages for systems with 64k
|
||||
pages. */
|
||||
#define PTHREAD_STACK_MIN 131072
|
@ -1,99 +0,0 @@
|
||||
/* Minimum guaranteed maximum values for system limits. Linux/Alpha version.
|
||||
Copyright (C) 1993-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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* The kernel header pollutes the namespace with the NR_OPEN symbol
|
||||
and defines LINK_MAX although filesystems have different maxima. A
|
||||
similar thing is true for OPEN_MAX: the limit can be changed at
|
||||
runtime and therefore the macro must not be defined. Remove this
|
||||
after including the header if necessary. */
|
||||
#ifndef NR_OPEN
|
||||
# define __undef_NR_OPEN
|
||||
#endif
|
||||
#ifndef LINK_MAX
|
||||
# define __undef_LINK_MAX
|
||||
#endif
|
||||
#ifndef OPEN_MAX
|
||||
# define __undef_OPEN_MAX
|
||||
#endif
|
||||
#ifndef ARG_MAX
|
||||
# define __undef_ARG_MAX
|
||||
#endif
|
||||
|
||||
/* The kernel sources contain a file with all the needed information. */
|
||||
#include <linux/limits.h>
|
||||
|
||||
/* Have to remove NR_OPEN? */
|
||||
#ifdef __undef_NR_OPEN
|
||||
# undef NR_OPEN
|
||||
# undef __undef_NR_OPEN
|
||||
#endif
|
||||
/* Have to remove LINK_MAX? */
|
||||
#ifdef __undef_LINK_MAX
|
||||
# undef LINK_MAX
|
||||
# undef __undef_LINK_MAX
|
||||
#endif
|
||||
/* Have to remove OPEN_MAX? */
|
||||
#ifdef __undef_OPEN_MAX
|
||||
# undef OPEN_MAX
|
||||
# undef __undef_OPEN_MAX
|
||||
#endif
|
||||
/* Have to remove ARG_MAX? */
|
||||
#ifdef __undef_ARG_MAX
|
||||
# undef ARG_MAX
|
||||
# undef __undef_ARG_MAX
|
||||
#endif
|
||||
|
||||
/* The number of data keys per process. */
|
||||
#define _POSIX_THREAD_KEYS_MAX 128
|
||||
/* This is the value this implementation supports. */
|
||||
#define PTHREAD_KEYS_MAX 1024
|
||||
|
||||
/* Controlling the iterations of destructors for thread-specific data. */
|
||||
#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
|
||||
/* Number of iterations this implementation does. */
|
||||
#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
|
||||
|
||||
/* The number of threads per process. */
|
||||
#define _POSIX_THREAD_THREADS_MAX 64
|
||||
/* We have no predefined limit on the number of threads. */
|
||||
#undef PTHREAD_THREADS_MAX
|
||||
|
||||
/* Maximum amount by which a process can descrease its asynchronous I/O
|
||||
priority level. */
|
||||
#define AIO_PRIO_DELTA_MAX 20
|
||||
|
||||
/* Minimum size for a thread. We are free to choose a reasonable value. */
|
||||
#define PTHREAD_STACK_MIN 24576
|
||||
|
||||
/* Maximum number of timer expiration overruns. */
|
||||
#define DELAYTIMER_MAX 2147483647
|
||||
|
||||
/* Maximum tty name length. */
|
||||
#define TTY_NAME_MAX 32
|
||||
|
||||
/* Maximum login name length. This is arbitrary. */
|
||||
#define LOGIN_NAME_MAX 256
|
||||
|
||||
/* Maximum host name length. */
|
||||
#define HOST_NAME_MAX 64
|
||||
|
||||
/* Maximum message queue priority level. */
|
||||
#define MQ_PRIO_MAX 32768
|
||||
|
||||
/* Maximum value the semaphore can have. */
|
||||
#define SEM_VALUE_MAX (2147483647)
|
20
sysdeps/unix/sysv/linux/alpha/bits/pthread_stack_min.h
Normal file
20
sysdeps/unix/sysv/linux/alpha/bits/pthread_stack_min.h
Normal file
@ -0,0 +1,20 @@
|
||||
/* Definition of PTHREAD_STACK_MIN. Linux/Alpha 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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Minimum size for a thread. We are free to choose a reasonable value. */
|
||||
#define PTHREAD_STACK_MIN 24576
|
@ -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 <unistd.h>
|
||||
# define PTHREAD_STACK_MIN sysconf (_SC_THREAD_STACK_MIN)
|
||||
#else
|
||||
# include <bits/pthread_stack_min.h>
|
||||
#endif
|
||||
|
||||
/* Maximum number of timer expiration overruns. */
|
||||
#define DELAYTIMER_MAX 2147483647
|
||||
|
20
sysdeps/unix/sysv/linux/bits/pthread_stack_min.h
Normal file
20
sysdeps/unix/sysv/linux/bits/pthread_stack_min.h
Normal file
@ -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
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Minimum size for a thread. We are free to choose a reasonable value. */
|
||||
#define PTHREAD_STACK_MIN 16384
|
@ -20,7 +20,7 @@
|
||||
# error "Never include <bits/sigstksz.h> directly; use <signal.h> instead."
|
||||
#endif
|
||||
|
||||
#if defined __USE_SC_SIGSTKSZ && __USE_SC_SIGSTKSZ
|
||||
#if defined __USE_DYNAMIC_STACK_SIZE && __USE_DYNAMIC_STACK_SIZE
|
||||
# include <unistd.h>
|
||||
|
||||
/* Default stack size for a signal handler: sysconf (SC_SIGSTKSZ). */
|
||||
|
@ -1,99 +0,0 @@
|
||||
/* Minimum guaranteed maximum values for system limits. Linux/IA-64 version.
|
||||
Copyright (C) 1993-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
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* The kernel header pollutes the namespace with the NR_OPEN symbol
|
||||
and defines LINK_MAX although filesystems have different maxima. A
|
||||
similar thing is true for OPEN_MAX: the limit can be changed at
|
||||
runtime and therefore the macro must not be defined. Remove this
|
||||
after including the header if necessary. */
|
||||
#ifndef NR_OPEN
|
||||
# define __undef_NR_OPEN
|
||||
#endif
|
||||
#ifndef LINK_MAX
|
||||
# define __undef_LINK_MAX
|
||||
#endif
|
||||
#ifndef OPEN_MAX
|
||||
# define __undef_OPEN_MAX
|
||||
#endif
|
||||
#ifndef ARG_MAX
|
||||
# define __undef_ARG_MAX
|
||||
#endif
|
||||
|
||||
/* The kernel sources contain a file with all the needed information. */
|
||||
#include <linux/limits.h>
|
||||
|
||||
/* Have to remove NR_OPEN? */
|
||||
#ifdef __undef_NR_OPEN
|
||||
# undef NR_OPEN
|
||||
# undef __undef_NR_OPEN
|
||||
#endif
|
||||
/* Have to remove LINK_MAX? */
|
||||
#ifdef __undef_LINK_MAX
|
||||
# undef LINK_MAX
|
||||
# undef __undef_LINK_MAX
|
||||
#endif
|
||||
/* Have to remove OPEN_MAX? */
|
||||
#ifdef __undef_OPEN_MAX
|
||||
# undef OPEN_MAX
|
||||
# undef __undef_OPEN_MAX
|
||||
#endif
|
||||
/* Have to remove ARG_MAX? */
|
||||
#ifdef __undef_ARG_MAX
|
||||
# undef ARG_MAX
|
||||
# undef __undef_ARG_MAX
|
||||
#endif
|
||||
|
||||
/* The number of data keys per process. */
|
||||
#define _POSIX_THREAD_KEYS_MAX 128
|
||||
/* This is the value this implementation supports. */
|
||||
#define PTHREAD_KEYS_MAX 1024
|
||||
|
||||
/* Controlling the iterations of destructors for thread-specific data. */
|
||||
#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
|
||||
/* Number of iterations this implementation does. */
|
||||
#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
|
||||
|
||||
/* The number of threads per process. */
|
||||
#define _POSIX_THREAD_THREADS_MAX 64
|
||||
/* We have no predefined limit on the number of threads. */
|
||||
#undef PTHREAD_THREADS_MAX
|
||||
|
||||
/* Maximum amount by which a process can descrease its asynchronous I/O
|
||||
priority level. */
|
||||
#define AIO_PRIO_DELTA_MAX 20
|
||||
|
||||
/* Minimum size for a thread. We are free to choose a reasonable value. */
|
||||
#define PTHREAD_STACK_MIN 196608
|
||||
|
||||
/* Maximum number of timer expiration overruns. */
|
||||
#define DELAYTIMER_MAX 2147483647
|
||||
|
||||
/* Maximum tty name length. */
|
||||
#define TTY_NAME_MAX 32
|
||||
|
||||
/* Maximum login name length. This is arbitrary. */
|
||||
#define LOGIN_NAME_MAX 256
|
||||
|
||||
/* Maximum host name length. */
|
||||
#define HOST_NAME_MAX 64
|
||||
|
||||
/* Maximum message queue priority level. */
|
||||
#define MQ_PRIO_MAX 32768
|
||||
|
||||
/* Maximum value the semaphore can have. */
|
||||
#define SEM_VALUE_MAX (2147483647)
|
20
sysdeps/unix/sysv/linux/ia64/bits/pthread_stack_min.h
Normal file
20
sysdeps/unix/sysv/linux/ia64/bits/pthread_stack_min.h
Normal file
@ -0,0 +1,20 @@
|
||||
/* Definition of PTHREAD_STACK_MIN. Linux/IA-64 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
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Minimum size for a thread. We are free to choose a reasonable value. */
|
||||
#define PTHREAD_STACK_MIN 196608
|
@ -1,99 +0,0 @@
|
||||
/* Minimum guaranteed maximum values for system limits. MIPS Linux version.
|
||||
Copyright (C) 1993-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
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* The kernel header pollutes the namespace with the NR_OPEN symbol
|
||||
and defines LINK_MAX although filesystems have different maxima. A
|
||||
similar thing is true for OPEN_MAX: the limit can be changed at
|
||||
runtime and therefore the macro must not be defined. Remove this
|
||||
after including the header if necessary. */
|
||||
#ifndef NR_OPEN
|
||||
# define __undef_NR_OPEN
|
||||
#endif
|
||||
#ifndef LINK_MAX
|
||||
# define __undef_LINK_MAX
|
||||
#endif
|
||||
#ifndef OPEN_MAX
|
||||
# define __undef_OPEN_MAX
|
||||
#endif
|
||||
#ifndef ARG_MAX
|
||||
# define __undef_ARG_MAX
|
||||
#endif
|
||||
|
||||
/* The kernel sources contain a file with all the needed information. */
|
||||
#include <linux/limits.h>
|
||||
|
||||
/* Have to remove NR_OPEN? */
|
||||
#ifdef __undef_NR_OPEN
|
||||
# undef NR_OPEN
|
||||
# undef __undef_NR_OPEN
|
||||
#endif
|
||||
/* Have to remove LINK_MAX? */
|
||||
#ifdef __undef_LINK_MAX
|
||||
# undef LINK_MAX
|
||||
# undef __undef_LINK_MAX
|
||||
#endif
|
||||
/* Have to remove OPEN_MAX? */
|
||||
#ifdef __undef_OPEN_MAX
|
||||
# undef OPEN_MAX
|
||||
# undef __undef_OPEN_MAX
|
||||
#endif
|
||||
/* Have to remove ARG_MAX? */
|
||||
#ifdef __undef_ARG_MAX
|
||||
# undef ARG_MAX
|
||||
# undef __undef_ARG_MAX
|
||||
#endif
|
||||
|
||||
/* The number of data keys per process. */
|
||||
#define _POSIX_THREAD_KEYS_MAX 128
|
||||
/* This is the value this implementation supports. */
|
||||
#define PTHREAD_KEYS_MAX 1024
|
||||
|
||||
/* Controlling the iterations of destructors for thread-specific data. */
|
||||
#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
|
||||
/* Number of iterations this implementation does. */
|
||||
#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
|
||||
|
||||
/* The number of threads per process. */
|
||||
#define _POSIX_THREAD_THREADS_MAX 64
|
||||
/* We have no predefined limit on the number of threads. */
|
||||
#undef PTHREAD_THREADS_MAX
|
||||
|
||||
/* Maximum amount by which a process can descrease its asynchronous I/O
|
||||
priority level. */
|
||||
#define AIO_PRIO_DELTA_MAX 20
|
||||
|
||||
/* Minimum size for a thread. At least two pages with 64k pages. */
|
||||
#define PTHREAD_STACK_MIN 131072
|
||||
|
||||
/* Maximum number of timer expiration overruns. */
|
||||
#define DELAYTIMER_MAX 2147483647
|
||||
|
||||
/* Maximum tty name length. */
|
||||
#define TTY_NAME_MAX 32
|
||||
|
||||
/* Maximum login name length. This is arbitrary. */
|
||||
#define LOGIN_NAME_MAX 256
|
||||
|
||||
/* Maximum host name length. */
|
||||
#define HOST_NAME_MAX 64
|
||||
|
||||
/* Maximum message queue priority level. */
|
||||
#define MQ_PRIO_MAX 32768
|
||||
|
||||
/* Maximum value the semaphore can have. */
|
||||
#define SEM_VALUE_MAX (2147483647)
|
20
sysdeps/unix/sysv/linux/mips/bits/pthread_stack_min.h
Normal file
20
sysdeps/unix/sysv/linux/mips/bits/pthread_stack_min.h
Normal file
@ -0,0 +1,20 @@
|
||||
/* Definition of PTHREAD_STACK_MIN. MIPS 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
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Minimum size for a thread. At least two pages with 64k pages. */
|
||||
#define PTHREAD_STACK_MIN 131072
|
@ -1,100 +0,0 @@
|
||||
/* Minimum guaranteed maximum values for system limits. Linux/PPC version.
|
||||
Copyright (C) 1993-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; see the file COPYING.LIB. If
|
||||
not, see <https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* The kernel header pollutes the namespace with the NR_OPEN symbol
|
||||
and defines LINK_MAX although filesystems have different maxima. A
|
||||
similar thing is true for OPEN_MAX: the limit can be changed at
|
||||
runtime and therefore the macro must not be defined. Remove this
|
||||
after including the header if necessary. */
|
||||
#ifndef NR_OPEN
|
||||
# define __undef_NR_OPEN
|
||||
#endif
|
||||
#ifndef LINK_MAX
|
||||
# define __undef_LINK_MAX
|
||||
#endif
|
||||
#ifndef OPEN_MAX
|
||||
# define __undef_OPEN_MAX
|
||||
#endif
|
||||
#ifndef ARG_MAX
|
||||
# define __undef_ARG_MAX
|
||||
#endif
|
||||
|
||||
/* The kernel sources contain a file with all the needed information. */
|
||||
#include <linux/limits.h>
|
||||
|
||||
/* Have to remove NR_OPEN? */
|
||||
#ifdef __undef_NR_OPEN
|
||||
# undef NR_OPEN
|
||||
# undef __undef_NR_OPEN
|
||||
#endif
|
||||
/* Have to remove LINK_MAX? */
|
||||
#ifdef __undef_LINK_MAX
|
||||
# undef LINK_MAX
|
||||
# undef __undef_LINK_MAX
|
||||
#endif
|
||||
/* Have to remove OPEN_MAX? */
|
||||
#ifdef __undef_OPEN_MAX
|
||||
# undef OPEN_MAX
|
||||
# undef __undef_OPEN_MAX
|
||||
#endif
|
||||
/* Have to remove ARG_MAX? */
|
||||
#ifdef __undef_ARG_MAX
|
||||
# undef ARG_MAX
|
||||
# undef __undef_ARG_MAX
|
||||
#endif
|
||||
|
||||
/* The number of data keys per process. */
|
||||
#define _POSIX_THREAD_KEYS_MAX 128
|
||||
/* This is the value this implementation supports. */
|
||||
#define PTHREAD_KEYS_MAX 1024
|
||||
|
||||
/* Controlling the iterations of destructors for thread-specific data. */
|
||||
#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
|
||||
/* Number of iterations this implementation does. */
|
||||
#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
|
||||
|
||||
/* The number of threads per process. */
|
||||
#define _POSIX_THREAD_THREADS_MAX 64
|
||||
/* We have no predefined limit on the number of threads. */
|
||||
#undef PTHREAD_THREADS_MAX
|
||||
|
||||
/* Maximum amount by which a process can descrease its asynchronous I/O
|
||||
priority level. */
|
||||
#define AIO_PRIO_DELTA_MAX 20
|
||||
|
||||
/* Minimum size for a thread. At least two pages for systems with 64k
|
||||
pages. */
|
||||
#define PTHREAD_STACK_MIN 131072
|
||||
|
||||
/* Maximum number of timer expiration overruns. */
|
||||
#define DELAYTIMER_MAX 2147483647
|
||||
|
||||
/* Maximum tty name length. */
|
||||
#define TTY_NAME_MAX 32
|
||||
|
||||
/* Maximum login name length. This is arbitrary. */
|
||||
#define LOGIN_NAME_MAX 256
|
||||
|
||||
/* Maximum host name length. */
|
||||
#define HOST_NAME_MAX 64
|
||||
|
||||
/* Maximum message queue priority level. */
|
||||
#define MQ_PRIO_MAX 32768
|
||||
|
||||
/* Maximum value the semaphore can have. */
|
||||
#define SEM_VALUE_MAX (2147483647)
|
21
sysdeps/unix/sysv/linux/powerpc/bits/pthread_stack_min.h
Normal file
21
sysdeps/unix/sysv/linux/powerpc/bits/pthread_stack_min.h
Normal file
@ -0,0 +1,21 @@
|
||||
/* Definition of PTHREAD_STACK_MIN. Linux/PPC 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; see the file COPYING.LIB. If
|
||||
not, see <https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Minimum size for a thread. At least two pages for systems with 64k
|
||||
pages. */
|
||||
#define PTHREAD_STACK_MIN 131072
|
@ -1,99 +0,0 @@
|
||||
/* Minimum guaranteed maximum values for system limits. Linux/SPARC version.
|
||||
Copyright (C) 1993-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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||
not, see <https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* The kernel header pollutes the namespace with the NR_OPEN symbol
|
||||
and defines LINK_MAX although filesystems have different maxima. A
|
||||
similar thing is true for OPEN_MAX: the limit can be changed at
|
||||
runtime and therefore the macro must not be defined. Remove this
|
||||
after including the header if necessary. */
|
||||
#ifndef NR_OPEN
|
||||
# define __undef_NR_OPEN
|
||||
#endif
|
||||
#ifndef LINK_MAX
|
||||
# define __undef_LINK_MAX
|
||||
#endif
|
||||
#ifndef OPEN_MAX
|
||||
# define __undef_OPEN_MAX
|
||||
#endif
|
||||
#ifndef ARG_MAX
|
||||
# define __undef_ARG_MAX
|
||||
#endif
|
||||
|
||||
/* The kernel sources contain a file with all the needed information. */
|
||||
#include <linux/limits.h>
|
||||
|
||||
/* Have to remove NR_OPEN? */
|
||||
#ifdef __undef_NR_OPEN
|
||||
# undef NR_OPEN
|
||||
# undef __undef_NR_OPEN
|
||||
#endif
|
||||
/* Have to remove LINK_MAX? */
|
||||
#ifdef __undef_LINK_MAX
|
||||
# undef LINK_MAX
|
||||
# undef __undef_LINK_MAX
|
||||
#endif
|
||||
/* Have to remove OPEN_MAX? */
|
||||
#ifdef __undef_OPEN_MAX
|
||||
# undef OPEN_MAX
|
||||
# undef __undef_OPEN_MAX
|
||||
#endif
|
||||
/* Have to remove ARG_MAX? */
|
||||
#ifdef __undef_ARG_MAX
|
||||
# undef ARG_MAX
|
||||
# undef __undef_ARG_MAX
|
||||
#endif
|
||||
|
||||
/* The number of data keys per process. */
|
||||
#define _POSIX_THREAD_KEYS_MAX 128
|
||||
/* This is the value this implementation supports. */
|
||||
#define PTHREAD_KEYS_MAX 1024
|
||||
|
||||
/* Controlling the iterations of destructors for thread-specific data. */
|
||||
#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
|
||||
/* Number of iterations this implementation does. */
|
||||
#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
|
||||
|
||||
/* The number of threads per process. */
|
||||
#define _POSIX_THREAD_THREADS_MAX 64
|
||||
/* We have no predefined limit on the number of threads. */
|
||||
#undef PTHREAD_THREADS_MAX
|
||||
|
||||
/* Maximum amount by which a process can descrease its asynchronous I/O
|
||||
priority level. */
|
||||
#define AIO_PRIO_DELTA_MAX 20
|
||||
|
||||
/* Minimum size for a thread. We are free to choose a reasonable value. */
|
||||
#define PTHREAD_STACK_MIN 24576
|
||||
|
||||
/* Maximum number of timer expiration overruns. */
|
||||
#define DELAYTIMER_MAX 2147483647
|
||||
|
||||
/* Maximum tty name length. */
|
||||
#define TTY_NAME_MAX 32
|
||||
|
||||
/* Maximum login name length. This is arbitrary. */
|
||||
#define LOGIN_NAME_MAX 256
|
||||
|
||||
/* Maximum host name length. */
|
||||
#define HOST_NAME_MAX 64
|
||||
|
||||
/* Maximum message queue priority level. */
|
||||
#define MQ_PRIO_MAX 32768
|
||||
|
||||
/* Maximum value the semaphore can have. */
|
||||
#define SEM_VALUE_MAX (2147483647)
|
20
sysdeps/unix/sysv/linux/sparc/bits/pthread_stack_min.h
Normal file
20
sysdeps/unix/sysv/linux/sparc/bits/pthread_stack_min.h
Normal file
@ -0,0 +1,20 @@
|
||||
/* Definition of PTHREAD_STACK_MIN. Linux/SPARC 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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||
not, see <https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Minimum size for a thread. We are free to choose a reasonable value. */
|
||||
#define PTHREAD_STACK_MIN 24576
|
39
sysdeps/unix/sysv/linux/sysconf-pthread_stack_min.h
Normal file
39
sysdeps/unix/sysv/linux/sysconf-pthread_stack_min.h
Normal file
@ -0,0 +1,39 @@
|
||||
/* __get_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
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Return sysconf (_SC_THREAD_STACK_MIN). */
|
||||
|
||||
static inline long int
|
||||
__get_pthread_stack_min (void)
|
||||
{
|
||||
/* sysconf (_SC_THREAD_STACK_MIN) >= sysconf (_SC_MINSIGSTKSZ). */
|
||||
long int pthread_stack_min = GLRO(dl_minsigstacksize);
|
||||
assert (pthread_stack_min != 0);
|
||||
_Static_assert (__builtin_constant_p (PTHREAD_STACK_MIN),
|
||||
"PTHREAD_STACK_MIN is constant");
|
||||
/* Return MAX (PTHREAD_STACK_MIN, pthread_stack_min). */
|
||||
if (pthread_stack_min < PTHREAD_STACK_MIN)
|
||||
pthread_stack_min = PTHREAD_STACK_MIN;
|
||||
/* We have a private interface, __pthread_get_minstack@GLIBC_PRIVATE
|
||||
which returns a larger size that includes the required TLS variable
|
||||
space which has been determined at startup. For sysconf here we are
|
||||
conservative and don't include the space required for TLS access.
|
||||
Eventually the TLS variable space will not be part of the stack
|
||||
(Bug 11787). */
|
||||
return pthread_stack_min;
|
||||
}
|
Loading…
Reference in New Issue
Block a user