123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- // 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_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))
- }
|