}
//go:nosplit
-func msigrestore(mp *m) {
- sigprocmask(_SIG_SETMASK, &mp.sigmask, nil)
+func msigrestore(sigmask sigset) {
+ sigprocmask(_SIG_SETMASK, &sigmask, nil)
}
//go:nosplit
}
//go:nosplit
-func msigrestore(mp *m) {
- sigprocmask(_SIG_SETMASK, &mp.sigmask, nil)
+func msigrestore(sigmask sigset) {
+ sigprocmask(_SIG_SETMASK, &sigmask, nil)
}
//go:nosplit
}
//go:nosplit
-func msigrestore(mp *m) {
- sigprocmask(_SIG_SETMASK, &mp.sigmask, nil)
+func msigrestore(sigmask sigset) {
+ sigprocmask(_SIG_SETMASK, &sigmask, nil)
}
//go:nosplit
}
//go:nosplit
-func msigrestore(mp *m) {
- smask := &mp.sigmask
- rtsigprocmask(_SIG_SETMASK, smask, nil, int32(unsafe.Sizeof(*smask)))
+func msigrestore(sigmask sigset) {
+ rtsigprocmask(_SIG_SETMASK, &sigmask, nil, int32(unsafe.Sizeof(sigmask)))
}
//go:nosplit
}
//go:nosplit
-func msigrestore(mp *m) {
+func msigrestore(sigmask sigset) {
}
//go:nosplit
}
//go:nosplit
-func msigrestore(mp *m) {
- sigprocmask(_SIG_SETMASK, &mp.sigmask, nil)
+func msigrestore(sigmask sigset) {
+ sigprocmask(_SIG_SETMASK, &sigmask, nil)
}
//go:nosplit
}
//go:nosplit
-func msigrestore(mp *m) {
- sigprocmask(_SIG_SETMASK, mp.sigmask)
+func msigrestore(sigmask sigset) {
+ sigprocmask(_SIG_SETMASK, sigmask)
}
//go:nosplit
func msigsave(mp *m) {
}
-func msigrestore(mp *m) {
+func msigrestore(sigmask sigset) {
}
func sigblock() {
}
//go:nosplit
-func msigrestore(mp *m) {
+func msigrestore(sigmask sigset) {
}
//go:nosplit
}
//go:nosplit
-func msigrestore(mp *m) {
- sigprocmask(_SIG_SETMASK, &mp.sigmask, nil)
+func msigrestore(sigmask sigset) {
+ sigprocmask(_SIG_SETMASK, &sigmask, nil)
}
//go:nosplit
//go:nosplit
//go:nowritebarrierrec
+//go:noescape
func sigprocmask(how int32, set *sigset, oset *sigset) /* int32 */ {
sysvicall3(&libc_sigprocmask, uintptr(how), uintptr(unsafe.Pointer(set)), uintptr(unsafe.Pointer(oset)))
}
// After the call to setg we can only call nosplit functions
// with no pointer manipulation.
mp := getg().m
- mnext := lockextra(true)
- mp.schedlink.set(mnext)
// Block signals before unminit.
// Unminit unregisters the signal handling stack (but needs g on some systems).
// Setg(nil) clears g, which is the signal handler's cue not to run Go handlers.
// It's important not to try to handle a signal between those two steps.
+ sigmask := mp.sigmask
sigblock()
unminit()
+
+ mnext := lockextra(true)
+ mp.schedlink.set(mnext)
+
setg(nil)
- msigrestore(mp)
// Commit the release of mp.
unlockextra(mp)
+
+ msigrestore(sigmask)
}
// A helper function for EnsureDropM.