Retro68/gcc/libgo/go/os/signal/signal_unix.go

64 lines
1.1 KiB
Go
Raw Normal View History

2012-03-27 23:13:14 +00:00
// 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.
2019-06-02 15:48:37 +00:00
// +build aix darwin dragonfly freebsd hurd js,wasm linux nacl netbsd openbsd solaris windows
2012-03-27 23:13:14 +00:00
package signal
import (
"os"
"syscall"
)
2017-04-10 11:32:00 +00:00
// Defined by the runtime package.
2014-09-21 17:33:12 +00:00
func signal_disable(uint32)
2012-03-27 23:13:14 +00:00
func signal_enable(uint32)
2017-04-10 11:32:00 +00:00
func signal_ignore(uint32)
2019-06-02 15:48:37 +00:00
func signal_ignored(uint32) bool
2012-03-27 23:13:14 +00:00
func signal_recv() uint32
func loop() {
for {
process(syscall.Signal(signal_recv()))
}
}
func init() {
signal_enable(0) // first call - initialize
go loop()
}
2014-09-21 17:33:12 +00:00
const (
numSig = 65 // max across all systems
)
func signum(sig os.Signal) int {
2012-03-27 23:13:14 +00:00
switch sig := sig.(type) {
case syscall.Signal:
2014-09-21 17:33:12 +00:00
i := int(sig)
if i < 0 || i >= numSig {
return -1
}
return i
2012-03-27 23:13:14 +00:00
default:
2014-09-21 17:33:12 +00:00
return -1
2012-03-27 23:13:14 +00:00
}
}
2014-09-21 17:33:12 +00:00
func enableSignal(sig int) {
signal_enable(uint32(sig))
}
func disableSignal(sig int) {
signal_disable(uint32(sig))
}
2017-04-10 11:32:00 +00:00
func ignoreSignal(sig int) {
signal_ignore(uint32(sig))
}
2019-06-02 15:48:37 +00:00
func signalIgnored(sig int) bool {
return signal_ignored(uint32(sig))
}