diff --git a/cmd/containerd/main.go b/cmd/containerd/main.go index b308573..3f27dcf 100644 --- a/cmd/containerd/main.go +++ b/cmd/containerd/main.go @@ -26,7 +26,6 @@ import ( "github.com/docker/containerd/reaper" "github.com/docker/containerd/snapshot" "github.com/docker/containerd/sys" - "github.com/docker/containerd/utils" metrics "github.com/docker/go-metrics" "github.com/pkg/errors" "github.com/urfave/cli" @@ -220,7 +219,7 @@ func serveDebugAPI() error { if path == "" { return errors.New("debug socket path cannot be empty") } - l, err := utils.CreateUnixSocket(path) + l, err := sys.CreateUnixSocket(path) if err != nil { return err } @@ -369,7 +368,7 @@ func serveGRPC(server *grpc.Server) error { if path == "" { return errors.New("--socket path cannot be empty") } - l, err := utils.CreateUnixSocket(path) + l, err := sys.CreateUnixSocket(path) if err != nil { return err } diff --git a/linux/shim.go b/linux/shim.go index 62c1b94..32f28c2 100644 --- a/linux/shim.go +++ b/linux/shim.go @@ -16,7 +16,7 @@ import ( "github.com/docker/containerd/api/services/shim" localShim "github.com/docker/containerd/linux/shim" "github.com/docker/containerd/reaper" - "github.com/docker/containerd/utils" + "github.com/docker/containerd/sys" "github.com/pkg/errors" ) @@ -25,7 +25,7 @@ func newShim(path string, remote bool) (shim.ShimClient, error) { return localShim.Client(path), nil } socket := filepath.Join(path, "shim.sock") - l, err := utils.CreateUnixSocket(socket) + l, err := sys.CreateUnixSocket(socket) if err != nil { return nil, err } diff --git a/reaper/reaper.go b/reaper/reaper.go index 94e278e..43cb2ed 100644 --- a/reaper/reaper.go +++ b/reaper/reaper.go @@ -6,13 +6,13 @@ import ( "os/exec" "sync" - "github.com/docker/containerd/utils" + "github.com/docker/containerd/sys" ) // Reap should be called when the process receives an SIGCHLD. Reap will reap // all exited processes and close their wait channels func Reap() error { - exits, err := utils.Reap(false) + exits, err := sys.Reap(false) for _, e := range exits { Default.Lock() c, ok := Default.cmds[e.Pid] diff --git a/utils/socket.go b/sys/socket.go similarity index 96% rename from utils/socket.go rename to sys/socket.go index c206c2e..cac9d6f 100644 --- a/utils/socket.go +++ b/sys/socket.go @@ -1,4 +1,4 @@ -package utils +package sys import ( "net" diff --git a/utils/reaper.go b/utils/reaper.go deleted file mode 100644 index 6710ea2..0000000 --- a/utils/reaper.go +++ /dev/null @@ -1,49 +0,0 @@ -package utils - -import "syscall" - -// Exit is the wait4 information from an exited process -type Exit struct { - Pid int - Status int -} - -// Reap reaps all child processes for the calling process and returns their -// exit information -func Reap(wait bool) (exits []Exit, err error) { - var ( - ws syscall.WaitStatus - rus syscall.Rusage - ) - flag := syscall.WNOHANG - if wait { - flag = 0 - } - for { - pid, err := syscall.Wait4(-1, &ws, flag, &rus) - if err != nil { - if err == syscall.ECHILD { - return exits, nil - } - return exits, err - } - if pid <= 0 { - return exits, nil - } - exits = append(exits, Exit{ - Pid: pid, - Status: ExitStatus(ws), - }) - } -} - -const exitSignalOffset = 128 - -// ExitStatus returns the correct exit status for a process based on if it -// was signaled or exited cleanly -func ExitStatus(status syscall.WaitStatus) int { - if status.Signaled() { - return exitSignalOffset + int(status.Signal()) - } - return status.ExitStatus() -}