• Elias Naur's avatar
    runtime: use a proper type, sigset, for m.sigmask · a7383fc4
    Elias Naur authored
    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.
    
    [Replay of CL 16942 by Elias Naur.]
    
    Change-Id: I98f144d626033ae5318576115ed635415ac71b2c
    Reviewed-on: https://go-review.googlesource.com/17033Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
    Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
    Run-TryBot: Russ Cox <rsc@golang.org>
    a7383fc4
os_openbsd.go 894 Bytes