github.com/hanks177/podman/v4@v4.1.3-0.20220613032544-16d90015bc83/pkg/signal/signal_linux.go (about) 1 //go:build linux && !mips && !mipsle && !mips64 && !mips64le 2 // +build linux,!mips,!mipsle,!mips64,!mips64le 3 4 // Signal handling for Linux only. 5 package signal 6 7 // Copyright 2013-2018 Docker, Inc. 8 9 // NOTE: this package has originally been copied from github.com/docker/docker. 10 11 import ( 12 "os" 13 "os/signal" 14 "syscall" 15 16 "golang.org/x/sys/unix" 17 ) 18 19 const ( 20 sigrtmin = 34 21 sigrtmax = 64 22 23 SIGWINCH = syscall.SIGWINCH // For cross-compilation with Windows 24 ) 25 26 // SignalMap is a map of Linux signals. 27 var SignalMap = map[string]syscall.Signal{ 28 "ABRT": unix.SIGABRT, 29 "ALRM": unix.SIGALRM, 30 "BUS": unix.SIGBUS, 31 "CHLD": unix.SIGCHLD, 32 "CLD": unix.SIGCLD, 33 "CONT": unix.SIGCONT, 34 "FPE": unix.SIGFPE, 35 "HUP": unix.SIGHUP, 36 "ILL": unix.SIGILL, 37 "INT": unix.SIGINT, 38 "IO": unix.SIGIO, 39 "IOT": unix.SIGIOT, 40 "KILL": unix.SIGKILL, 41 "PIPE": unix.SIGPIPE, 42 "POLL": unix.SIGPOLL, 43 "PROF": unix.SIGPROF, 44 "PWR": unix.SIGPWR, 45 "QUIT": unix.SIGQUIT, 46 "SEGV": unix.SIGSEGV, 47 "STKFLT": unix.SIGSTKFLT, 48 "STOP": unix.SIGSTOP, 49 "SYS": unix.SIGSYS, 50 "TERM": unix.SIGTERM, 51 "TRAP": unix.SIGTRAP, 52 "TSTP": unix.SIGTSTP, 53 "TTIN": unix.SIGTTIN, 54 "TTOU": unix.SIGTTOU, 55 "URG": unix.SIGURG, 56 "USR1": unix.SIGUSR1, 57 "USR2": unix.SIGUSR2, 58 "VTALRM": unix.SIGVTALRM, 59 "WINCH": unix.SIGWINCH, 60 "XCPU": unix.SIGXCPU, 61 "XFSZ": unix.SIGXFSZ, 62 "RTMIN": sigrtmin, 63 "RTMIN+1": sigrtmin + 1, 64 "RTMIN+2": sigrtmin + 2, 65 "RTMIN+3": sigrtmin + 3, 66 "RTMIN+4": sigrtmin + 4, 67 "RTMIN+5": sigrtmin + 5, 68 "RTMIN+6": sigrtmin + 6, 69 "RTMIN+7": sigrtmin + 7, 70 "RTMIN+8": sigrtmin + 8, 71 "RTMIN+9": sigrtmin + 9, 72 "RTMIN+10": sigrtmin + 10, 73 "RTMIN+11": sigrtmin + 11, 74 "RTMIN+12": sigrtmin + 12, 75 "RTMIN+13": sigrtmin + 13, 76 "RTMIN+14": sigrtmin + 14, 77 "RTMIN+15": sigrtmin + 15, 78 "RTMAX-14": sigrtmax - 14, 79 "RTMAX-13": sigrtmax - 13, 80 "RTMAX-12": sigrtmax - 12, 81 "RTMAX-11": sigrtmax - 11, 82 "RTMAX-10": sigrtmax - 10, 83 "RTMAX-9": sigrtmax - 9, 84 "RTMAX-8": sigrtmax - 8, 85 "RTMAX-7": sigrtmax - 7, 86 "RTMAX-6": sigrtmax - 6, 87 "RTMAX-5": sigrtmax - 5, 88 "RTMAX-4": sigrtmax - 4, 89 "RTMAX-3": sigrtmax - 3, 90 "RTMAX-2": sigrtmax - 2, 91 "RTMAX-1": sigrtmax - 1, 92 "RTMAX": sigrtmax, 93 } 94 95 // CatchAll catches all signals and relays them to the specified channel. 96 func CatchAll(sigc chan os.Signal) { 97 handledSigs := make([]os.Signal, 0, len(SignalMap)) 98 for _, s := range SignalMap { 99 handledSigs = append(handledSigs, s) 100 } 101 signal.Notify(sigc, handledSigs...) 102 } 103 104 // StopCatch stops catching the signals and closes the specified channel. 105 func StopCatch(sigc chan os.Signal) { 106 signal.Stop(sigc) 107 close(sigc) 108 }