mirror of
https://github.com/podman-container-tools/podman.git
synced 2026-09-20 14:47:48 +00:00
Also addresses a number of issues: - StopHostNetworking isn't plumbed, win-sshproxy leaks on hyperv - Wait api and print output doesn't work properly on Windows - API forwarding doesn't work on WSL - Terminal corruption with after start/stop on Windows - Gvproxy is forcefully killed vs gracefully quit - Switching rootful/rootless does not update /var/run/docker.sock on the guest - File already closed error on init - HyperV backend is publishing Unix sockets when it should be named pipes - User-mode networking doesn't always work - Stop state outside of lock boundaries - WSL blocks parallel machined (should be supported) [NO NEW TESTS NEEDED] Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
45 lines
1.8 KiB
Go
45 lines
1.8 KiB
Go
package winquit
|
|
|
|
import (
|
|
"os"
|
|
)
|
|
|
|
// NotifyOnQuit relays a Windows quit notification to the boolean done channel.
|
|
// This is a one-shot operation (will only be delivered once), however multiple
|
|
// channels may be registered. Each registered channel is sent one copy of the
|
|
// same one-shot value.
|
|
//
|
|
// This function is a no-op on non-Windows platforms. While the call will
|
|
// succeed, no notifications will be delivered to the passed channel. Each
|
|
// channel will only ever receive a "true" value.
|
|
//
|
|
// It is recommended that registered channels establish a buffer of 1, since
|
|
// values are sent non-blocking. Blocking redelivery may be attempted to reduce
|
|
// the chance of bugs; however, it should not be relied upon.
|
|
//
|
|
// If this function is called after a Windows quit notification has occurred, it
|
|
// will immediately deliver a "true" value.
|
|
func NotifyOnQuit(done chan bool) {
|
|
notifyOnQuit(done)
|
|
}
|
|
|
|
// SimulateSigTermOnQuit relays a Windows quit notification following the same
|
|
// semantics as NotifyOnQuit; however, instead of a boolean message value, this
|
|
// function will send a SIGTERM signal to the passed channel.
|
|
//
|
|
// This function allows for the reuse of the same underlying channel used with
|
|
// in a separate os.signal.Notify method call.
|
|
func SimulateSigTermOnQuit(handler chan os.Signal) {
|
|
simulateSigTermOnQuit(handler)
|
|
}
|
|
|
|
// Returns the thread id of the message loop thread created by winquit, or "0"
|
|
// if one is not running. The latter indicates a mistake, as this function
|
|
// should only be called after a call to one of the _OnQuit functions.
|
|
//
|
|
// In most cases this method should not be necessary, as RequestQuit and
|
|
// QuitProcess do not require it. It is primarily provided to enable legacy
|
|
// patterns that serialize the thread id for later direct signaling.
|
|
func GetCurrentMessageLoopThreadId() uint32 {
|
|
return getCurrentMessageLoopThreadId()
|
|
}
|