aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2014-10-16 22:39:45 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2014-10-16 22:39:45 +0000
commit6c4ee063a5a71786e43ecf39bcb15121c449b8c6 (patch)
treebc80787210421ca1a94a7a639a8da61ddd21b35c
parente4c6530e821ba32c47802cecdb5817995a8b4027 (diff)
downloadgcc-6c4ee063a5a71786e43ecf39bcb15121c449b8c6.zip
gcc-6c4ee063a5a71786e43ecf39bcb15121c449b8c6.tar.gz
gcc-6c4ee063a5a71786e43ecf39bcb15121c449b8c6.tar.bz2
runtime: Don't create threads with a small stack.
We want to create goroutines with a small stack, at least on systems where split stacks are supported. We don't need to create threads with a small stack. From-SVN: r216353
-rw-r--r--libgo/runtime/proc.c55
1 files changed, 0 insertions, 55 deletions
diff --git a/libgo/runtime/proc.c b/libgo/runtime/proc.c
index 87cd3eda..8907c3a 100644
--- a/libgo/runtime/proc.c
+++ b/libgo/runtime/proc.c
@@ -167,15 +167,11 @@ runtime_setmg(M* mp, G* gp)
g = gp;
}
-// The static TLS size. See runtime_newm.
-static int tlssize;
-
// Start a new thread.
static void
runtime_newosproc(M *mp)
{
pthread_attr_t attr;
- size_t stacksize;
sigset_t clear, old;
pthread_t tid;
int ret;
@@ -185,19 +181,6 @@ runtime_newosproc(M *mp)
if(pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED) != 0)
runtime_throw("pthread_attr_setdetachstate");
- stacksize = PTHREAD_STACK_MIN;
-
- // With glibc before version 2.16 the static TLS size is taken
- // out of the stack size, and we get an error or a crash if
- // there is not enough stack space left. Add it back in if we
- // can, in case the program uses a lot of TLS space. FIXME:
- // This can be disabled in glibc 2.16 and later, if the bug is
- // indeed fixed then.
- stacksize += tlssize;
-
- if(pthread_attr_setstacksize(&attr, stacksize) != 0)
- runtime_throw("pthread_attr_setstacksize");
-
// Block signals during pthread_create so that the new thread
// starts with signals disabled. It will enable them in minit.
sigfillset(&clear);
@@ -306,43 +289,6 @@ runtime_mcall(void (*pfn)(G*))
}
}
-#ifdef HAVE_DL_ITERATE_PHDR
-
-// Called via dl_iterate_phdr.
-
-static int
-addtls(struct dl_phdr_info* info, size_t size __attribute__ ((unused)), void *data)
-{
- size_t *total = (size_t *)data;
- unsigned int i;
-
- for(i = 0; i < info->dlpi_phnum; ++i) {
- if(info->dlpi_phdr[i].p_type == PT_TLS)
- *total += info->dlpi_phdr[i].p_memsz;
- }
- return 0;
-}
-
-// Set the total TLS size.
-
-static void
-inittlssize()
-{
- size_t total = 0;
-
- dl_iterate_phdr(addtls, (void *)&total);
- tlssize = total;
-}
-
-#else
-
-static void
-inittlssize()
-{
-}
-
-#endif
-
// Goroutine scheduler
// The scheduler's job is to distribute ready-to-run goroutines over worker threads.
//
@@ -481,7 +427,6 @@ runtime_schedinit(void)
g->m = m;
initcontext();
- inittlssize();
runtime_sched.maxmcount = 10000;
runtime_precisestack = 0;