mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime: merge setting new signal mask in minit
All the variants that sets the new signal mask in minit do the same thing, so merge them. This requires an OS-specific sigdelset function; the function already exists for linux, and is now added for other OS's. Change-Id: Ie96f6f02e2cf09c43005085985a078bd9581f670 Reviewed-on: https://go-review.googlesource.com/29771 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
3390294308
commit
ac24388e5e
8 changed files with 60 additions and 83 deletions
|
|
@ -228,8 +228,6 @@ func minit() {
|
|||
_g_ := getg()
|
||||
_g_.m.procid = uint64(lwp_self())
|
||||
|
||||
// Initialize signal handling.
|
||||
|
||||
// On NetBSD a thread created by pthread_create inherits the
|
||||
// signal stack of the creating thread. We always create a
|
||||
// new signal stack here, to avoid having two Go threads using
|
||||
|
|
@ -240,14 +238,7 @@ func minit() {
|
|||
signalstack(&_g_.m.gsignal.stack)
|
||||
_g_.m.newSigstack = true
|
||||
|
||||
// restore signal mask from m.sigmask and unblock essential signals
|
||||
nmask := _g_.m.sigmask
|
||||
for i := range sigtable {
|
||||
if sigtable[i].flags&_SigUnblock != 0 {
|
||||
nmask.__bits[(i-1)/32] &^= 1 << ((uint32(i) - 1) & 31)
|
||||
}
|
||||
}
|
||||
sigprocmask(_SIG_SETMASK, &nmask, nil)
|
||||
minitSignalMask()
|
||||
}
|
||||
|
||||
// Called from dropm to undo the effect of an minit.
|
||||
|
|
@ -317,5 +308,9 @@ func sigmaskToSigset(m sigmask) sigset {
|
|||
return set
|
||||
}
|
||||
|
||||
func sigdelset(mask *sigset, i int) {
|
||||
mask.__bits[(i-1)/32] &^= 1 << ((uint32(i) - 1) & 31)
|
||||
}
|
||||
|
||||
func (c *sigctxt) fixsigcode(sig uint32) {
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue