]> git.ipfire.org Git - thirdparty/gcc.git/blob - libgo/go/os/signal/signal_plan9.go
libgo: update to Go1.14beta1
[thirdparty/gcc.git] / libgo / go / os / signal / signal_plan9.go
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 package signal
6
7 import (
8 "os"
9 "syscall"
10 )
11
12 var sigtab = make(map[os.Signal]int)
13
14 // In sig.s; jumps to runtime.
15 func signal_disable(uint32)
16 func signal_enable(uint32)
17 func signal_ignore(uint32)
18 func signal_ignored(uint32) bool
19 func signal_recv() string
20
21 func init() {
22 signal_enable(0) // first call - initialize
23
24 watchSignalLoop = loop
25 }
26
27 func loop() {
28 for {
29 process(syscall.Note(signal_recv()))
30 }
31 }
32
33 const numSig = 256
34
35 func signum(sig os.Signal) int {
36 switch sig := sig.(type) {
37 case syscall.Note:
38 n, ok := sigtab[sig]
39 if !ok {
40 n = len(sigtab) + 1
41 if n > numSig {
42 return -1
43 }
44 sigtab[sig] = n
45 }
46 return n
47 default:
48 return -1
49 }
50 }
51
52 func enableSignal(sig int) {
53 signal_enable(uint32(sig))
54 }
55
56 func disableSignal(sig int) {
57 signal_disable(uint32(sig))
58 }
59
60 func ignoreSignal(sig int) {
61 signal_ignore(uint32(sig))
62 }
63
64 func signalIgnored(sig int) bool {
65 return signal_ignored(uint32(sig))
66 }