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 5package signal 6 7import ( 8 "os" 9 "syscall" 10) 11 12var sigtab = make(map[os.Signal]int) 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() string 20 21func init() { 22 watchSignalLoop = loop 23} 24 25func loop() { 26 for { 27 process(syscall.Note(signal_recv())) 28 } 29} 30 31const numSig = 256 32 33func signum(sig os.Signal) int { 34 switch sig := sig.(type) { 35 case syscall.Note: 36 n, ok := sigtab[sig] 37 if !ok { 38 n = len(sigtab) + 1 39 if n > numSig { 40 return -1 41 } 42 sigtab[sig] = n 43 } 44 return n 45 default: 46 return -1 47 } 48} 49 50func enableSignal(sig int) { 51 signal_enable(uint32(sig)) 52} 53 54func disableSignal(sig int) { 55 signal_disable(uint32(sig)) 56} 57 58func ignoreSignal(sig int) { 59 signal_ignore(uint32(sig)) 60} 61 62func signalIgnored(sig int) bool { 63 return signal_ignored(uint32(sig)) 64} 65