From 1ad796677e1ce3f03463c791818176586987c389 Mon Sep 17 00:00:00 2001
|
|
From: Paul Holzinger <paul.holzinger@web.de>
|
|
Date: Mon, 21 Dec 2020 12:30:06 +0100
|
|
Subject: [PATCH] Fix build for mips architecture
|
|
|
|
The signal SIGSTKFLT does not exists on mips architectures.
|
|
Also RTMIN and RTMAX are different.
|
|
|
|
This code is copied from docker.
|
|
|
|
Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
|
|
---
|
|
pkg/signal/signal_linux.go | 1 +
|
|
pkg/signal/signal_linux_mipsx.go | 106 +++++++++++++++++++++++++++++++
|
|
2 files changed, 107 insertions(+)
|
|
create mode 100644 pkg/signal/signal_linux_mipsx.go
|
|
|
|
--- a/pkg/signal/signal_linux.go
|
|
+++ b/pkg/signal/signal_linux.go
|
|
@@ -1,4 +1,5 @@
|
|
// +build linux
|
|
+// +build !mips,!mipsle,!mips64,!mips64le
|
|
|
|
// Signal handling for Linux only.
|
|
package signal
|
|
--- /dev/null
|
|
+++ b/pkg/signal/signal_linux_mipsx.go
|
|
@@ -0,0 +1,106 @@
|
|
+// +build linux
|
|
+// +build mips mipsle mips64 mips64le
|
|
+
|
|
+// Special signal handling for mips architecture
|
|
+package signal
|
|
+
|
|
+// Copyright 2013-2018 Docker, Inc.
|
|
+
|
|
+// NOTE: this package has originally been copied from github.com/docker/docker.
|
|
+
|
|
+import (
|
|
+ "os"
|
|
+ "os/signal"
|
|
+ "syscall"
|
|
+
|
|
+ "golang.org/x/sys/unix"
|
|
+)
|
|
+
|
|
+const (
|
|
+ sigrtmin = 34
|
|
+ sigrtmax = 127
|
|
+)
|
|
+
|
|
+// signalMap is a map of Linux signals.
|
|
+var signalMap = map[string]syscall.Signal{
|
|
+ "ABRT": unix.SIGABRT,
|
|
+ "ALRM": unix.SIGALRM,
|
|
+ "BUS": unix.SIGBUS,
|
|
+ "CHLD": unix.SIGCHLD,
|
|
+ "CLD": unix.SIGCLD,
|
|
+ "CONT": unix.SIGCONT,
|
|
+ "FPE": unix.SIGFPE,
|
|
+ "HUP": unix.SIGHUP,
|
|
+ "ILL": unix.SIGILL,
|
|
+ "INT": unix.SIGINT,
|
|
+ "IO": unix.SIGIO,
|
|
+ "IOT": unix.SIGIOT,
|
|
+ "KILL": unix.SIGKILL,
|
|
+ "PIPE": unix.SIGPIPE,
|
|
+ "POLL": unix.SIGPOLL,
|
|
+ "PROF": unix.SIGPROF,
|
|
+ "PWR": unix.SIGPWR,
|
|
+ "QUIT": unix.SIGQUIT,
|
|
+ "SEGV": unix.SIGSEGV,
|
|
+ "EMT": unix.SIGEMT,
|
|
+ "STOP": unix.SIGSTOP,
|
|
+ "SYS": unix.SIGSYS,
|
|
+ "TERM": unix.SIGTERM,
|
|
+ "TRAP": unix.SIGTRAP,
|
|
+ "TSTP": unix.SIGTSTP,
|
|
+ "TTIN": unix.SIGTTIN,
|
|
+ "TTOU": unix.SIGTTOU,
|
|
+ "URG": unix.SIGURG,
|
|
+ "USR1": unix.SIGUSR1,
|
|
+ "USR2": unix.SIGUSR2,
|
|
+ "VTALRM": unix.SIGVTALRM,
|
|
+ "WINCH": unix.SIGWINCH,
|
|
+ "XCPU": unix.SIGXCPU,
|
|
+ "XFSZ": unix.SIGXFSZ,
|
|
+ "RTMIN": sigrtmin,
|
|
+ "RTMIN+1": sigrtmin + 1,
|
|
+ "RTMIN+2": sigrtmin + 2,
|
|
+ "RTMIN+3": sigrtmin + 3,
|
|
+ "RTMIN+4": sigrtmin + 4,
|
|
+ "RTMIN+5": sigrtmin + 5,
|
|
+ "RTMIN+6": sigrtmin + 6,
|
|
+ "RTMIN+7": sigrtmin + 7,
|
|
+ "RTMIN+8": sigrtmin + 8,
|
|
+ "RTMIN+9": sigrtmin + 9,
|
|
+ "RTMIN+10": sigrtmin + 10,
|
|
+ "RTMIN+11": sigrtmin + 11,
|
|
+ "RTMIN+12": sigrtmin + 12,
|
|
+ "RTMIN+13": sigrtmin + 13,
|
|
+ "RTMIN+14": sigrtmin + 14,
|
|
+ "RTMIN+15": sigrtmin + 15,
|
|
+ "RTMAX-14": sigrtmax - 14,
|
|
+ "RTMAX-13": sigrtmax - 13,
|
|
+ "RTMAX-12": sigrtmax - 12,
|
|
+ "RTMAX-11": sigrtmax - 11,
|
|
+ "RTMAX-10": sigrtmax - 10,
|
|
+ "RTMAX-9": sigrtmax - 9,
|
|
+ "RTMAX-8": sigrtmax - 8,
|
|
+ "RTMAX-7": sigrtmax - 7,
|
|
+ "RTMAX-6": sigrtmax - 6,
|
|
+ "RTMAX-5": sigrtmax - 5,
|
|
+ "RTMAX-4": sigrtmax - 4,
|
|
+ "RTMAX-3": sigrtmax - 3,
|
|
+ "RTMAX-2": sigrtmax - 2,
|
|
+ "RTMAX-1": sigrtmax - 1,
|
|
+ "RTMAX": sigrtmax,
|
|
+}
|
|
+
|
|
+// CatchAll catches all signals and relays them to the specified channel.
|
|
+func CatchAll(sigc chan os.Signal) {
|
|
+ handledSigs := make([]os.Signal, 0, len(signalMap))
|
|
+ for _, s := range signalMap {
|
|
+ handledSigs = append(handledSigs, s)
|
|
+ }
|
|
+ signal.Notify(sigc, handledSigs...)
|
|
+}
|
|
+
|
|
+// StopCatch stops catching the signals and closes the specified channel.
|
|
+func StopCatch(sigc chan os.Signal) {
|
|
+ signal.Stop(sigc)
|
|
+ close(sigc)
|
|
+}
|