podman

Форк
0
/
signal_unix.go 
96 строк · 3.0 Кб
1
//go:build aix || darwin || dragonfly || freebsd || netbsd || openbsd || solaris || zos
2

3
// Signal handling for Linux only.
4
package signal
5

6
import (
7
	"syscall"
8
)
9

10
const (
11
	sigrtmin = 34
12
	sigrtmax = 64
13

14
	SIGWINCH = syscall.SIGWINCH
15
)
16

17
// SignalMap is a map of Linux signals.
18
// These constants are sourced from the Linux version of golang.org/x/sys/unix
19
// (I don't see much risk of this changing).
20
// This should work as long as Podman only runs containers on Linux, which seems
21
// a safe assumption for now.
22
var SignalMap = map[string]syscall.Signal{
23
	"ABRT":     syscall.Signal(0x6),
24
	"ALRM":     syscall.Signal(0xe),
25
	"BUS":      syscall.Signal(0x7),
26
	"CHLD":     syscall.Signal(0x11),
27
	"CLD":      syscall.Signal(0x11),
28
	"CONT":     syscall.Signal(0x12),
29
	"FPE":      syscall.Signal(0x8),
30
	"HUP":      syscall.Signal(0x1),
31
	"ILL":      syscall.Signal(0x4),
32
	"INT":      syscall.Signal(0x2),
33
	"IO":       syscall.Signal(0x1d),
34
	"IOT":      syscall.Signal(0x6),
35
	"KILL":     syscall.Signal(0x9),
36
	"PIPE":     syscall.Signal(0xd),
37
	"POLL":     syscall.Signal(0x1d),
38
	"PROF":     syscall.Signal(0x1b),
39
	"PWR":      syscall.Signal(0x1e),
40
	"QUIT":     syscall.Signal(0x3),
41
	"SEGV":     syscall.Signal(0xb),
42
	"STKFLT":   syscall.Signal(0x10),
43
	"STOP":     syscall.Signal(0x13),
44
	"SYS":      syscall.Signal(0x1f),
45
	"TERM":     syscall.Signal(0xf),
46
	"TRAP":     syscall.Signal(0x5),
47
	"TSTP":     syscall.Signal(0x14),
48
	"TTIN":     syscall.Signal(0x15),
49
	"TTOU":     syscall.Signal(0x16),
50
	"URG":      syscall.Signal(0x17),
51
	"USR1":     syscall.Signal(0xa),
52
	"USR2":     syscall.Signal(0xc),
53
	"VTALRM":   syscall.Signal(0x1a),
54
	"WINCH":    syscall.Signal(0x1c),
55
	"XCPU":     syscall.Signal(0x18),
56
	"XFSZ":     syscall.Signal(0x19),
57
	"RTMIN":    sigrtmin,
58
	"RTMIN+1":  sigrtmin + 1,
59
	"RTMIN+2":  sigrtmin + 2,
60
	"RTMIN+3":  sigrtmin + 3,
61
	"RTMIN+4":  sigrtmin + 4,
62
	"RTMIN+5":  sigrtmin + 5,
63
	"RTMIN+6":  sigrtmin + 6,
64
	"RTMIN+7":  sigrtmin + 7,
65
	"RTMIN+8":  sigrtmin + 8,
66
	"RTMIN+9":  sigrtmin + 9,
67
	"RTMIN+10": sigrtmin + 10,
68
	"RTMIN+11": sigrtmin + 11,
69
	"RTMIN+12": sigrtmin + 12,
70
	"RTMIN+13": sigrtmin + 13,
71
	"RTMIN+14": sigrtmin + 14,
72
	"RTMIN+15": sigrtmin + 15,
73
	"RTMAX-14": sigrtmax - 14,
74
	"RTMAX-13": sigrtmax - 13,
75
	"RTMAX-12": sigrtmax - 12,
76
	"RTMAX-11": sigrtmax - 11,
77
	"RTMAX-10": sigrtmax - 10,
78
	"RTMAX-9":  sigrtmax - 9,
79
	"RTMAX-8":  sigrtmax - 8,
80
	"RTMAX-7":  sigrtmax - 7,
81
	"RTMAX-6":  sigrtmax - 6,
82
	"RTMAX-5":  sigrtmax - 5,
83
	"RTMAX-4":  sigrtmax - 4,
84
	"RTMAX-3":  sigrtmax - 3,
85
	"RTMAX-2":  sigrtmax - 2,
86
	"RTMAX-1":  sigrtmax - 1,
87
	"RTMAX":    sigrtmax,
88
}
89

90
// IsSignalIgnoredBySigProxy determines whether sig-proxy should ignore syscall signal
91
func IsSignalIgnoredBySigProxy(s syscall.Signal) bool {
92
	// Ignore SIGCHLD and SIGPIPE - these are most likely intended for the podman command itself.
93
	// SIGURG was added because of golang 1.14 and its preemptive changes causing more signals to "show up".
94
	// https://github.com/containers/podman/issues/5483
95
	return s == syscall.SIGCHLD || s == syscall.SIGPIPE || s == syscall.SIGURG
96
}
97

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.