svn commit: r273133 - stable/10/lib/libthr/thread

Konstantin Belousov kib at FreeBSD.org
Wed Oct 15 13:36:02 UTC 2014


Author: kib
Date: Wed Oct 15 13:36:01 2014
New Revision: 273133
URL: https://svnweb.freebsd.org/changeset/base/273133

Log:
  MFC r272069:
  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.

Modified:
  stable/10/lib/libthr/thread/thr_init.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/lib/libthr/thread/thr_init.c
==============================================================================
--- stable/10/lib/libthr/thread/thr_init.c	Wed Oct 15 13:22:33 2014	(r273132)
+++ stable/10/lib/libthr/thread/thr_init.c	Wed Oct 15 13:36:01 2014	(r273133)
@@ -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;


More information about the svn-src-all mailing list