diff options
author | Elias Naur <elias.naur@gmail.com> | 2015-11-17 11:41:06 +0100 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2015-11-17 21:23:06 +0000 |
commit | 7db77271e423604c3b58b4c4da60ddc3c3eecc0d (patch) | |
tree | 8050bbe90812de35dec8eb238637d120d90b397f /src/runtime/os_openbsd.go | |
parent | 07d48993f257a6536d83555bb8cc9daffa07dd56 (diff) | |
download | go-7db77271e423604c3b58b4c4da60ddc3c3eecc0d.tar.gz go-7db77271e423604c3b58b4c4da60ddc3c3eecc0d.zip |
runtime: use a proper type, sigset, for m.sigmask
Replace the cross platform but unsafe [4]uintptr type with a OS
specific type, sigset. Most OSes already define sigset, and this
change defines a suitable sigset for the OSes that don't (darwin,
openbsd). The OSes that don't use m.sigmask (windows, plan9, nacl)
now defines sigset as the empty type, struct{}.
The gain is strongly typed access to m.sigmask, saving a dynamic
size sanity check and unsafe.Pointer casting. Also, some storage is
saved for each M, since [4]uinptr was conservative for most OSes.
The cost is that OSes that don't need m.sigmask has to define sigset.
completes ./all.bash with GOOS linux, on amd64
completes ./make.bash with GOOSes openbsd, android, plan9, windows,
darwin, solaris, netbsd, freebsd, dragonfly, all amd64.
With GOOS=nacl ./make.bash failed with a seemingly unrelated error.
R=go1.7
Change-Id: Ib460379f063eb83d393e1c5efe7333a643c1595e
Reviewed-on: https://go-review.googlesource.com/16942
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/runtime/os_openbsd.go')
-rw-r--r-- | src/runtime/os_openbsd.go | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/runtime/os_openbsd.go b/src/runtime/os_openbsd.go index 12f4cd1a24..b6285e4972 100644 --- a/src/runtime/os_openbsd.go +++ b/src/runtime/os_openbsd.go @@ -18,7 +18,7 @@ func sigaction(sig int32, new, old *sigactiont) func sigaltstack(new, old *stackt) //go:noescape -func sigprocmask(mode int32, new uint32) uint32 +func sigprocmask(mode int32, new sigset) sigset //go:noescape func sysctl(mib *uint32, miblen uint32, out *byte, size *uintptr, dst *byte, ndst uintptr) int32 |