1// Copyright 2012 The Go Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style 3// license that can be found in the LICENSE file. 4 5//go:build unix || (js && wasm) || wasip1 || windows 6 7package signal 8 9import ( 10 "os" 11 "syscall" 12) 13 14// Defined by the runtime package. 15func signal_disable(uint32) 16func signal_enable(uint32) 17func signal_ignore(uint32) 18func signal_ignored(uint32) bool 19func signal_recv() uint32 20 21func loop() { 22 for { 23 process(syscall.Signal(signal_recv())) 24 } 25} 26 27func init() { 28 watchSignalLoop = loop 29} 30 31const ( 32 numSig = 65 // max across all systems 33) 34 35func signum(sig os.Signal) int { 36 switch sig := sig.(type) { 37 case syscall.Signal: 38 i := int(sig) 39 if i < 0 || i >= numSig { 40 return -1 41 } 42 return i 43 default: 44 return -1 45 } 46} 47 48func enableSignal(sig int) { 49 signal_enable(uint32(sig)) 50} 51 52func disableSignal(sig int) { 53 signal_disable(uint32(sig)) 54} 55 56func ignoreSignal(sig int) { 57 signal_ignore(uint32(sig)) 58} 59 60func signalIgnored(sig int) bool { 61 return signal_ignored(uint32(sig)) 62} 63