mirror of
https://github.com/containers/podman.git
synced 2025-06-24 03:08:13 +08:00
Implement CatchAll and StopCatch in signal_common.go
This is part of a set of changes to port podman to the FreeBSD platform. The pkg/signal parts are needed to enable ABI mode on FreeBSD. No tests are needed here because it should be a functional no-op for linux. [NO NEW TESTS NEEDED] Signed-off-by: Doug Rabson <dfr@rabson.org>
This commit is contained in:
@ -2,6 +2,8 @@ package signal
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"os/signal"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"syscall"
|
"syscall"
|
||||||
@ -39,3 +41,18 @@ func ParseSignalNameOrNumber(rawSignal string) (syscall.Signal, error) {
|
|||||||
}
|
}
|
||||||
return -1, fmt.Errorf("invalid signal: %s", basename)
|
return -1, fmt.Errorf("invalid signal: %s", basename)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 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)
|
||||||
|
}
|
||||||
|
@ -9,8 +9,6 @@ package signal
|
|||||||
// NOTE: this package has originally been copied from github.com/docker/docker.
|
// NOTE: this package has originally been copied from github.com/docker/docker.
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
|
||||||
"os/signal"
|
|
||||||
"syscall"
|
"syscall"
|
||||||
|
|
||||||
"golang.org/x/sys/unix"
|
"golang.org/x/sys/unix"
|
||||||
@ -91,18 +89,3 @@ var SignalMap = map[string]syscall.Signal{
|
|||||||
"RTMAX-1": sigrtmax - 1,
|
"RTMAX-1": sigrtmax - 1,
|
||||||
"RTMAX": sigrtmax,
|
"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)
|
|
||||||
}
|
|
||||||
|
@ -10,8 +10,6 @@ package signal
|
|||||||
// NOTE: this package has originally been copied from github.com/docker/docker.
|
// NOTE: this package has originally been copied from github.com/docker/docker.
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
|
||||||
"os/signal"
|
|
||||||
"syscall"
|
"syscall"
|
||||||
|
|
||||||
"golang.org/x/sys/unix"
|
"golang.org/x/sys/unix"
|
||||||
@ -92,18 +90,3 @@ var SignalMap = map[string]syscall.Signal{
|
|||||||
"RTMAX-1": sigrtmax - 1,
|
"RTMAX-1": sigrtmax - 1,
|
||||||
"RTMAX": sigrtmax,
|
"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)
|
|
||||||
}
|
|
||||||
|
@ -5,7 +5,6 @@
|
|||||||
package signal
|
package signal
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
|
||||||
"syscall"
|
"syscall"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -88,13 +87,3 @@ var SignalMap = map[string]syscall.Signal{
|
|||||||
"RTMAX-1": sigrtmax - 1,
|
"RTMAX-1": sigrtmax - 1,
|
||||||
"RTMAX": sigrtmax,
|
"RTMAX": sigrtmax,
|
||||||
}
|
}
|
||||||
|
|
||||||
// CatchAll catches all signals and relays them to the specified channel.
|
|
||||||
func CatchAll(sigc chan os.Signal) {
|
|
||||||
panic("Unsupported on non-linux platforms")
|
|
||||||
}
|
|
||||||
|
|
||||||
// StopCatch stops catching the signals and closes the specified channel.
|
|
||||||
func StopCatch(sigc chan os.Signal) {
|
|
||||||
panic("Unsupported on non-linux platforms")
|
|
||||||
}
|
|
||||||
|
@ -5,7 +5,6 @@
|
|||||||
package signal
|
package signal
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
|
||||||
"syscall"
|
"syscall"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -88,13 +87,3 @@ var SignalMap = map[string]syscall.Signal{
|
|||||||
"RTMAX-1": sigrtmax - 1,
|
"RTMAX-1": sigrtmax - 1,
|
||||||
"RTMAX": sigrtmax,
|
"RTMAX": sigrtmax,
|
||||||
}
|
}
|
||||||
|
|
||||||
// CatchAll catches all signals and relays them to the specified channel.
|
|
||||||
func CatchAll(sigc chan os.Signal) {
|
|
||||||
panic("Unsupported on non-linux platforms")
|
|
||||||
}
|
|
||||||
|
|
||||||
// StopCatch stops catching the signals and closes the specified channel.
|
|
||||||
func StopCatch(sigc chan os.Signal) {
|
|
||||||
panic("Unsupported on non-linux platforms")
|
|
||||||
}
|
|
||||||
|
Reference in New Issue
Block a user