var NonblockingPipe … var Fcntl … var Closeonexec … func sigismember(mask *sigset, i int) bool { … } func Sigisblocked(i int) bool { … } type M … var waitForSigusr1 … // WaitForSigusr1 blocks until a SIGUSR1 is received. It calls ready // when it is set up to receive SIGUSR1. The ready function should // cause a SIGUSR1 to be sent. The r and w arguments are a pipe that // the signal handler can use to report when the signal is received. // // Once SIGUSR1 is received, it returns the ID of the current M and // the ID of the M the SIGUSR1 was received on. If the caller writes // a non-zero byte to w, WaitForSigusr1 returns immediately with -1, -1. func WaitForSigusr1(r, w int32, ready func(mp *M)) (int64, int64) { … } // waitForSigusr1Callback is called from the signal handler during // WaitForSigusr1. It must not have write barriers because there may // not be a P. // //go:nowritebarrierrec func waitForSigusr1Callback(gp *g) bool { … } // SendSigusr1 sends SIGUSR1 to mp. func SendSigusr1(mp *M) { … } const O_WRONLY … const O_CREAT … const O_TRUNC …