• Elias Naur's avatar
    runtime: use a proper type, sigset, for m.sigmask · 7db77271
    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.
    
    R=go1.7
    
    Change-Id: Ib460379f063eb83d393e1c5efe7333a643c1595e
    Reviewed-on: https://go-review.googlesource.com/16942Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
    Run-TryBot: Ian Lance Taylor <iant@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    7db77271
os1_freebsd.go 5.63 KB