aboutsummaryrefslogtreecommitdiff
path: root/src/pkg/runtime/thread_linux.c
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2013-02-18 13:43:12 -0500
committerRuss Cox <rsc@golang.org>2013-02-18 13:43:12 -0500
commit86d509b463d92be4ea9f51d61760d8383b1f96e4 (patch)
tree05a3311a06291b8d39a9702f7ec9bb3a7892d24d /src/pkg/runtime/thread_linux.c
parent07e87885ad4094aa27f166d1e666b29b910c0429 (diff)
downloadgo-86d509b463d92be4ea9f51d61760d8383b1f96e4.tar.xz
runtime: preparation for non-Go threads running Go code
* Handle p==nil in signalstack by setting SS_DISABLE flag. * Make minit only allocate a signal g if there's not one already. R=golang-dev, r CC=golang-dev https://golang.org/cl/7323072
Diffstat (limited to 'src/pkg/runtime/thread_linux.c')
-rw-r--r--src/pkg/runtime/thread_linux.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/pkg/runtime/thread_linux.c b/src/pkg/runtime/thread_linux.c
index 1a7eb7240c..fdd40c223e 100644
--- a/src/pkg/runtime/thread_linux.c
+++ b/src/pkg/runtime/thread_linux.c
@@ -175,7 +175,8 @@ void
runtime·minit(void)
{
// Initialize signal handling.
- m->gsignal = runtime·malg(32*1024); // OS X wants >=8K, Linux >=2K
+ if(m->gsignal == nil)
+ m->gsignal = runtime·malg(32*1024); // OS X wants >=8K, Linux >=2K
runtime·signalstack((byte*)m->gsignal->stackguard - StackGuard, 32*1024);
runtime·rtsigprocmask(SIG_SETMASK, &sigset_none, nil, sizeof(Sigset));
}