diff options
author | Ian Lance Taylor <iant@golang.org> | 2016-09-23 17:54:51 -0700 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2016-09-24 01:39:48 +0000 |
commit | ab552aa3b69deb208b38677880e86aa41c3a9e47 (patch) | |
tree | 076f3b41a7a38d30581f206e0a90b59e32129190 /src/runtime/os_dragonfly.go | |
parent | fd296282e0a5058351954f1a7ea2dac5ef87f052 (diff) | |
download | go-ab552aa3b69deb208b38677880e86aa41c3a9e47.tar.gz go-ab552aa3b69deb208b38677880e86aa41c3a9e47.zip |
runtime: unify some signal handling functions
Unify the OS-specific versions of msigsave, msigrestore, sigblock,
updatesigmask, and unblocksig into single versions in signal_unix.go.
To do this, make sigprocmask work the same way on all systems, which
required adding a definition of sigprocmask for linux and openbsd.
Also add a single OS-specific function sigmaskToSigset.
Change-Id: I7cbf75131dddb57eeefe648ef845b0791404f785
Reviewed-on: https://go-review.googlesource.com/29689
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Diffstat (limited to 'src/runtime/os_dragonfly.go')
-rw-r--r-- | src/runtime/os_dragonfly.go | 29 |
1 files changed, 4 insertions, 25 deletions
diff --git a/src/runtime/os_dragonfly.go b/src/runtime/os_dragonfly.go index 65f98a97f6..c71a4b9392 100644 --- a/src/runtime/os_dragonfly.go +++ b/src/runtime/os_dragonfly.go @@ -177,21 +177,6 @@ func mpreinit(mp *m) { mp.gsignal.m = mp } -//go:nosplit -func msigsave(mp *m) { - sigprocmask(_SIG_SETMASK, nil, &mp.sigmask) -} - -//go:nosplit -func msigrestore(sigmask sigset) { - sigprocmask(_SIG_SETMASK, &sigmask, nil) -} - -//go:nosplit -func sigblock() { - sigprocmask(_SIG_SETMASK, &sigset_all, nil) -} - // Called to initialize a new m (including the bootstrap m). // Called on the new thread, cannot allocate memory. func minit() { @@ -322,14 +307,8 @@ func signalstack(s *stack) { //go:nosplit //go:nowritebarrierrec -func updatesigmask(m sigmask) { - var mask sigset - copy(mask.__bits[:], m[:]) - sigprocmask(_SIG_SETMASK, &mask, nil) -} - -func unblocksig(sig int32) { - var mask sigset - mask.__bits[(sig-1)/32] |= 1 << ((uint32(sig) - 1) & 31) - sigprocmask(_SIG_UNBLOCK, &mask, nil) +func sigmaskToSigset(m sigmask) sigset { + var set sigset + copy(set.__bits[:], m[:]) + return set } |