Source file
src/os/signal/signal_linux_test.go
1
2
3
4
5
6
7
8 package signal
9
10 import (
11 "os"
12 "syscall"
13 "testing"
14 "time"
15 )
16
17 const prSetKeepCaps = 8
18
19
20
21
22
23 func TestAllThreadsSyscallSignals(t *testing.T) {
24 if _, _, err := syscall.AllThreadsSyscall(syscall.SYS_PRCTL, prSetKeepCaps, 0, 0); err == syscall.ENOTSUP {
25 t.Skip("AllThreadsSyscall disabled with cgo")
26 }
27
28 sig := make(chan os.Signal, 1)
29 Notify(sig, os.Interrupt)
30
31 for i := 0; i <= 100; i++ {
32 if _, _, errno := syscall.AllThreadsSyscall(syscall.SYS_PRCTL, prSetKeepCaps, uintptr(i&1), 0); errno != 0 {
33 t.Fatalf("[%d] failed to set KEEP_CAPS=%d: %v", i, i&1, errno)
34 }
35 }
36
37 select {
38 case <-time.After(10 * time.Millisecond):
39 case <-sig:
40 t.Fatal("unexpected signal")
41 }
42 Stop(sig)
43 }
44
View as plain text