summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2014-09-24 12:39:12 +0000
committerkib <kib@FreeBSD.org>2014-09-24 12:39:12 +0000
commita14de80022b68a2a2de83632a3ad04918609b3b3 (patch)
tree51454fe2744832e4b4d3476e3e06d54e83f42f54
parentb5f21a6a8117864409084c11ce2f421427bbb3b7 (diff)
downloadFreeBSD-src-a14de80022b68a2a2de83632a3ad04918609b3b3.zip
FreeBSD-src-a14de80022b68a2a2de83632a3ad04918609b3b3.tar.gz
Switch the defaults to not split the RLIMIT_STACK-sized initial thread
stack into the stacks of the created threads. Add knob LIBPTHREAD_SPLITSTACK_MAIN to restore the older behaviour. Sponsored by: The FreeBSD Foundation MFC after: 3 weeks
-rw-r--r--lib/libthr/thread/thr_init.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/libthr/thread/thr_init.c b/lib/libthr/thread/thr_init.c
index 9bf0e29..6d6a532 100644
--- a/lib/libthr/thread/thr_init.c
+++ b/lib/libthr/thread/thr_init.c
@@ -445,7 +445,7 @@ init_private(void)
struct rlimit rlim;
size_t len;
int mib[2];
- char *env;
+ char *env, *env_bigstack, *env_splitstack;
_thr_umutex_init(&_mutex_static_lock);
_thr_umutex_init(&_cond_static_lock);
@@ -473,8 +473,9 @@ init_private(void)
len = sizeof (_usrstack);
if (sysctl(mib, 2, &_usrstack, &len, NULL, 0) == -1)
PANIC("Cannot get kern.usrstack from sysctl");
- env = getenv("LIBPTHREAD_BIGSTACK_MAIN");
- if (env != NULL) {
+ env_bigstack = getenv("LIBPTHREAD_BIGSTACK_MAIN");
+ env_splitstack = getenv("LIBPTHREAD_SPLITSTACK_MAIN");
+ if (env_bigstack != NULL || env_splitstack == NULL) {
if (getrlimit(RLIMIT_STACK, &rlim) == -1)
PANIC("Cannot get stack rlimit");
_thr_stack_initial = rlim.rlim_cur;
OpenPOWER on IntegriCloud