// Copyright 2012 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows package signal import ( "os" "syscall" ) // In assembly. func signal_disable(uint32) func signal_enable(uint32) func signal_ignore(uint32) func signal_recv() uint32 func loop() { for { process(syscall.Signal(signal_recv())) } } func init() { signal_enable(0) // first call - initialize go loop() } const ( numSig = 65 // max across all systems ) func signum(sig os.Signal) int { switch sig := sig.(type) { case syscall.Signal: i := int(sig) if i < 0 || i >= numSig { return -1 } return i default: return -1 } } func enableSignal(sig int) { signal_enable(uint32(sig)) } func disableSignal(sig int) { signal_disable(uint32(sig)) } func ignoreSignal(sig int) { signal_ignore(uint32(sig)) }