Browse code

[project] change syscall to /x/sys/unix|windows

Changes most references of syscall to golang.org/x/sys/
Ones aren't changes include, Errno, Signal and SysProcAttr
as they haven't been implemented in /x/sys/.

Signed-off-by: Christopher Jones <tophj@linux.vnet.ibm.com>

[s390x] switch utsname from unsigned to signed

per https://github.com/golang/sys/commit/33267e036fd93fcd26ea95b7bdaf2d8306cb743c
char in s390x in the /x/sys/unix package is now signed, so
change the buildtags

Signed-off-by: Christopher Jones <tophj@linux.vnet.ibm.com>

Christopher Jones authored on 2017/05/23 23:22:32
Showing 93 changed files
... ...
@@ -7,10 +7,10 @@ import (
7 7
 	"net"
8 8
 	"os"
9 9
 	"path/filepath"
10
-	"syscall"
11 10
 
12 11
 	"github.com/docker/docker/libcontainerd"
13 12
 	"github.com/docker/docker/pkg/system"
13
+	"golang.org/x/sys/unix"
14 14
 )
15 15
 
16 16
 const defaultDaemonConfigFile = ""
... ...
@@ -30,8 +30,8 @@ func currentUserIsOwner(f string) bool {
30 30
 // caused by custom umask
31 31
 func setDefaultUmask() error {
32 32
 	desiredUmask := 0022
33
-	syscall.Umask(desiredUmask)
34
-	if umask := syscall.Umask(desiredUmask); umask != desiredUmask {
33
+	unix.Umask(desiredUmask)
34
+	if umask := unix.Umask(desiredUmask); umask != desiredUmask {
35 35
 		return fmt.Errorf("failed to set umask: expected %#o, got %#o", desiredUmask, umask)
36 36
 	}
37 37
 
... ...
@@ -9,12 +9,12 @@ import (
9 9
 	"os/signal"
10 10
 	"path/filepath"
11 11
 	"strconv"
12
-	"syscall"
13 12
 
14 13
 	"github.com/docker/docker/cmd/dockerd/hack"
15 14
 	"github.com/docker/docker/daemon"
16 15
 	"github.com/docker/docker/libcontainerd"
17 16
 	"github.com/docker/libnetwork/portallocator"
17
+	"golang.org/x/sys/unix"
18 18
 )
19 19
 
20 20
 const defaultDaemonConfigFile = "/etc/docker/daemon.json"
... ...
@@ -23,8 +23,8 @@ const defaultDaemonConfigFile = "/etc/docker/daemon.json"
23 23
 // caused by custom umask
24 24
 func setDefaultUmask() error {
25 25
 	desiredUmask := 0022
26
-	syscall.Umask(desiredUmask)
27
-	if umask := syscall.Umask(desiredUmask); umask != desiredUmask {
26
+	unix.Umask(desiredUmask)
27
+	if umask := unix.Umask(desiredUmask); umask != desiredUmask {
28 28
 		return fmt.Errorf("failed to set umask: expected %#o, got %#o", desiredUmask, umask)
29 29
 	}
30 30
 
... ...
@@ -38,7 +38,7 @@ func getDaemonConfDir(_ string) string {
38 38
 // setupConfigReloadTrap configures the USR2 signal to reload the configuration.
39 39
 func (cli *DaemonCli) setupConfigReloadTrap() {
40 40
 	c := make(chan os.Signal, 1)
41
-	signal.Notify(c, syscall.SIGHUP)
41
+	signal.Notify(c, unix.SIGHUP)
42 42
 	go func() {
43 43
 		for range c {
44 44
 			cli.reloadConfig()
... ...
@@ -5,11 +5,11 @@ import (
5 5
 	"net"
6 6
 	"os"
7 7
 	"path/filepath"
8
-	"syscall"
9 8
 
10 9
 	"github.com/Sirupsen/logrus"
11 10
 	"github.com/docker/docker/libcontainerd"
12 11
 	"github.com/docker/docker/pkg/system"
12
+	"golang.org/x/sys/windows"
13 13
 )
14 14
 
15 15
 var defaultDaemonConfigFile = ""
... ...
@@ -58,14 +58,14 @@ func notifyShutdown(err error) {
58 58
 // setupConfigReloadTrap configures a Win32 event to reload the configuration.
59 59
 func (cli *DaemonCli) setupConfigReloadTrap() {
60 60
 	go func() {
61
-		sa := syscall.SecurityAttributes{
61
+		sa := windows.SecurityAttributes{
62 62
 			Length: 0,
63 63
 		}
64 64
 		ev := "Global\\docker-daemon-config-" + fmt.Sprint(os.Getpid())
65 65
 		if h, _ := system.CreateEvent(&sa, false, false, ev); h != 0 {
66 66
 			logrus.Debugf("Config reload - waiting signal at %s", ev)
67 67
 			for {
68
-				syscall.WaitForSingleObject(h, syscall.INFINITE)
68
+				windows.WaitForSingleObject(h, windows.INFINITE)
69 69
 				cli.reloadConfig()
70 70
 			}
71 71
 		}
... ...
@@ -9,7 +9,6 @@ import (
9 9
 	"os"
10 10
 	"os/exec"
11 11
 	"path/filepath"
12
-	"syscall"
13 12
 	"time"
14 13
 	"unsafe"
15 14
 
... ...
@@ -30,7 +29,7 @@ var (
30 30
 	flRunService        *bool
31 31
 
32 32
 	setStdHandle = windows.NewLazySystemDLL("kernel32.dll").NewProc("SetStdHandle")
33
-	oldStderr    syscall.Handle
33
+	oldStderr    windows.Handle
34 34
 	panicFile    *os.File
35 35
 
36 36
 	service *handler
... ...
@@ -131,14 +130,14 @@ func (h *etwHook) Fire(e *logrus.Entry) error {
131 131
 		err error
132 132
 	)
133 133
 
134
-	ss[0], err = syscall.UTF16PtrFromString(e.Message)
134
+	ss[0], err = windows.UTF16PtrFromString(e.Message)
135 135
 	if err != nil {
136 136
 		return err
137 137
 	}
138 138
 
139 139
 	count := uint16(1)
140 140
 	if exts != "" {
141
-		ss[1], err = syscall.UTF16PtrFromString(exts)
141
+		ss[1], err = windows.UTF16PtrFromString(exts)
142 142
 		if err != nil {
143 143
 			return err
144 144
 		}
... ...
@@ -397,8 +396,8 @@ func initPanicFile(path string) error {
397 397
 	// Update STD_ERROR_HANDLE to point to the panic file so that Go writes to
398 398
 	// it when it panics. Remember the old stderr to restore it before removing
399 399
 	// the panic file.
400
-	sh := syscall.STD_ERROR_HANDLE
401
-	h, err := syscall.GetStdHandle(sh)
400
+	sh := windows.STD_ERROR_HANDLE
401
+	h, err := windows.GetStdHandle(sh)
402 402
 	if err != nil {
403 403
 		return err
404 404
 	}
... ...
@@ -422,7 +421,7 @@ func initPanicFile(path string) error {
422 422
 func removePanicFile() {
423 423
 	if st, err := panicFile.Stat(); err == nil {
424 424
 		if st.Size() == 0 {
425
-			sh := syscall.STD_ERROR_HANDLE
425
+			sh := windows.STD_ERROR_HANDLE
426 426
 			setStdHandle.Call(uintptr(sh), uintptr(oldStderr))
427 427
 			panicFile.Close()
428 428
 			os.Remove(panicFile.Name())
... ...
@@ -9,7 +9,6 @@ import (
9 9
 	"os"
10 10
 	"path/filepath"
11 11
 	"strconv"
12
-	"syscall"
13 12
 	"time"
14 13
 
15 14
 	"github.com/Sirupsen/logrus"
... ...
@@ -22,6 +21,7 @@ import (
22 22
 	"github.com/docker/libnetwork"
23 23
 	"github.com/opencontainers/selinux/go-selinux/label"
24 24
 	"github.com/pkg/errors"
25
+	"golang.org/x/sys/unix"
25 26
 )
26 27
 
27 28
 func (daemon *Daemon) setupLinkedContainers(container *container.Container) ([]string, error) {
... ...
@@ -125,7 +125,7 @@ func (daemon *Daemon) setupIpcDirs(c *container.Container) error {
125 125
 				shmSize = c.HostConfig.ShmSize
126 126
 			}
127 127
 			shmproperty := "mode=1777,size=" + strconv.FormatInt(shmSize, 10)
128
-			if err := syscall.Mount("shm", shmPath, "tmpfs", uintptr(syscall.MS_NOEXEC|syscall.MS_NOSUID|syscall.MS_NODEV), label.FormatMountLabel(shmproperty, c.GetMountLabel())); err != nil {
128
+			if err := unix.Mount("shm", shmPath, "tmpfs", uintptr(unix.MS_NOEXEC|unix.MS_NOSUID|unix.MS_NODEV), label.FormatMountLabel(shmproperty, c.GetMountLabel())); err != nil {
129 129
 				return fmt.Errorf("mounting shm tmpfs: %s", err)
130 130
 			}
131 131
 			if err := os.Chown(shmPath, rootIDs.UID, rootIDs.GID); err != nil {
... ...
@@ -301,8 +301,8 @@ func killProcessDirectly(cntr *container.Container) error {
301 301
 		// Ensure that we don't kill ourselves
302 302
 		if pid := cntr.GetPID(); pid != 0 {
303 303
 			logrus.Infof("Container %s failed to exit within 10 seconds of kill - trying direct SIGKILL", stringid.TruncateID(cntr.ID))
304
-			if err := syscall.Kill(pid, 9); err != nil {
305
-				if err != syscall.ESRCH {
304
+			if err := unix.Kill(pid, 9); err != nil {
305
+				if err != unix.ESRCH {
306 306
 					return err
307 307
 				}
308 308
 				e := errNoSuchProcess{pid, 9}
... ...
@@ -315,7 +315,7 @@ func killProcessDirectly(cntr *container.Container) error {
315 315
 }
316 316
 
317 317
 func detachMounted(path string) error {
318
-	return syscall.Unmount(path, syscall.MNT_DETACH)
318
+	return unix.Unmount(path, unix.MNT_DETACH)
319 319
 }
320 320
 
321 321
 func isLinkable(child *container.Container) bool {
... ...
@@ -5,15 +5,15 @@ package daemon
5 5
 import (
6 6
 	"os"
7 7
 	"os/signal"
8
-	"syscall"
9 8
 
10 9
 	"github.com/Sirupsen/logrus"
11 10
 	stackdump "github.com/docker/docker/pkg/signal"
11
+	"golang.org/x/sys/unix"
12 12
 )
13 13
 
14 14
 func (d *Daemon) setupDumpStackTrap(root string) {
15 15
 	c := make(chan os.Signal, 1)
16
-	signal.Notify(c, syscall.SIGUSR1)
16
+	signal.Notify(c, unix.SIGUSR1)
17 17
 	go func() {
18 18
 		for range c {
19 19
 			path, err := stackdump.DumpStacks(root)
... ...
@@ -3,13 +3,13 @@ package daemon
3 3
 import (
4 4
 	"fmt"
5 5
 	"os"
6
-	"syscall"
7 6
 	"unsafe"
8 7
 
9 8
 	winio "github.com/Microsoft/go-winio"
10 9
 	"github.com/Sirupsen/logrus"
11 10
 	"github.com/docker/docker/pkg/signal"
12 11
 	"github.com/docker/docker/pkg/system"
12
+	"golang.org/x/sys/windows"
13 13
 )
14 14
 
15 15
 func (d *Daemon) setupDumpStackTrap(root string) {
... ...
@@ -22,7 +22,7 @@ func (d *Daemon) setupDumpStackTrap(root string) {
22 22
 		logrus.Errorf("failed to get security descriptor for debug stackdump event %s: %s", ev, err.Error())
23 23
 		return
24 24
 	}
25
-	var sa syscall.SecurityAttributes
25
+	var sa windows.SecurityAttributes
26 26
 	sa.Length = uint32(unsafe.Sizeof(sa))
27 27
 	sa.InheritHandle = 1
28 28
 	sa.SecurityDescriptor = uintptr(unsafe.Pointer(&sd[0]))
... ...
@@ -34,7 +34,7 @@ func (d *Daemon) setupDumpStackTrap(root string) {
34 34
 	go func() {
35 35
 		logrus.Debugf("Stackdump - waiting signal at %s", ev)
36 36
 		for {
37
-			syscall.WaitForSingleObject(h, syscall.INFINITE)
37
+			windows.WaitForSingleObject(h, windows.INFINITE)
38 38
 			path, err := signal.DumpStacks(root)
39 39
 			if err != nil {
40 40
 				logrus.WithError(err).Error("failed to write goroutines dump")
... ...
@@ -33,12 +33,9 @@ import (
33 33
 	"path/filepath"
34 34
 	"strings"
35 35
 	"sync"
36
-	"syscall"
37 36
 	"time"
38 37
 
39 38
 	"github.com/Sirupsen/logrus"
40
-	"github.com/vbatts/tar-split/tar/storage"
41
-
42 39
 	"github.com/docker/docker/daemon/graphdriver"
43 40
 	"github.com/docker/docker/pkg/archive"
44 41
 	"github.com/docker/docker/pkg/chrootarchive"
... ...
@@ -47,9 +44,10 @@ import (
47 47
 	"github.com/docker/docker/pkg/locker"
48 48
 	mountpk "github.com/docker/docker/pkg/mount"
49 49
 	"github.com/docker/docker/pkg/system"
50
-
51 50
 	rsystem "github.com/opencontainers/runc/libcontainer/system"
52 51
 	"github.com/opencontainers/selinux/go-selinux/label"
52
+	"github.com/vbatts/tar-split/tar/storage"
53
+	"golang.org/x/sys/unix"
53 54
 )
54 55
 
55 56
 var (
... ...
@@ -295,7 +293,7 @@ func (a *Driver) Remove(id string) error {
295 295
 		}
296 296
 
297 297
 		if err := a.unmount(mountpoint); err != nil {
298
-			if err != syscall.EBUSY {
298
+			if err != unix.EBUSY {
299 299
 				return fmt.Errorf("aufs: unmount error: %s: %v", mountpoint, err)
300 300
 			}
301 301
 			if retries >= 5 {
... ...
@@ -315,7 +313,7 @@ func (a *Driver) Remove(id string) error {
315 315
 	// the whole tree.
316 316
 	tmpMntPath := path.Join(a.mntPath(), fmt.Sprintf("%s-removing", id))
317 317
 	if err := os.Rename(mountpoint, tmpMntPath); err != nil && !os.IsNotExist(err) {
318
-		if err == syscall.EBUSY {
318
+		if err == unix.EBUSY {
319 319
 			logrus.Warn("os.Rename err due to EBUSY")
320 320
 		}
321 321
 		return err
... ...
@@ -575,7 +573,7 @@ func (a *Driver) aufsMount(ro []string, rw, target, mountLabel string) (err erro
575 575
 	if useDirperm() {
576 576
 		offset += len(",dirperm1")
577 577
 	}
578
-	b := make([]byte, syscall.Getpagesize()-len(mountLabel)-offset) // room for xino & mountLabel
578
+	b := make([]byte, unix.Getpagesize()-len(mountLabel)-offset) // room for xino & mountLabel
579 579
 	bp := copy(b, fmt.Sprintf("br:%s=rw", rw))
580 580
 
581 581
 	index := 0
... ...
@@ -599,7 +597,7 @@ func (a *Driver) aufsMount(ro []string, rw, target, mountLabel string) (err erro
599 599
 	for ; index < len(ro); index++ {
600 600
 		layer := fmt.Sprintf(":%s=ro+wh", ro[index])
601 601
 		data := label.FormatMountLabel(fmt.Sprintf("append%s", layer), mountLabel)
602
-		if err = mount("none", target, "aufs", syscall.MS_REMOUNT, data); err != nil {
602
+		if err = mount("none", target, "aufs", unix.MS_REMOUNT, data); err != nil {
603 603
 			return
604 604
 		}
605 605
 	}
... ...
@@ -4,9 +4,9 @@ package aufs
4 4
 
5 5
 import (
6 6
 	"os/exec"
7
-	"syscall"
8 7
 
9 8
 	"github.com/Sirupsen/logrus"
9
+	"golang.org/x/sys/unix"
10 10
 )
11 11
 
12 12
 // Unmount the target specified.
... ...
@@ -14,7 +14,7 @@ func Unmount(target string) error {
14 14
 	if err := exec.Command("auplink", target, "flush").Run(); err != nil {
15 15
 		logrus.Warnf("Couldn't run auplink before unmount %s: %s", target, err)
16 16
 	}
17
-	if err := syscall.Unmount(target, 0); err != nil {
17
+	if err := unix.Unmount(target, 0); err != nil {
18 18
 		return err
19 19
 	}
20 20
 	return nil
... ...
@@ -1,7 +1,7 @@
1 1
 package aufs
2 2
 
3
-import "syscall"
3
+import "golang.org/x/sys/unix"
4 4
 
5 5
 func mount(source string, target string, fstype string, flags uintptr, data string) error {
6
-	return syscall.Mount(source, target, fstype, flags, data)
6
+	return unix.Mount(source, target, fstype, flags, data)
7 7
 }
... ...
@@ -24,7 +24,6 @@ import (
24 24
 	"strconv"
25 25
 	"strings"
26 26
 	"sync"
27
-	"syscall"
28 27
 	"unsafe"
29 28
 
30 29
 	"github.com/Sirupsen/logrus"
... ...
@@ -35,6 +34,7 @@ import (
35 35
 	"github.com/docker/docker/pkg/system"
36 36
 	"github.com/docker/go-units"
37 37
 	"github.com/opencontainers/selinux/go-selinux/label"
38
+	"golang.org/x/sys/unix"
38 39
 )
39 40
 
40 41
 func init() {
... ...
@@ -197,7 +197,7 @@ func subvolCreate(path, name string) error {
197 197
 		args.name[i] = C.char(c)
198 198
 	}
199 199
 
200
-	_, _, errno := syscall.Syscall(syscall.SYS_IOCTL, getDirFd(dir), C.BTRFS_IOC_SUBVOL_CREATE,
200
+	_, _, errno := unix.Syscall(unix.SYS_IOCTL, getDirFd(dir), C.BTRFS_IOC_SUBVOL_CREATE,
201 201
 		uintptr(unsafe.Pointer(&args)))
202 202
 	if errno != 0 {
203 203
 		return fmt.Errorf("Failed to create btrfs subvolume: %v", errno.Error())
... ...
@@ -225,7 +225,7 @@ func subvolSnapshot(src, dest, name string) error {
225 225
 	C.set_name_btrfs_ioctl_vol_args_v2(&args, cs)
226 226
 	C.free(unsafe.Pointer(cs))
227 227
 
228
-	_, _, errno := syscall.Syscall(syscall.SYS_IOCTL, getDirFd(destDir), C.BTRFS_IOC_SNAP_CREATE_V2,
228
+	_, _, errno := unix.Syscall(unix.SYS_IOCTL, getDirFd(destDir), C.BTRFS_IOC_SNAP_CREATE_V2,
229 229
 		uintptr(unsafe.Pointer(&args)))
230 230
 	if errno != 0 {
231 231
 		return fmt.Errorf("Failed to create btrfs snapshot: %v", errno.Error())
... ...
@@ -234,8 +234,8 @@ func subvolSnapshot(src, dest, name string) error {
234 234
 }
235 235
 
236 236
 func isSubvolume(p string) (bool, error) {
237
-	var bufStat syscall.Stat_t
238
-	if err := syscall.Lstat(p, &bufStat); err != nil {
237
+	var bufStat unix.Stat_t
238
+	if err := unix.Lstat(p, &bufStat); err != nil {
239 239
 		return false, err
240 240
 	}
241 241
 
... ...
@@ -287,7 +287,7 @@ func subvolDelete(dirpath, name string, quotaEnabled bool) error {
287 287
 			var args C.struct_btrfs_ioctl_qgroup_create_args
288 288
 			args.qgroupid = C.__u64(qgroupid)
289 289
 
290
-			_, _, errno := syscall.Syscall(syscall.SYS_IOCTL, getDirFd(dir), C.BTRFS_IOC_QGROUP_CREATE,
290
+			_, _, errno := unix.Syscall(unix.SYS_IOCTL, getDirFd(dir), C.BTRFS_IOC_QGROUP_CREATE,
291 291
 				uintptr(unsafe.Pointer(&args)))
292 292
 			if errno != 0 {
293 293
 				logrus.Errorf("Failed to delete btrfs qgroup %v for %s: %v", qgroupid, fullPath, errno.Error())
... ...
@@ -302,7 +302,7 @@ func subvolDelete(dirpath, name string, quotaEnabled bool) error {
302 302
 	for i, c := range []byte(name) {
303 303
 		args.name[i] = C.char(c)
304 304
 	}
305
-	_, _, errno := syscall.Syscall(syscall.SYS_IOCTL, getDirFd(dir), C.BTRFS_IOC_SNAP_DESTROY,
305
+	_, _, errno := unix.Syscall(unix.SYS_IOCTL, getDirFd(dir), C.BTRFS_IOC_SNAP_DESTROY,
306 306
 		uintptr(unsafe.Pointer(&args)))
307 307
 	if errno != 0 {
308 308
 		return fmt.Errorf("Failed to destroy btrfs snapshot %s for %s: %v", dirpath, name, errno.Error())
... ...
@@ -338,7 +338,7 @@ func (d *Driver) subvolEnableQuota() error {
338 338
 
339 339
 	var args C.struct_btrfs_ioctl_quota_ctl_args
340 340
 	args.cmd = C.BTRFS_QUOTA_CTL_ENABLE
341
-	_, _, errno := syscall.Syscall(syscall.SYS_IOCTL, getDirFd(dir), C.BTRFS_IOC_QUOTA_CTL,
341
+	_, _, errno := unix.Syscall(unix.SYS_IOCTL, getDirFd(dir), C.BTRFS_IOC_QUOTA_CTL,
342 342
 		uintptr(unsafe.Pointer(&args)))
343 343
 	if errno != 0 {
344 344
 		return fmt.Errorf("Failed to enable btrfs quota for %s: %v", dir, errno.Error())
... ...
@@ -364,7 +364,7 @@ func (d *Driver) subvolDisableQuota() error {
364 364
 
365 365
 	var args C.struct_btrfs_ioctl_quota_ctl_args
366 366
 	args.cmd = C.BTRFS_QUOTA_CTL_DISABLE
367
-	_, _, errno := syscall.Syscall(syscall.SYS_IOCTL, getDirFd(dir), C.BTRFS_IOC_QUOTA_CTL,
367
+	_, _, errno := unix.Syscall(unix.SYS_IOCTL, getDirFd(dir), C.BTRFS_IOC_QUOTA_CTL,
368 368
 		uintptr(unsafe.Pointer(&args)))
369 369
 	if errno != 0 {
370 370
 		return fmt.Errorf("Failed to disable btrfs quota for %s: %v", dir, errno.Error())
... ...
@@ -389,7 +389,7 @@ func (d *Driver) subvolRescanQuota() error {
389 389
 	defer closeDir(dir)
390 390
 
391 391
 	var args C.struct_btrfs_ioctl_quota_rescan_args
392
-	_, _, errno := syscall.Syscall(syscall.SYS_IOCTL, getDirFd(dir), C.BTRFS_IOC_QUOTA_RESCAN_WAIT,
392
+	_, _, errno := unix.Syscall(unix.SYS_IOCTL, getDirFd(dir), C.BTRFS_IOC_QUOTA_RESCAN_WAIT,
393 393
 		uintptr(unsafe.Pointer(&args)))
394 394
 	if errno != 0 {
395 395
 		return fmt.Errorf("Failed to rescan btrfs quota for %s: %v", dir, errno.Error())
... ...
@@ -408,7 +408,7 @@ func subvolLimitQgroup(path string, size uint64) error {
408 408
 	var args C.struct_btrfs_ioctl_qgroup_limit_args
409 409
 	args.lim.max_referenced = C.__u64(size)
410 410
 	args.lim.flags = C.BTRFS_QGROUP_LIMIT_MAX_RFER
411
-	_, _, errno := syscall.Syscall(syscall.SYS_IOCTL, getDirFd(dir), C.BTRFS_IOC_QGROUP_LIMIT,
411
+	_, _, errno := unix.Syscall(unix.SYS_IOCTL, getDirFd(dir), C.BTRFS_IOC_QGROUP_LIMIT,
412 412
 		uintptr(unsafe.Pointer(&args)))
413 413
 	if errno != 0 {
414 414
 		return fmt.Errorf("Failed to limit qgroup for %s: %v", dir, errno.Error())
... ...
@@ -437,7 +437,7 @@ func subvolQgroupStatus(path string) error {
437 437
 	args.key.max_transid = C.__u64(math.MaxUint64)
438 438
 	args.key.nr_items = 4096
439 439
 
440
-	_, _, errno := syscall.Syscall(syscall.SYS_IOCTL, getDirFd(dir), C.BTRFS_IOC_TREE_SEARCH,
440
+	_, _, errno := unix.Syscall(unix.SYS_IOCTL, getDirFd(dir), C.BTRFS_IOC_TREE_SEARCH,
441 441
 		uintptr(unsafe.Pointer(&args)))
442 442
 	if errno != 0 {
443 443
 		return fmt.Errorf("Failed to search qgroup for %s: %v", path, errno.Error())
... ...
@@ -459,7 +459,7 @@ func subvolLookupQgroup(path string) (uint64, error) {
459 459
 	var args C.struct_btrfs_ioctl_ino_lookup_args
460 460
 	args.objectid = C.BTRFS_FIRST_FREE_OBJECTID
461 461
 
462
-	_, _, errno := syscall.Syscall(syscall.SYS_IOCTL, getDirFd(dir), C.BTRFS_IOC_INO_LOOKUP,
462
+	_, _, errno := unix.Syscall(unix.SYS_IOCTL, getDirFd(dir), C.BTRFS_IOC_INO_LOOKUP,
463 463
 		uintptr(unsafe.Pointer(&args)))
464 464
 	if errno != 0 {
465 465
 		return 0, fmt.Errorf("Failed to lookup qgroup for %s: %v", dir, errno.Error())
... ...
@@ -20,7 +20,6 @@ import (
20 20
 	"time"
21 21
 
22 22
 	"github.com/Sirupsen/logrus"
23
-
24 23
 	"github.com/docker/docker/daemon/graphdriver"
25 24
 	"github.com/docker/docker/dockerversion"
26 25
 	"github.com/docker/docker/pkg/devicemapper"
... ...
@@ -29,9 +28,9 @@ import (
29 29
 	"github.com/docker/docker/pkg/mount"
30 30
 	"github.com/docker/docker/pkg/parsers"
31 31
 	units "github.com/docker/go-units"
32
-	"github.com/pkg/errors"
33
-
34 32
 	"github.com/opencontainers/selinux/go-selinux/label"
33
+	"github.com/pkg/errors"
34
+	"golang.org/x/sys/unix"
35 35
 )
36 36
 
37 37
 var (
... ...
@@ -1197,7 +1196,7 @@ func (devices *DeviceSet) growFS(info *devInfo) error {
1197 1197
 		return fmt.Errorf("Error mounting '%s' on '%s': %s", info.DevName(), fsMountPoint, err)
1198 1198
 	}
1199 1199
 
1200
-	defer syscall.Unmount(fsMountPoint, syscall.MNT_DETACH)
1200
+	defer unix.Unmount(fsMountPoint, unix.MNT_DETACH)
1201 1201
 
1202 1202
 	switch devices.BaseDeviceFilesystem {
1203 1203
 	case "ext4":
... ...
@@ -1266,7 +1265,7 @@ func setCloseOnExec(name string) {
1266 1266
 			if link == name {
1267 1267
 				fd, err := strconv.Atoi(i.Name())
1268 1268
 				if err == nil {
1269
-					syscall.CloseOnExec(fd)
1269
+					unix.CloseOnExec(fd)
1270 1270
 				}
1271 1271
 			}
1272 1272
 		}
... ...
@@ -2287,7 +2286,7 @@ func (devices *DeviceSet) Shutdown(home string) error {
2287 2287
 			// We use MNT_DETACH here in case it is still busy in some running
2288 2288
 			// container. This means it'll go away from the global scope directly,
2289 2289
 			// and the device will be released when that container dies.
2290
-			if err := syscall.Unmount(p, syscall.MNT_DETACH); err != nil {
2290
+			if err := unix.Unmount(p, unix.MNT_DETACH); err != nil {
2291 2291
 				logrus.Debugf("devmapper: Shutdown unmounting %s, error: %s", p, err)
2292 2292
 			}
2293 2293
 		}
... ...
@@ -2400,7 +2399,7 @@ func (devices *DeviceSet) MountDevice(hash, path, mountLabel string) error {
2400 2400
 
2401 2401
 	if fstype == "xfs" && devices.xfsNospaceRetries != "" {
2402 2402
 		if err := devices.xfsSetNospaceRetries(info); err != nil {
2403
-			syscall.Unmount(path, syscall.MNT_DETACH)
2403
+			unix.Unmount(path, unix.MNT_DETACH)
2404 2404
 			devices.deactivateDevice(info)
2405 2405
 			return err
2406 2406
 		}
... ...
@@ -2426,7 +2425,7 @@ func (devices *DeviceSet) UnmountDevice(hash, mountPath string) error {
2426 2426
 	defer devices.Unlock()
2427 2427
 
2428 2428
 	logrus.Debugf("devmapper: Unmount(%s)", mountPath)
2429
-	if err := syscall.Unmount(mountPath, syscall.MNT_DETACH); err != nil {
2429
+	if err := unix.Unmount(mountPath, unix.MNT_DETACH); err != nil {
2430 2430
 		return err
2431 2431
 	}
2432 2432
 	logrus.Debug("devmapper: Unmount done")
... ...
@@ -2523,8 +2522,8 @@ func (devices *DeviceSet) MetadataDevicePath() string {
2523 2523
 }
2524 2524
 
2525 2525
 func (devices *DeviceSet) getUnderlyingAvailableSpace(loopFile string) (uint64, error) {
2526
-	buf := new(syscall.Statfs_t)
2527
-	if err := syscall.Statfs(loopFile, buf); err != nil {
2526
+	buf := new(unix.Statfs_t)
2527
+	if err := unix.Statfs(loopFile, buf); err != nil {
2528 2528
 		logrus.Warnf("devmapper: Couldn't stat loopfile filesystem %v: %v", loopFile, err)
2529 2529
 		return 0, err
2530 2530
 	}
... ...
@@ -1,6 +1,6 @@
1 1
 package graphdriver
2 2
 
3
-import "syscall"
3
+import "golang.org/x/sys/unix"
4 4
 
5 5
 var (
6 6
 	// Slice of drivers that should be used in an order
... ...
@@ -11,7 +11,7 @@ var (
11 11
 
12 12
 // Mounted checks if the given path is mounted as the fs type
13 13
 func Mounted(fsType FsMagic, mountPath string) (bool, error) {
14
-	var buf syscall.Statfs_t
14
+	var buf unix.Statfs_t
15 15
 	if err := syscall.Statfs(mountPath, &buf); err != nil {
16 16
 		return false, err
17 17
 	}
... ...
@@ -4,9 +4,9 @@ package graphdriver
4 4
 
5 5
 import (
6 6
 	"path/filepath"
7
-	"syscall"
8 7
 
9 8
 	"github.com/docker/docker/pkg/mount"
9
+	"golang.org/x/sys/unix"
10 10
 )
11 11
 
12 12
 const (
... ...
@@ -88,8 +88,8 @@ var (
88 88
 
89 89
 // GetFSMagic returns the filesystem id given the path.
90 90
 func GetFSMagic(rootpath string) (FsMagic, error) {
91
-	var buf syscall.Statfs_t
92
-	if err := syscall.Statfs(filepath.Dir(rootpath), &buf); err != nil {
91
+	var buf unix.Statfs_t
92
+	if err := unix.Statfs(filepath.Dir(rootpath), &buf); err != nil {
93 93
 		return 0, err
94 94
 	}
95 95
 	return FsMagic(buf.Type), nil
... ...
@@ -127,8 +127,8 @@ func (c *defaultChecker) IsMounted(path string) bool {
127 127
 
128 128
 // Mounted checks if the given path is mounted as the fs type
129 129
 func Mounted(fsType FsMagic, mountPath string) (bool, error) {
130
-	var buf syscall.Statfs_t
131
-	if err := syscall.Statfs(mountPath, &buf); err != nil {
130
+	var buf unix.Statfs_t
131
+	if err := unix.Statfs(mountPath, &buf); err != nil {
132 132
 		return false, err
133 133
 	}
134 134
 	return FsMagic(buf.Type) == fsType, nil
... ...
@@ -9,7 +9,6 @@ import (
9 9
 	"os"
10 10
 	"path"
11 11
 	"reflect"
12
-	"syscall"
13 12
 	"testing"
14 13
 	"unsafe"
15 14
 
... ...
@@ -18,6 +17,7 @@ import (
18 18
 	"github.com/docker/go-units"
19 19
 	"github.com/stretchr/testify/assert"
20 20
 	"github.com/stretchr/testify/require"
21
+	"golang.org/x/sys/unix"
21 22
 )
22 23
 
23 24
 var (
... ...
@@ -329,8 +329,8 @@ func DriverTestSetQuota(t *testing.T, drivername string) {
329 329
 
330 330
 	quota := uint64(50 * units.MiB)
331 331
 	err = writeRandomFile(path.Join(mountPath, "file"), quota*2)
332
-	if pathError, ok := err.(*os.PathError); ok && pathError.Err != syscall.EDQUOT {
333
-		t.Fatalf("expect write() to fail with %v, got %v", syscall.EDQUOT, err)
332
+	if pathError, ok := err.(*os.PathError); ok && pathError.Err != unix.EDQUOT {
333
+		t.Fatalf("expect write() to fail with %v, got %v", unix.EDQUOT, err)
334 334
 	}
335 335
 
336 336
 }
... ...
@@ -12,6 +12,7 @@ import (
12 12
 	"github.com/docker/docker/daemon/graphdriver"
13 13
 	"github.com/stretchr/testify/assert"
14 14
 	"github.com/stretchr/testify/require"
15
+	"golang.org/x/sys/unix"
15 16
 )
16 17
 
17 18
 func verifyFile(t testing.TB, path string, mode os.FileMode, uid, gid uint32) {
... ...
@@ -33,8 +34,8 @@ func verifyFile(t testing.TB, path string, mode os.FileMode, uid, gid uint32) {
33 33
 
34 34
 func createBase(t testing.TB, driver graphdriver.Driver, name string) {
35 35
 	// We need to be able to set any perms
36
-	oldmask := syscall.Umask(0)
37
-	defer syscall.Umask(oldmask)
36
+	oldmask := unix.Umask(0)
37
+	defer unix.Umask(oldmask)
38 38
 
39 39
 	err := driver.CreateReadWrite(name, "", nil)
40 40
 	require.NoError(t, err)
... ...
@@ -12,6 +12,7 @@ import (
12 12
 	"github.com/docker/docker/pkg/pools"
13 13
 	"github.com/docker/docker/pkg/system"
14 14
 	rsystem "github.com/opencontainers/runc/libcontainer/system"
15
+	"golang.org/x/sys/unix"
15 16
 )
16 17
 
17 18
 type copyFlags int
... ...
@@ -110,12 +111,12 @@ func copyDir(srcDir, dstDir string, flags copyFlags) error {
110 110
 				// cannot create a device if running in user namespace
111 111
 				return nil
112 112
 			}
113
-			if err := syscall.Mkfifo(dstPath, stat.Mode); err != nil {
113
+			if err := unix.Mkfifo(dstPath, stat.Mode); err != nil {
114 114
 				return err
115 115
 			}
116 116
 
117 117
 		case os.ModeDevice:
118
-			if err := syscall.Mknod(dstPath, stat.Mode, int(stat.Rdev)); err != nil {
118
+			if err := unix.Mknod(dstPath, stat.Mode, int(stat.Rdev)); err != nil {
119 119
 				return err
120 120
 			}
121 121
 
... ...
@@ -11,7 +11,6 @@ import (
11 11
 	"os/exec"
12 12
 	"path"
13 13
 	"strconv"
14
-	"syscall"
15 14
 
16 15
 	"github.com/Sirupsen/logrus"
17 16
 	"github.com/docker/docker/daemon/graphdriver"
... ...
@@ -23,6 +22,7 @@ import (
23 23
 	"github.com/docker/docker/pkg/mount"
24 24
 	"github.com/docker/docker/pkg/system"
25 25
 	"github.com/opencontainers/selinux/go-selinux/label"
26
+	"golang.org/x/sys/unix"
26 27
 )
27 28
 
28 29
 // This is a small wrapper over the NaiveDiffWriter that lets us have a custom
... ...
@@ -363,7 +363,7 @@ func (d *Driver) Get(id string, mountLabel string) (s string, err error) {
363 363
 	defer func() {
364 364
 		if err != nil {
365 365
 			if c := d.ctr.Decrement(mergedDir); c <= 0 {
366
-				syscall.Unmount(mergedDir, 0)
366
+				unix.Unmount(mergedDir, 0)
367 367
 			}
368 368
 		}
369 369
 	}()
... ...
@@ -377,7 +377,7 @@ func (d *Driver) Get(id string, mountLabel string) (s string, err error) {
377 377
 		workDir  = path.Join(dir, "work")
378 378
 		opts     = fmt.Sprintf("lowerdir=%s,upperdir=%s,workdir=%s", lowerDir, upperDir, workDir)
379 379
 	)
380
-	if err := syscall.Mount("overlay", mergedDir, "overlay", 0, label.FormatMountLabel(opts, mountLabel)); err != nil {
380
+	if err := unix.Mount("overlay", mergedDir, "overlay", 0, label.FormatMountLabel(opts, mountLabel)); err != nil {
381 381
 		return "", fmt.Errorf("error creating overlay mount to %s: %v", mergedDir, err)
382 382
 	}
383 383
 	// chown "workdir/work" to the remapped root UID/GID. Overlay fs inside a
... ...
@@ -404,7 +404,7 @@ func (d *Driver) Put(id string) error {
404 404
 	if count := d.ctr.Decrement(mountpoint); count > 0 {
405 405
 		return nil
406 406
 	}
407
-	if err := syscall.Unmount(mountpoint, syscall.MNT_DETACH); err != nil {
407
+	if err := unix.Unmount(mountpoint, unix.MNT_DETACH); err != nil {
408 408
 		logrus.Debugf("Failed to unmount %s overlay: %v", id, err)
409 409
 	}
410 410
 	return nil
... ...
@@ -8,11 +8,11 @@ import (
8 8
 	"os"
9 9
 	"path"
10 10
 	"path/filepath"
11
-	"syscall"
12 11
 
13 12
 	"github.com/Sirupsen/logrus"
14 13
 	"github.com/docker/docker/pkg/system"
15 14
 	"github.com/pkg/errors"
15
+	"golang.org/x/sys/unix"
16 16
 )
17 17
 
18 18
 // hasOpaqueCopyUpBug checks whether the filesystem has a bug
... ...
@@ -52,11 +52,11 @@ func hasOpaqueCopyUpBug(d string) error {
52 52
 	}
53 53
 
54 54
 	opts := fmt.Sprintf("lowerdir=%s:%s,upperdir=%s,workdir=%s", path.Join(td, "l2"), path.Join(td, "l1"), path.Join(td, "l3"), path.Join(td, "work"))
55
-	if err := syscall.Mount("overlay", filepath.Join(td, "merged"), "overlay", 0, opts); err != nil {
55
+	if err := unix.Mount("overlay", filepath.Join(td, "merged"), "overlay", 0, opts); err != nil {
56 56
 		return errors.Wrap(err, "failed to mount overlay")
57 57
 	}
58 58
 	defer func() {
59
-		if err := syscall.Unmount(filepath.Join(td, "merged"), 0); err != nil {
59
+		if err := unix.Unmount(filepath.Join(td, "merged"), 0); err != nil {
60 60
 			logrus.Warnf("Failed to unmount check directory %v: %v", filepath.Join(td, "merged"), err)
61 61
 		}
62 62
 	}()
... ...
@@ -9,9 +9,9 @@ import (
9 9
 	"fmt"
10 10
 	"os"
11 11
 	"runtime"
12
-	"syscall"
13 12
 
14 13
 	"github.com/docker/docker/pkg/reexec"
14
+	"golang.org/x/sys/unix"
15 15
 )
16 16
 
17 17
 func init() {
... ...
@@ -80,7 +80,7 @@ func mountFromMain() {
80 80
 		fatal(err)
81 81
 	}
82 82
 
83
-	if err := syscall.Mount(options.Device, options.Target, options.Type, uintptr(options.Flag), options.Label); err != nil {
83
+	if err := unix.Mount(options.Device, options.Target, options.Type, uintptr(options.Flag), options.Label); err != nil {
84 84
 		fatal(err)
85 85
 	}
86 86
 
... ...
@@ -15,7 +15,6 @@ import (
15 15
 	"strconv"
16 16
 	"strings"
17 17
 	"sync"
18
-	"syscall"
19 18
 
20 19
 	"github.com/Sirupsen/logrus"
21 20
 
... ...
@@ -35,6 +34,7 @@ import (
35 35
 	units "github.com/docker/go-units"
36 36
 
37 37
 	"github.com/opencontainers/selinux/go-selinux/label"
38
+	"golang.org/x/sys/unix"
38 39
 )
39 40
 
40 41
 var (
... ...
@@ -539,7 +539,7 @@ func (d *Driver) Get(id string, mountLabel string) (s string, err error) {
539 539
 	defer func() {
540 540
 		if err != nil {
541 541
 			if c := d.ctr.Decrement(mergedDir); c <= 0 {
542
-				syscall.Unmount(mergedDir, 0)
542
+				unix.Unmount(mergedDir, 0)
543 543
 			}
544 544
 		}
545 545
 	}()
... ...
@@ -552,10 +552,10 @@ func (d *Driver) Get(id string, mountLabel string) (s string, err error) {
552 552
 	}
553 553
 	opts := fmt.Sprintf("lowerdir=%s,upperdir=%s,workdir=%s", strings.Join(absLowers, ":"), path.Join(dir, "diff"), path.Join(dir, "work"))
554 554
 	mountData := label.FormatMountLabel(opts, mountLabel)
555
-	mount := syscall.Mount
555
+	mount := unix.Mount
556 556
 	mountTarget := mergedDir
557 557
 
558
-	pageSize := syscall.Getpagesize()
558
+	pageSize := unix.Getpagesize()
559 559
 
560 560
 	// Go can return a larger page size than supported by the system
561 561
 	// as of go 1.7. This will be fixed in 1.8 and this block can be
... ...
@@ -619,7 +619,7 @@ func (d *Driver) Put(id string) error {
619 619
 	if count := d.ctr.Decrement(mountpoint); count > 0 {
620 620
 		return nil
621 621
 	}
622
-	if err := syscall.Unmount(mountpoint, syscall.MNT_DETACH); err != nil {
622
+	if err := unix.Unmount(mountpoint, unix.MNT_DETACH); err != nil {
623 623
 		logrus.Debugf("Failed to unmount %s overlay: %s - %v", id, mountpoint, err)
624 624
 	}
625 625
 	return nil
... ...
@@ -5,13 +5,13 @@ package overlay2
5 5
 import (
6 6
 	"io/ioutil"
7 7
 	"os"
8
-	"syscall"
9 8
 	"testing"
10 9
 
11 10
 	"github.com/docker/docker/daemon/graphdriver"
12 11
 	"github.com/docker/docker/daemon/graphdriver/graphtest"
13 12
 	"github.com/docker/docker/pkg/archive"
14 13
 	"github.com/docker/docker/pkg/reexec"
14
+	"golang.org/x/sys/unix"
15 15
 )
16 16
 
17 17
 func init() {
... ...
@@ -31,7 +31,7 @@ func cdMountFrom(dir, device, target, mType, label string) error {
31 31
 	os.Chdir(dir)
32 32
 	defer os.Chdir(wd)
33 33
 
34
-	return syscall.Mount(device, target, mType, 0, label)
34
+	return unix.Mount(device, target, mType, 0, label)
35 35
 }
36 36
 
37 37
 func skipIfNaive(t *testing.T) {
... ...
@@ -12,6 +12,7 @@ import (
12 12
 	"time"
13 13
 
14 14
 	"github.com/Sirupsen/logrus"
15
+	"golang.org/x/sys/unix"
15 16
 )
16 17
 
17 18
 // generateID creates a new random string identifier with the given length
... ...
@@ -69,7 +70,7 @@ func retryOnError(err error) bool {
69 69
 	case *os.PathError:
70 70
 		return retryOnError(err.Err) // unpack the target error
71 71
 	case syscall.Errno:
72
-		if err == syscall.EPERM {
72
+		if err == unix.EPERM {
73 73
 			// EPERM represents an entropy pool exhaustion, a condition under
74 74
 			// which we backoff and retry.
75 75
 			return true
... ...
@@ -59,6 +59,7 @@ import (
59 59
 	"unsafe"
60 60
 
61 61
 	"github.com/Sirupsen/logrus"
62
+	"golang.org/x/sys/unix"
62 63
 )
63 64
 
64 65
 // Quota limit params - currently we only control blocks hard limit
... ...
@@ -184,7 +185,7 @@ func setProjectQuota(backingFsBlockDev string, projectID uint32, quota Quota) er
184 184
 	var cs = C.CString(backingFsBlockDev)
185 185
 	defer C.free(unsafe.Pointer(cs))
186 186
 
187
-	_, _, errno := syscall.Syscall6(syscall.SYS_QUOTACTL, C.Q_XSETPQLIM,
187
+	_, _, errno := unix.Syscall6(unix.SYS_QUOTACTL, C.Q_XSETPQLIM,
188 188
 		uintptr(unsafe.Pointer(cs)), uintptr(d.d_id),
189 189
 		uintptr(unsafe.Pointer(&d)), 0, 0)
190 190
 	if errno != 0 {
... ...
@@ -211,7 +212,7 @@ func (q *Control) GetQuota(targetPath string, quota *Quota) error {
211 211
 	var cs = C.CString(q.backingFsBlockDev)
212 212
 	defer C.free(unsafe.Pointer(cs))
213 213
 
214
-	_, _, errno := syscall.Syscall6(syscall.SYS_QUOTACTL, C.Q_XGETPQUOTA,
214
+	_, _, errno := unix.Syscall6(unix.SYS_QUOTACTL, C.Q_XGETPQUOTA,
215 215
 		uintptr(unsafe.Pointer(cs)), uintptr(C.__u32(projectID)),
216 216
 		uintptr(unsafe.Pointer(&d)), 0, 0)
217 217
 	if errno != 0 {
... ...
@@ -232,7 +233,7 @@ func getProjectID(targetPath string) (uint32, error) {
232 232
 	defer closeDir(dir)
233 233
 
234 234
 	var fsx C.struct_fsxattr
235
-	_, _, errno := syscall.Syscall(syscall.SYS_IOCTL, getDirFd(dir), C.FS_IOC_FSGETXATTR,
235
+	_, _, errno := unix.Syscall(unix.SYS_IOCTL, getDirFd(dir), C.FS_IOC_FSGETXATTR,
236 236
 		uintptr(unsafe.Pointer(&fsx)))
237 237
 	if errno != 0 {
238 238
 		return 0, fmt.Errorf("Failed to get projid for %s: %v", targetPath, errno.Error())
... ...
@@ -250,14 +251,14 @@ func setProjectID(targetPath string, projectID uint32) error {
250 250
 	defer closeDir(dir)
251 251
 
252 252
 	var fsx C.struct_fsxattr
253
-	_, _, errno := syscall.Syscall(syscall.SYS_IOCTL, getDirFd(dir), C.FS_IOC_FSGETXATTR,
253
+	_, _, errno := unix.Syscall(unix.SYS_IOCTL, getDirFd(dir), C.FS_IOC_FSGETXATTR,
254 254
 		uintptr(unsafe.Pointer(&fsx)))
255 255
 	if errno != 0 {
256 256
 		return fmt.Errorf("Failed to get projid for %s: %v", targetPath, errno.Error())
257 257
 	}
258 258
 	fsx.fsx_projid = C.__u32(projectID)
259 259
 	fsx.fsx_xflags |= C.FS_XFLAG_PROJINHERIT
260
-	_, _, errno = syscall.Syscall(syscall.SYS_IOCTL, getDirFd(dir), C.FS_IOC_FSSETXATTR,
260
+	_, _, errno = unix.Syscall(unix.SYS_IOCTL, getDirFd(dir), C.FS_IOC_FSSETXATTR,
261 261
 		uintptr(unsafe.Pointer(&fsx)))
262 262
 	if errno != 0 {
263 263
 		return fmt.Errorf("Failed to set projid for %s: %v", targetPath, errno.Error())
... ...
@@ -329,9 +330,9 @@ func makeBackingFsDev(home string) (string, error) {
329 329
 
330 330
 	backingFsBlockDev := path.Join(home, "backingFsBlockDev")
331 331
 	// Re-create just in case someone copied the home directory over to a new device
332
-	syscall.Unlink(backingFsBlockDev)
332
+	unix.Unlink(backingFsBlockDev)
333 333
 	stat := fileinfo.Sys().(*syscall.Stat_t)
334
-	if err := syscall.Mknod(backingFsBlockDev, syscall.S_IFBLK|0600, int(stat.Dev)); err != nil {
334
+	if err := unix.Mknod(backingFsBlockDev, unix.S_IFBLK|0600, int(stat.Dev)); err != nil {
335 335
 		return "", fmt.Errorf("Failed to mknod %s: %v", backingFsBlockDev, err)
336 336
 	}
337 337
 
... ...
@@ -124,7 +124,7 @@ func getFileSystemType(drive string) (fsType string, hr error) {
124 124
 		modkernel32              = windows.NewLazySystemDLL("kernel32.dll")
125 125
 		procGetVolumeInformation = modkernel32.NewProc("GetVolumeInformationW")
126 126
 		buf                      = make([]uint16, 255)
127
-		size                     = syscall.MAX_PATH + 1
127
+		size                     = windows.MAX_PATH + 1
128 128
 	)
129 129
 	if len(drive) != 1 {
130 130
 		hr = errors.New("getFileSystemType must be called with a drive letter")
... ...
@@ -132,11 +132,11 @@ func getFileSystemType(drive string) (fsType string, hr error) {
132 132
 	}
133 133
 	drive += `:\`
134 134
 	n := uintptr(unsafe.Pointer(nil))
135
-	r0, _, _ := syscall.Syscall9(procGetVolumeInformation.Addr(), 8, uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(drive))), n, n, n, n, n, uintptr(unsafe.Pointer(&buf[0])), uintptr(size), 0)
135
+	r0, _, _ := syscall.Syscall9(procGetVolumeInformation.Addr(), 8, uintptr(unsafe.Pointer(windows.StringToUTF16Ptr(drive))), n, n, n, n, n, uintptr(unsafe.Pointer(&buf[0])), uintptr(size), 0)
136 136
 	if int32(r0) < 0 {
137 137
 		hr = syscall.Errno(win32FromHresult(r0))
138 138
 	}
139
-	fsType = syscall.UTF16ToString(buf)
139
+	fsType = windows.UTF16ToString(buf)
140 140
 	return
141 141
 }
142 142
 
... ...
@@ -904,12 +904,12 @@ func (fg *fileGetCloserWithBackupPrivileges) Get(filename string) (io.ReadCloser
904 904
 	// standby list - Microsoft VSO Bug Tracker #9900466
905 905
 	err := winio.RunWithPrivilege(winio.SeBackupPrivilege, func() error {
906 906
 		path := longpath.AddPrefix(filepath.Join(fg.path, filename))
907
-		p, err := syscall.UTF16FromString(path)
907
+		p, err := windows.UTF16FromString(path)
908 908
 		if err != nil {
909 909
 			return err
910 910
 		}
911 911
 		const fileFlagSequentialScan = 0x08000000 // FILE_FLAG_SEQUENTIAL_SCAN
912
-		h, err := syscall.CreateFile(&p[0], syscall.GENERIC_READ, syscall.FILE_SHARE_READ, nil, syscall.OPEN_EXISTING, syscall.FILE_FLAG_BACKUP_SEMANTICS|fileFlagSequentialScan, 0)
912
+		h, err := windows.CreateFile(&p[0], windows.GENERIC_READ, windows.FILE_SHARE_READ, nil, windows.OPEN_EXISTING, windows.FILE_FLAG_BACKUP_SEMANTICS|fileFlagSequentialScan, 0)
913 913
 		if err != nil {
914 914
 			return &os.PathError{Op: "open", Path: path, Err: err}
915 915
 		}
... ...
@@ -10,7 +10,6 @@ import (
10 10
 	"strconv"
11 11
 	"strings"
12 12
 	"sync"
13
-	"syscall"
14 13
 	"time"
15 14
 
16 15
 	"github.com/Sirupsen/logrus"
... ...
@@ -20,6 +19,7 @@ import (
20 20
 	"github.com/docker/docker/pkg/parsers"
21 21
 	zfs "github.com/mistifyio/go-zfs"
22 22
 	"github.com/opencontainers/selinux/go-selinux/label"
23
+	"golang.org/x/sys/unix"
23 24
 )
24 25
 
25 26
 type zfsOptions struct {
... ...
@@ -141,8 +141,8 @@ func parseOptions(opt []string) (zfsOptions, error) {
141 141
 }
142 142
 
143 143
 func lookupZfsDataset(rootdir string) (string, error) {
144
-	var stat syscall.Stat_t
145
-	if err := syscall.Stat(rootdir, &stat); err != nil {
144
+	var stat unix.Stat_t
145
+	if err := unix.Stat(rootdir, &stat); err != nil {
146 146
 		return "", fmt.Errorf("Failed to access '%s': %s", rootdir, err)
147 147
 	}
148 148
 	wantedDev := stat.Dev
... ...
@@ -152,7 +152,7 @@ func lookupZfsDataset(rootdir string) (string, error) {
152 152
 		return "", err
153 153
 	}
154 154
 	for _, m := range mounts {
155
-		if err := syscall.Stat(m.Mountpoint, &stat); err != nil {
155
+		if err := unix.Stat(m.Mountpoint, &stat); err != nil {
156 156
 			logrus.Debugf("[zfs] failed to stat '%s' while scanning for zfs mount: %v", m.Mountpoint, err)
157 157
 			continue // may fail on fuse file systems
158 158
 		}
... ...
@@ -3,15 +3,15 @@ package zfs
3 3
 import (
4 4
 	"fmt"
5 5
 	"strings"
6
-	"syscall"
7 6
 
8 7
 	"github.com/Sirupsen/logrus"
9 8
 	"github.com/docker/docker/daemon/graphdriver"
9
+	"golang.org/x/sys/unix"
10 10
 )
11 11
 
12 12
 func checkRootdirFs(rootdir string) error {
13
-	var buf syscall.Statfs_t
14
-	if err := syscall.Statfs(rootdir, &buf); err != nil {
13
+	var buf unix.Statfs_t
14
+	if err := unix.Statfs(rootdir, &buf); err != nil {
15 15
 		return fmt.Errorf("Failed to access '%s': %s", rootdir, err)
16 16
 	}
17 17
 
... ...
@@ -2,15 +2,15 @@ package zfs
2 2
 
3 3
 import (
4 4
 	"fmt"
5
-	"syscall"
6 5
 
7 6
 	"github.com/Sirupsen/logrus"
8 7
 	"github.com/docker/docker/daemon/graphdriver"
8
+	"golang.org/x/sys/unix"
9 9
 )
10 10
 
11 11
 func checkRootdirFs(rootdir string) error {
12
-	var buf syscall.Statfs_t
13
-	if err := syscall.Statfs(rootdir, &buf); err != nil {
12
+	var buf unix.Statfs_t
13
+	if err := unix.Statfs(rootdir, &buf); err != nil {
14 14
 		return fmt.Errorf("Failed to access '%s': %s", rootdir, err)
15 15
 	}
16 16
 
... ...
@@ -6,9 +6,9 @@ import (
6 6
 	"os"
7 7
 	"path/filepath"
8 8
 	"strings"
9
-	"syscall"
10 9
 
11 10
 	"github.com/docker/docker/pkg/idtools"
11
+	"golang.org/x/sys/unix"
12 12
 )
13 13
 
14 14
 // Setup populates a directory with mountpoints suitable
... ...
@@ -33,7 +33,7 @@ func Setup(initLayer string, rootIDs idtools.IDPair) error {
33 33
 		prev := "/"
34 34
 		for _, p := range parts[1:] {
35 35
 			prev = filepath.Join(prev, p)
36
-			syscall.Unlink(filepath.Join(initLayer, prev))
36
+			unix.Unlink(filepath.Join(initLayer, prev))
37 37
 		}
38 38
 
39 39
 		if _, err := os.Stat(filepath.Join(initLayer, pth)); err != nil {
... ...
@@ -16,7 +16,6 @@ import (
16 16
 	"errors"
17 17
 	"fmt"
18 18
 	"sync"
19
-	"syscall"
20 19
 	"unsafe"
21 20
 
22 21
 	"github.com/Sirupsen/logrus"
... ...
@@ -42,12 +41,12 @@ var (
42 42
 	procEventWriteString = modAdvapi32.NewProc("EventWriteString")
43 43
 	procEventUnregister  = modAdvapi32.NewProc("EventUnregister")
44 44
 )
45
-var providerHandle syscall.Handle
45
+var providerHandle windows.Handle
46 46
 var refCount int
47 47
 var mu sync.Mutex
48 48
 
49 49
 func init() {
50
-	providerHandle = syscall.InvalidHandle
50
+	providerHandle = windows.InvalidHandle
51 51
 	if err := logger.RegisterLogDriver(name, New); err != nil {
52 52
 		logrus.Fatal(err)
53 53
 	}
... ...
@@ -70,7 +69,7 @@ func New(info logger.Info) (logger.Logger, error) {
70 70
 
71 71
 // Log logs the message to the ETW stream.
72 72
 func (etwLogger *etwLogs) Log(msg *logger.Message) error {
73
-	if providerHandle == syscall.InvalidHandle {
73
+	if providerHandle == windows.InvalidHandle {
74 74
 		// This should never be hit, if it is, it indicates a programming error.
75 75
 		errorMessage := "ETWLogs cannot log the message, because the event provider has not been registered."
76 76
 		logrus.Error(errorMessage)
... ...
@@ -121,7 +120,7 @@ func unregisterETWProvider() {
121 121
 	if refCount == 1 {
122 122
 		if callEventUnregister() {
123 123
 			refCount--
124
-			providerHandle = syscall.InvalidHandle
124
+			providerHandle = windows.InvalidHandle
125 125
 		}
126 126
 		// Not returning an error if EventUnregister fails, because etwLogs will continue to work
127 127
 	} else {
... ...
@@ -131,7 +130,7 @@ func unregisterETWProvider() {
131 131
 
132 132
 func callEventRegister() error {
133 133
 	// The provider's GUID is {a3693192-9ed6-46d2-a981-f8226c8363bd}
134
-	guid := syscall.GUID{
134
+	guid := windows.GUID{
135 135
 		Data1: 0xa3693192,
136 136
 		Data2: 0x9ed6,
137 137
 		Data3: 0x46d2,
... ...
@@ -148,7 +147,7 @@ func callEventRegister() error {
148 148
 }
149 149
 
150 150
 func callEventWriteString(message string) error {
151
-	utf16message, err := syscall.UTF16FromString(message)
151
+	utf16message, err := windows.UTF16FromString(message)
152 152
 
153 153
 	if err != nil {
154 154
 		return err
... ...
@@ -7,7 +7,6 @@ import (
7 7
 	"net/http"
8 8
 	"os"
9 9
 	"path/filepath"
10
-	"syscall"
11 10
 
12 11
 	"github.com/Sirupsen/logrus"
13 12
 	"github.com/docker/docker/pkg/mount"
... ...
@@ -15,11 +14,12 @@ import (
15 15
 	"github.com/docker/docker/pkg/plugins"
16 16
 	metrics "github.com/docker/go-metrics"
17 17
 	"github.com/pkg/errors"
18
+	"golang.org/x/sys/unix"
18 19
 )
19 20
 
20 21
 func (daemon *Daemon) listenMetricsSock() (string, error) {
21 22
 	path := filepath.Join(daemon.configStore.ExecRoot, "metrics.sock")
22
-	syscall.Unlink(path)
23
+	unix.Unlink(path)
23 24
 	l, err := net.Listen("unix", path)
24 25
 	if err != nil {
25 26
 		return "", errors.Wrap(err, "error setting up metrics plugin listener")
... ...
@@ -1,14 +1,13 @@
1 1
 package daemon
2 2
 
3 3
 import (
4
-	"syscall"
5
-
6 4
 	containertypes "github.com/docker/docker/api/types/container"
7 5
 	"github.com/docker/docker/container"
8 6
 	"github.com/docker/docker/oci"
9 7
 	"github.com/docker/docker/pkg/sysinfo"
10 8
 	"github.com/docker/docker/pkg/system"
11 9
 	"github.com/opencontainers/runtime-spec/specs-go"
10
+	"golang.org/x/sys/windows"
12 11
 )
13 12
 
14 13
 func (daemon *Daemon) createSpec(c *container.Container) (*specs.Spec, error) {
... ...
@@ -196,7 +195,7 @@ func (daemon *Daemon) createSpecLinuxFields(c *container.Container, s *specs.Spe
196 196
 func escapeArgs(args []string) []string {
197 197
 	escapedArgs := make([]string, len(args))
198 198
 	for i, a := range args {
199
-		escapedArgs[i] = syscall.EscapeArg(a)
199
+		escapedArgs[i] = windows.EscapeArg(a)
200 200
 	}
201 201
 	return escapedArgs
202 202
 }
... ...
@@ -113,7 +113,7 @@ func continueOnError(err error) bool {
113 113
 	case ImageConfigPullError:
114 114
 		return false
115 115
 	case error:
116
-		return !strings.Contains(err.Error(), strings.ToLower(syscall.ENOSPC.Error()))
116
+		return !strings.Contains(err.Error(), strings.ToLower(syscall.ESRCH.Error()))
117 117
 	}
118 118
 	// let's be nice and fallback if the error is a completely
119 119
 	// unexpected one.
... ...
@@ -5,9 +5,9 @@ package daemon
5 5
 import (
6 6
 	"os"
7 7
 	"path/filepath"
8
-	"syscall"
9 8
 
10 9
 	"github.com/go-check/check"
10
+	"golang.org/x/sys/unix"
11 11
 )
12 12
 
13 13
 func cleanupExecRoot(c *check.C, execRoot string) {
... ...
@@ -18,7 +18,7 @@ func cleanupExecRoot(c *check.C, execRoot string) {
18 18
 	// new exec root.
19 19
 	netnsPath := filepath.Join(execRoot, "netns")
20 20
 	filepath.Walk(netnsPath, func(path string, info os.FileInfo, err error) error {
21
-		if err := syscall.Unmount(path, syscall.MNT_FORCE); err != nil {
21
+		if err := unix.Unmount(path, unix.MNT_FORCE); err != nil {
22 22
 			c.Logf("unmount of %s failed: %v", path, err)
23 23
 		}
24 24
 		os.Remove(path)
... ...
@@ -28,9 +28,9 @@ func cleanupExecRoot(c *check.C, execRoot string) {
28 28
 
29 29
 // SignalDaemonDump sends a signal to the daemon to write a dump file
30 30
 func SignalDaemonDump(pid int) {
31
-	syscall.Kill(pid, syscall.SIGQUIT)
31
+	unix.Kill(pid, unix.SIGQUIT)
32 32
 }
33 33
 
34 34
 func signalDaemonReload(pid int) error {
35
-	return syscall.Kill(pid, syscall.SIGHUP)
35
+	return unix.Kill(pid, unix.SIGHUP)
36 36
 }
... ...
@@ -10,21 +10,21 @@ import (
10 10
 	"golang.org/x/sys/windows"
11 11
 )
12 12
 
13
-func openEvent(desiredAccess uint32, inheritHandle bool, name string, proc *windows.LazyProc) (handle syscall.Handle, err error) {
14
-	namep, _ := syscall.UTF16PtrFromString(name)
13
+func openEvent(desiredAccess uint32, inheritHandle bool, name string, proc *windows.LazyProc) (handle windows.Handle, err error) {
14
+	namep, _ := windows.UTF16PtrFromString(name)
15 15
 	var _p2 uint32
16 16
 	if inheritHandle {
17 17
 		_p2 = 1
18 18
 	}
19 19
 	r0, _, e1 := proc.Call(uintptr(desiredAccess), uintptr(_p2), uintptr(unsafe.Pointer(namep)))
20
-	handle = syscall.Handle(r0)
21
-	if handle == syscall.InvalidHandle {
20
+	handle = windows.Handle(r0)
21
+	if handle == windows.InvalidHandle {
22 22
 		err = e1
23 23
 	}
24 24
 	return
25 25
 }
26 26
 
27
-func pulseEvent(handle syscall.Handle, proc *windows.LazyProc) (err error) {
27
+func pulseEvent(handle windows.Handle, proc *windows.LazyProc) (err error) {
28 28
 	r0, _, _ := proc.Call(uintptr(handle))
29 29
 	if r0 != 0 {
30 30
 		err = syscall.Errno(r0)
... ...
@@ -7,7 +7,6 @@ import (
7 7
 	"path"
8 8
 	"strconv"
9 9
 	"strings"
10
-	"syscall"
11 10
 	"time"
12 11
 
13 12
 	"github.com/docker/docker/api/types/swarm"
... ...
@@ -17,6 +16,7 @@ import (
17 17
 	"github.com/docker/docker/integration-cli/fixtures/plugin"
18 18
 	"github.com/go-check/check"
19 19
 	"golang.org/x/net/context"
20
+	"golang.org/x/sys/unix"
20 21
 )
21 22
 
22 23
 func setPortConfig(portConfig []swarm.PortConfig) daemon.ServiceConstructor {
... ...
@@ -584,7 +584,7 @@ func (s *DockerSwarmSuite) TestAPISwarmServicesStateReporting(c *check.C) {
584 584
 	c.Assert(err, checker.IsNil)
585 585
 	pid, err := strconv.Atoi(strings.TrimSpace(pidStr))
586 586
 	c.Assert(err, checker.IsNil)
587
-	c.Assert(syscall.Kill(pid, syscall.SIGKILL), checker.IsNil)
587
+	c.Assert(unix.Kill(pid, unix.SIGKILL), checker.IsNil)
588 588
 
589 589
 	time.Sleep(time.Second) // give some time to handle the signal
590 590
 
... ...
@@ -6,12 +6,12 @@ import (
6 6
 	"os"
7 7
 	"path/filepath"
8 8
 	"strings"
9
-	"syscall"
10 9
 
11 10
 	"github.com/docker/docker/integration-cli/checker"
12 11
 	"github.com/docker/docker/pkg/mount"
13 12
 	icmd "github.com/docker/docker/pkg/testutil/cmd"
14 13
 	"github.com/go-check/check"
14
+	"golang.org/x/sys/unix"
15 15
 )
16 16
 
17 17
 // TestDaemonRestartWithPluginEnabled tests state restore for an enabled plugin
... ...
@@ -145,7 +145,7 @@ func (s *DockerDaemonSuite) TestDaemonShutdownWithPlugins(c *check.C) {
145 145
 	}
146 146
 
147 147
 	for {
148
-		if err := syscall.Kill(s.d.Pid(), 0); err == syscall.ESRCH {
148
+		if err := unix.Kill(s.d.Pid(), 0); err == unix.ESRCH {
149 149
 			break
150 150
 		}
151 151
 	}
... ...
@@ -19,7 +19,6 @@ import (
19 19
 	"strconv"
20 20
 	"strings"
21 21
 	"sync"
22
-	"syscall"
23 22
 	"time"
24 23
 
25 24
 	"crypto/tls"
... ...
@@ -42,6 +41,7 @@ import (
42 42
 	"github.com/docker/libtrust"
43 43
 	"github.com/go-check/check"
44 44
 	"github.com/kr/pty"
45
+	"golang.org/x/sys/unix"
45 46
 )
46 47
 
47 48
 // TestLegacyDaemonCommand test starting docker daemon using "deprecated" docker daemon
... ...
@@ -2309,8 +2309,8 @@ func (s *DockerDaemonSuite) TestDaemonMaxConcurrencyWithConfigFile(c *check.C) {
2309 2309
 	fmt.Fprintf(configFile, "%s", daemonConfig)
2310 2310
 	configFile.Close()
2311 2311
 
2312
-	c.Assert(s.d.Signal(syscall.SIGHUP), checker.IsNil)
2313
-	// syscall.Kill(s.d.cmd.Process.Pid, syscall.SIGHUP)
2312
+	c.Assert(s.d.Signal(unix.SIGHUP), checker.IsNil)
2313
+	// unix.Kill(s.d.cmd.Process.Pid, unix.SIGHUP)
2314 2314
 
2315 2315
 	time.Sleep(3 * time.Second)
2316 2316
 
... ...
@@ -2350,8 +2350,8 @@ func (s *DockerDaemonSuite) TestDaemonMaxConcurrencyWithConfigFileReload(c *chec
2350 2350
 	fmt.Fprintf(configFile, "%s", daemonConfig)
2351 2351
 	configFile.Close()
2352 2352
 
2353
-	c.Assert(s.d.Signal(syscall.SIGHUP), checker.IsNil)
2354
-	// syscall.Kill(s.d.cmd.Process.Pid, syscall.SIGHUP)
2353
+	c.Assert(s.d.Signal(unix.SIGHUP), checker.IsNil)
2354
+	// unix.Kill(s.d.cmd.Process.Pid, unix.SIGHUP)
2355 2355
 
2356 2356
 	time.Sleep(3 * time.Second)
2357 2357
 
... ...
@@ -2368,7 +2368,7 @@ func (s *DockerDaemonSuite) TestDaemonMaxConcurrencyWithConfigFileReload(c *chec
2368 2368
 	fmt.Fprintf(configFile, "%s", daemonConfig)
2369 2369
 	configFile.Close()
2370 2370
 
2371
-	c.Assert(s.d.Signal(syscall.SIGHUP), checker.IsNil)
2371
+	c.Assert(s.d.Signal(unix.SIGHUP), checker.IsNil)
2372 2372
 
2373 2373
 	time.Sleep(3 * time.Second)
2374 2374
 
... ...
@@ -2455,7 +2455,7 @@ func (s *DockerDaemonSuite) TestRunWithRuntimeFromConfigFile(c *check.C) {
2455 2455
 }
2456 2456
 `
2457 2457
 	ioutil.WriteFile(configName, []byte(config), 0644)
2458
-	c.Assert(s.d.Signal(syscall.SIGHUP), checker.IsNil)
2458
+	c.Assert(s.d.Signal(unix.SIGHUP), checker.IsNil)
2459 2459
 	// Give daemon time to reload config
2460 2460
 	<-time.After(1 * time.Second)
2461 2461
 
... ...
@@ -2484,7 +2484,7 @@ func (s *DockerDaemonSuite) TestRunWithRuntimeFromConfigFile(c *check.C) {
2484 2484
 }
2485 2485
 `
2486 2486
 	ioutil.WriteFile(configName, []byte(config), 0644)
2487
-	c.Assert(s.d.Signal(syscall.SIGHUP), checker.IsNil)
2487
+	c.Assert(s.d.Signal(unix.SIGHUP), checker.IsNil)
2488 2488
 	// Give daemon time to reload config
2489 2489
 	<-time.After(1 * time.Second)
2490 2490
 
... ...
@@ -2510,7 +2510,7 @@ func (s *DockerDaemonSuite) TestRunWithRuntimeFromConfigFile(c *check.C) {
2510 2510
 }
2511 2511
 `
2512 2512
 	ioutil.WriteFile(configName, []byte(config), 0644)
2513
-	c.Assert(s.d.Signal(syscall.SIGHUP), checker.IsNil)
2513
+	c.Assert(s.d.Signal(unix.SIGHUP), checker.IsNil)
2514 2514
 	// Give daemon time to reload config
2515 2515
 	<-time.After(1 * time.Second)
2516 2516
 
... ...
@@ -2762,7 +2762,7 @@ func (s *DockerDaemonSuite) TestDaemonShutdownTimeout(c *check.C) {
2762 2762
 	_, err := s.d.Cmd("run", "-d", "busybox", "top")
2763 2763
 	c.Assert(err, check.IsNil)
2764 2764
 
2765
-	c.Assert(s.d.Signal(syscall.SIGINT), checker.IsNil)
2765
+	c.Assert(s.d.Signal(unix.SIGINT), checker.IsNil)
2766 2766
 
2767 2767
 	select {
2768 2768
 	case <-s.d.Wait:
... ...
@@ -2796,7 +2796,7 @@ func (s *DockerDaemonSuite) TestDaemonShutdownTimeoutWithConfigFile(c *check.C)
2796 2796
 	fmt.Fprintf(configFile, "%s", daemonConfig)
2797 2797
 	configFile.Close()
2798 2798
 
2799
-	c.Assert(s.d.Signal(syscall.SIGHUP), checker.IsNil)
2799
+	c.Assert(s.d.Signal(unix.SIGHUP), checker.IsNil)
2800 2800
 
2801 2801
 	select {
2802 2802
 	case <-s.d.Wait:
... ...
@@ -2897,7 +2897,7 @@ func (s *DockerDaemonSuite) TestRestartPolicyWithLiveRestore(c *check.C) {
2897 2897
 	pidint, err := strconv.Atoi(strings.TrimSpace(pid))
2898 2898
 	c.Assert(err, check.IsNil)
2899 2899
 	c.Assert(pidint, checker.GreaterThan, 0)
2900
-	c.Assert(syscall.Kill(pidint, syscall.SIGKILL), check.IsNil)
2900
+	c.Assert(unix.Kill(pidint, unix.SIGKILL), check.IsNil)
2901 2901
 
2902 2902
 	ticker := time.NewTicker(50 * time.Millisecond)
2903 2903
 	timeout := time.After(10 * time.Second)
... ...
@@ -10,7 +10,6 @@ import (
10 10
 	"os"
11 11
 	"os/exec"
12 12
 	"strings"
13
-	"syscall"
14 13
 	"time"
15 14
 	"unicode"
16 15
 
... ...
@@ -18,6 +17,7 @@ import (
18 18
 	"github.com/docker/docker/integration-cli/cli/build"
19 19
 	"github.com/go-check/check"
20 20
 	"github.com/kr/pty"
21
+	"golang.org/x/sys/unix"
21 22
 )
22 23
 
23 24
 // #5979
... ...
@@ -421,7 +421,7 @@ func (s *DockerDaemonSuite) TestDaemonEvents(c *check.C) {
421 421
 	fmt.Fprintf(configFile, "%s", daemonConfig)
422 422
 	configFile.Close()
423 423
 
424
-	c.Assert(s.d.Signal(syscall.SIGHUP), checker.IsNil)
424
+	c.Assert(s.d.Signal(unix.SIGHUP), checker.IsNil)
425 425
 
426 426
 	time.Sleep(3 * time.Second)
427 427
 
... ...
@@ -459,7 +459,7 @@ func (s *DockerDaemonSuite) TestDaemonEventsWithFilters(c *check.C) {
459 459
 	}
460 460
 	c.Assert(daemonID, checker.Not(checker.Equals), "")
461 461
 
462
-	c.Assert(s.d.Signal(syscall.SIGHUP), checker.IsNil)
462
+	c.Assert(s.d.Signal(unix.SIGHUP), checker.IsNil)
463 463
 
464 464
 	time.Sleep(3 * time.Second)
465 465
 
... ...
@@ -12,7 +12,6 @@ import (
12 12
 	"os"
13 13
 	"path/filepath"
14 14
 	"strings"
15
-	"syscall"
16 15
 	"time"
17 16
 
18 17
 	"github.com/docker/docker/api/types"
... ...
@@ -30,6 +29,7 @@ import (
30 30
 	"github.com/docker/libnetwork/netlabel"
31 31
 	"github.com/go-check/check"
32 32
 	"github.com/vishvananda/netlink"
33
+	"golang.org/x/sys/unix"
33 34
 )
34 35
 
35 36
 const dummyNetworkDriver = "dummy-network-driver"
... ...
@@ -1810,12 +1810,12 @@ func (s *DockerNetworkSuite) TestConntrackFlowsLeak(c *check.C) {
1810 1810
 	cli.DockerCmd(c, "run", "-d", "--name", "client", "--net=host", "appropriate/nc", "sh", "-c", cmd)
1811 1811
 
1812 1812
 	// Get all the flows using netlink
1813
-	flows, err := netlink.ConntrackTableList(netlink.ConntrackTable, syscall.AF_INET)
1813
+	flows, err := netlink.ConntrackTableList(netlink.ConntrackTable, unix.AF_INET)
1814 1814
 	c.Assert(err, check.IsNil)
1815 1815
 	var flowMatch int
1816 1816
 	for _, flow := range flows {
1817 1817
 		// count only the flows that we are interested in, skipping others that can be laying around the host
1818
-		if flow.Forward.Protocol == syscall.IPPROTO_UDP &&
1818
+		if flow.Forward.Protocol == unix.IPPROTO_UDP &&
1819 1819
 			flow.Forward.DstIP.Equal(net.ParseIP("192.168.10.1")) &&
1820 1820
 			flow.Forward.DstPort == 8080 {
1821 1821
 			flowMatch++
... ...
@@ -1828,11 +1828,11 @@ func (s *DockerNetworkSuite) TestConntrackFlowsLeak(c *check.C) {
1828 1828
 	cli.DockerCmd(c, "rm", "-fv", "server")
1829 1829
 
1830 1830
 	// Fetch again all the flows and validate that there is no server flow in the conntrack laying around
1831
-	flows, err = netlink.ConntrackTableList(netlink.ConntrackTable, syscall.AF_INET)
1831
+	flows, err = netlink.ConntrackTableList(netlink.ConntrackTable, unix.AF_INET)
1832 1832
 	c.Assert(err, check.IsNil)
1833 1833
 	flowMatch = 0
1834 1834
 	for _, flow := range flows {
1835
-		if flow.Forward.Protocol == syscall.IPPROTO_UDP &&
1835
+		if flow.Forward.Protocol == unix.IPPROTO_UDP &&
1836 1836
 			flow.Forward.DstIP.Equal(net.ParseIP("192.168.10.1")) &&
1837 1837
 			flow.Forward.DstPort == 8080 {
1838 1838
 			flowMatch++
... ...
@@ -5,7 +5,6 @@ import (
5 5
 	"os"
6 6
 	"strings"
7 7
 	"sync"
8
-	"syscall"
9 8
 	"time"
10 9
 
11 10
 	"github.com/Sirupsen/logrus"
... ...
@@ -17,6 +16,7 @@ import (
17 17
 	"github.com/golang/protobuf/ptypes/timestamp"
18 18
 	specs "github.com/opencontainers/runtime-spec/specs-go"
19 19
 	"golang.org/x/net/context"
20
+	"golang.org/x/sys/unix"
20 21
 )
21 22
 
22 23
 type client struct {
... ...
@@ -95,9 +95,9 @@ func (clnt *client) AddProcess(ctx context.Context, containerID, processFriendly
95 95
 			AdditionalGids: sp.User.AdditionalGids,
96 96
 		},
97 97
 		Pid:             processFriendlyName,
98
-		Stdin:           p.fifo(syscall.Stdin),
99
-		Stdout:          p.fifo(syscall.Stdout),
100
-		Stderr:          p.fifo(syscall.Stderr),
98
+		Stdin:           p.fifo(unix.Stdin),
99
+		Stdout:          p.fifo(unix.Stdout),
100
+		Stderr:          p.fifo(unix.Stderr),
101 101
 		Capabilities:    sp.Capabilities.Effective,
102 102
 		ApparmorProfile: sp.ApparmorProfile,
103 103
 		SelinuxLabel:    sp.SelinuxLabel,
... ...
@@ -226,7 +226,7 @@ func (clnt *client) cleanupOldRootfs(containerID string) {
226 226
 	if mts, err := mount.GetMounts(); err == nil {
227 227
 		for _, mts := range mts {
228 228
 			if strings.HasSuffix(mts.Mountpoint, containerID+"/rootfs") {
229
-				if err := syscall.Unmount(mts.Mountpoint, syscall.MNT_DETACH); err == nil {
229
+				if err := unix.Unmount(mts.Mountpoint, unix.MNT_DETACH); err == nil {
230 230
 					os.RemoveAll(strings.TrimSuffix(mts.Mountpoint, "/rootfs"))
231 231
 				}
232 232
 				break
... ...
@@ -524,7 +524,7 @@ func (clnt *client) Restore(containerID string, attachStdio StdioCallback, optio
524 524
 
525 525
 	container.discardFifos()
526 526
 
527
-	if err := clnt.Signal(containerID, int(syscall.SIGTERM)); err != nil {
527
+	if err := clnt.Signal(containerID, int(unix.SIGTERM)); err != nil {
528 528
 		logrus.Errorf("libcontainerd: error sending sigterm to %v: %v", containerID, err)
529 529
 	}
530 530
 
... ...
@@ -541,7 +541,7 @@ func (clnt *client) Restore(containerID string, attachStdio StdioCallback, optio
541 541
 
542 542
 	select {
543 543
 	case <-time.After(10 * time.Second):
544
-		if err := clnt.Signal(containerID, int(syscall.SIGKILL)); err != nil {
544
+		if err := clnt.Signal(containerID, int(unix.SIGKILL)); err != nil {
545 545
 			logrus.Errorf("libcontainerd: error sending sigkill to %v: %v", containerID, err)
546 546
 		}
547 547
 		select {
... ...
@@ -9,7 +9,6 @@ import (
9 9
 	"os"
10 10
 	"path/filepath"
11 11
 	"sync"
12
-	"syscall"
13 12
 	"time"
14 13
 
15 14
 	"github.com/Sirupsen/logrus"
... ...
@@ -18,6 +17,7 @@ import (
18 18
 	specs "github.com/opencontainers/runtime-spec/specs-go"
19 19
 	"github.com/tonistiigi/fifo"
20 20
 	"golang.org/x/net/context"
21
+	"golang.org/x/sys/unix"
21 22
 )
22 23
 
23 24
 type container struct {
... ...
@@ -69,7 +69,7 @@ func (ctr *container) clean() error {
69 69
 // Caller needs to lock container ID before calling this method.
70 70
 func (ctr *container) cleanProcess(id string) {
71 71
 	if p, ok := ctr.processes[id]; ok {
72
-		for _, i := range []int{syscall.Stdin, syscall.Stdout, syscall.Stderr} {
72
+		for _, i := range []int{unix.Stdin, unix.Stdout, unix.Stderr} {
73 73
 			if err := os.Remove(p.fifo(i)); err != nil && !os.IsNotExist(err) {
74 74
 				logrus.Warnf("libcontainerd: failed to remove %v for process %v: %v", p.fifo(i), id, err)
75 75
 			}
... ...
@@ -137,9 +137,9 @@ func (ctr *container) start(spec *specs.Spec, checkpoint, checkpointDir string,
137 137
 	r := &containerd.CreateContainerRequest{
138 138
 		Id:            ctr.containerID,
139 139
 		BundlePath:    ctr.dir,
140
-		Stdin:         ctr.fifo(syscall.Stdin),
141
-		Stdout:        ctr.fifo(syscall.Stdout),
142
-		Stderr:        ctr.fifo(syscall.Stderr),
140
+		Stdin:         ctr.fifo(unix.Stdin),
141
+		Stdout:        ctr.fifo(unix.Stdout),
142
+		Stderr:        ctr.fifo(unix.Stderr),
143 143
 		Checkpoint:    checkpoint,
144 144
 		CheckpointDir: checkpointDir,
145 145
 		// check to see if we are running in ramdisk to disable pivot root
... ...
@@ -233,8 +233,8 @@ func (ctr *container) handleEvent(e *containerd.Event) error {
233 233
 // that may be blocked on the writer side.
234 234
 func (ctr *container) discardFifos() {
235 235
 	ctx, _ := context.WithTimeout(context.Background(), 3*time.Second)
236
-	for _, i := range []int{syscall.Stdout, syscall.Stderr} {
237
-		f, err := fifo.OpenFifo(ctx, ctr.fifo(i), syscall.O_RDONLY|syscall.O_NONBLOCK, 0)
236
+	for _, i := range []int{unix.Stdout, unix.Stderr} {
237
+		f, err := fifo.OpenFifo(ctx, ctr.fifo(i), unix.O_RDONLY|unix.O_NONBLOCK, 0)
238 238
 		if err != nil {
239 239
 			logrus.Warnf("error opening fifo %v for discarding: %+v", f, err)
240 240
 			continue
... ...
@@ -6,13 +6,13 @@ import (
6 6
 	"io"
7 7
 	"io/ioutil"
8 8
 	"strings"
9
-	"syscall"
10 9
 	"time"
11 10
 
12 11
 	"github.com/Microsoft/hcsshim"
13 12
 	"github.com/Sirupsen/logrus"
14 13
 	"github.com/docker/docker/pkg/system"
15 14
 	"github.com/opencontainers/runtime-spec/specs-go"
15
+	"golang.org/x/sys/windows"
16 16
 )
17 17
 
18 18
 type container struct {
... ...
@@ -185,7 +185,7 @@ func (ctr *container) waitProcessExitCode(process *process) int {
185 185
 	// Block indefinitely for the process to exit.
186 186
 	err := process.hcsProcess.Wait()
187 187
 	if err != nil {
188
-		if herr, ok := err.(*hcsshim.ProcessError); ok && herr.Err != syscall.ERROR_BROKEN_PIPE {
188
+		if herr, ok := err.(*hcsshim.ProcessError); ok && herr.Err != windows.ERROR_BROKEN_PIPE {
189 189
 			logrus.Warnf("libcontainerd: Wait() failed (container may have been killed): %s", err)
190 190
 		}
191 191
 		// Fall through here, do not return. This ensures we attempt to continue the
... ...
@@ -195,7 +195,7 @@ func (ctr *container) waitProcessExitCode(process *process) int {
195 195
 
196 196
 	exitCode, err := process.hcsProcess.ExitCode()
197 197
 	if err != nil {
198
-		if herr, ok := err.(*hcsshim.ProcessError); ok && herr.Err != syscall.ERROR_BROKEN_PIPE {
198
+		if herr, ok := err.(*hcsshim.ProcessError); ok && herr.Err != windows.ERROR_BROKEN_PIPE {
199 199
 			logrus.Warnf("libcontainerd: unable to get exit code from container %s", ctr.containerID)
200 200
 		}
201 201
 		// Since we got an error retrieving the exit code, make sure that the code we return
... ...
@@ -15,7 +15,6 @@ import (
15 15
 	"strconv"
16 16
 	"strings"
17 17
 	"sync"
18
-	"syscall"
19 18
 	"time"
20 19
 
21 20
 	"github.com/Sirupsen/logrus"
... ...
@@ -25,6 +24,7 @@ import (
25 25
 	"github.com/golang/protobuf/ptypes"
26 26
 	"github.com/golang/protobuf/ptypes/timestamp"
27 27
 	"golang.org/x/net/context"
28
+	"golang.org/x/sys/unix"
28 29
 	"google.golang.org/grpc"
29 30
 	"google.golang.org/grpc/grpclog"
30 31
 	"google.golang.org/grpc/health/grpc_health_v1"
... ...
@@ -185,7 +185,7 @@ func (r *remote) Cleanup() {
185 185
 	r.closedManually = true
186 186
 	r.rpcConn.Close()
187 187
 	// Ask the daemon to quit
188
-	syscall.Kill(r.daemonPid, syscall.SIGTERM)
188
+	unix.Kill(r.daemonPid, unix.SIGTERM)
189 189
 
190 190
 	// Wait up to 15secs for it to stop
191 191
 	for i := time.Duration(0); i < containerdShutdownTimeout; i += time.Second {
... ...
@@ -197,7 +197,7 @@ func (r *remote) Cleanup() {
197 197
 
198 198
 	if system.IsProcessAlive(r.daemonPid) {
199 199
 		logrus.Warnf("libcontainerd: containerd (%d) didn't stop within 15 secs, killing it\n", r.daemonPid)
200
-		syscall.Kill(r.daemonPid, syscall.SIGKILL)
200
+		unix.Kill(r.daemonPid, unix.SIGKILL)
201 201
 	}
202 202
 
203 203
 	// cleanup some files
... ...
@@ -224,7 +224,7 @@ func (r *remote) Client(b Backend) (Client, error) {
224 224
 }
225 225
 
226 226
 func (r *remote) updateEventTimestamp(t time.Time) {
227
-	f, err := os.OpenFile(r.eventTsPath, syscall.O_CREAT|syscall.O_WRONLY|syscall.O_TRUNC, 0600)
227
+	f, err := os.OpenFile(r.eventTsPath, unix.O_CREAT|unix.O_WRONLY|unix.O_TRUNC, 0600)
228 228
 	if err != nil {
229 229
 		logrus.Warnf("libcontainerd: failed to open event timestamp file: %v", err)
230 230
 		return
... ...
@@ -5,6 +5,7 @@ import (
5 5
 
6 6
 	containerd "github.com/containerd/containerd/api/grpc/types"
7 7
 	"github.com/opencontainers/runtime-spec/specs-go"
8
+	"golang.org/x/sys/unix"
8 9
 )
9 10
 
10 11
 func getRootIDs(s specs.Spec) (int, int, error) {
... ...
@@ -57,6 +58,6 @@ func convertRlimits(sr []specs.LinuxRlimit) (cr []*containerd.Rlimit) {
57 57
 func setSysProcAttr(sid bool) *syscall.SysProcAttr {
58 58
 	return &syscall.SysProcAttr{
59 59
 		Setsid:    sid,
60
-		Pdeathsig: syscall.SIGKILL,
60
+		Pdeathsig: unix.SIGKILL,
61 61
 	}
62 62
 }
... ...
@@ -5,9 +5,9 @@ import (
5 5
 	"os"
6 6
 	"path/filepath"
7 7
 	"strings"
8
-	"syscall"
9 8
 
10 9
 	"github.com/docker/docker/pkg/system"
10
+	"golang.org/x/sys/unix"
11 11
 )
12 12
 
13 13
 func getWhiteoutConverter(format WhiteoutFormat) tarWhiteoutConverter {
... ...
@@ -67,7 +67,7 @@ func (overlayWhiteoutConverter) ConvertRead(hdr *tar.Header, path string) (bool,
67 67
 
68 68
 	// if a directory is marked as opaque by the AUFS special file, we need to translate that to overlay
69 69
 	if base == WhiteoutOpaqueDir {
70
-		err := syscall.Setxattr(dir, "trusted.overlay.opaque", []byte{'y'}, 0)
70
+		err := unix.Setxattr(dir, "trusted.overlay.opaque", []byte{'y'}, 0)
71 71
 		// don't write the file itself
72 72
 		return false, err
73 73
 	}
... ...
@@ -77,7 +77,7 @@ func (overlayWhiteoutConverter) ConvertRead(hdr *tar.Header, path string) (bool,
77 77
 		originalBase := base[len(WhiteoutPrefix):]
78 78
 		originalPath := filepath.Join(dir, originalBase)
79 79
 
80
-		if err := syscall.Mknod(originalPath, syscall.S_IFCHR, 0); err != nil {
80
+		if err := unix.Mknod(originalPath, unix.S_IFCHR, 0); err != nil {
81 81
 			return false, err
82 82
 		}
83 83
 		if err := os.Chown(originalPath, hdr.Uid, hdr.Gid); err != nil {
... ...
@@ -8,6 +8,7 @@ import (
8 8
 	"testing"
9 9
 
10 10
 	"github.com/docker/docker/pkg/system"
11
+	"golang.org/x/sys/unix"
11 12
 )
12 13
 
13 14
 // setupOverlayTestDir creates files in a directory with overlay whiteouts
... ...
@@ -51,7 +52,7 @@ func setupOverlayTestDir(t *testing.T, src string) {
51 51
 		t.Fatal(err)
52 52
 	}
53 53
 
54
-	if err := system.Mknod(filepath.Join(src, "d3", "f1"), syscall.S_IFCHR, 0); err != nil {
54
+	if err := system.Mknod(filepath.Join(src, "d3", "f1"), unix.S_IFCHR, 0); err != nil {
55 55
 		t.Fatal(err)
56 56
 	}
57 57
 }
... ...
@@ -12,6 +12,7 @@ import (
12 12
 	"github.com/docker/docker/pkg/idtools"
13 13
 	"github.com/docker/docker/pkg/system"
14 14
 	rsystem "github.com/opencontainers/runc/libcontainer/system"
15
+	"golang.org/x/sys/unix"
15 16
 )
16 17
 
17 18
 // fixVolumePathPrefix does platform specific processing to ensure that if
... ...
@@ -47,8 +48,8 @@ func setHeaderForSpecialDevice(hdr *tar.Header, name string, stat interface{}) (
47 47
 
48 48
 	if ok {
49 49
 		// Currently go does not fill in the major/minors
50
-		if s.Mode&syscall.S_IFBLK != 0 ||
51
-			s.Mode&syscall.S_IFCHR != 0 {
50
+		if s.Mode&unix.S_IFBLK != 0 ||
51
+			s.Mode&unix.S_IFCHR != 0 {
52 52
 			hdr.Devmajor = int64(major(uint64(s.Rdev)))
53 53
 			hdr.Devminor = int64(minor(uint64(s.Rdev)))
54 54
 		}
... ...
@@ -95,11 +96,11 @@ func handleTarTypeBlockCharFifo(hdr *tar.Header, path string) error {
95 95
 	mode := uint32(hdr.Mode & 07777)
96 96
 	switch hdr.Typeflag {
97 97
 	case tar.TypeBlock:
98
-		mode |= syscall.S_IFBLK
98
+		mode |= unix.S_IFBLK
99 99
 	case tar.TypeChar:
100
-		mode |= syscall.S_IFCHR
100
+		mode |= unix.S_IFCHR
101 101
 	case tar.TypeFifo:
102
-		mode |= syscall.S_IFIFO
102
+		mode |= unix.S_IFIFO
103 103
 	}
104 104
 
105 105
 	return system.Mknod(path, mode, int(system.Mkdev(hdr.Devmajor, hdr.Devminor)))
... ...
@@ -13,6 +13,7 @@ import (
13 13
 	"testing"
14 14
 
15 15
 	"github.com/docker/docker/pkg/system"
16
+	"golang.org/x/sys/unix"
16 17
 )
17 18
 
18 19
 func TestCanonicalTarNameForPath(t *testing.T) {
... ...
@@ -159,13 +160,13 @@ func TestTarWithBlockCharFifo(t *testing.T) {
159 159
 	if err := ioutil.WriteFile(filepath.Join(origin, "1"), []byte("hello world"), 0700); err != nil {
160 160
 		t.Fatal(err)
161 161
 	}
162
-	if err := system.Mknod(filepath.Join(origin, "2"), syscall.S_IFBLK, int(system.Mkdev(int64(12), int64(5)))); err != nil {
162
+	if err := system.Mknod(filepath.Join(origin, "2"), unix.S_IFBLK, int(system.Mkdev(int64(12), int64(5)))); err != nil {
163 163
 		t.Fatal(err)
164 164
 	}
165
-	if err := system.Mknod(filepath.Join(origin, "3"), syscall.S_IFCHR, int(system.Mkdev(int64(12), int64(5)))); err != nil {
165
+	if err := system.Mknod(filepath.Join(origin, "3"), unix.S_IFCHR, int(system.Mkdev(int64(12), int64(5)))); err != nil {
166 166
 		t.Fatal(err)
167 167
 	}
168
-	if err := system.Mknod(filepath.Join(origin, "4"), syscall.S_IFIFO, int(system.Mkdev(int64(12), int64(5)))); err != nil {
168
+	if err := system.Mknod(filepath.Join(origin, "4"), unix.S_IFIFO, int(system.Mkdev(int64(12), int64(5)))); err != nil {
169 169
 		t.Fatal(err)
170 170
 	}
171 171
 
... ...
@@ -10,6 +10,7 @@ import (
10 10
 	"unsafe"
11 11
 
12 12
 	"github.com/docker/docker/pkg/system"
13
+	"golang.org/x/sys/unix"
13 14
 )
14 15
 
15 16
 // walker is used to implement collectFileInfoForChanges on linux. Where this
... ...
@@ -233,7 +234,7 @@ func readdirnames(dirname string) (names []nameIno, err error) {
233 233
 		// Refill the buffer if necessary
234 234
 		if bufp >= nbuf {
235 235
 			bufp = 0
236
-			nbuf, err = syscall.ReadDirent(int(f.Fd()), buf) // getdents on linux
236
+			nbuf, err = unix.ReadDirent(int(f.Fd()), buf) // getdents on linux
237 237
 			if nbuf < 0 {
238 238
 				nbuf = 0
239 239
 			}
... ...
@@ -255,12 +256,12 @@ func readdirnames(dirname string) (names []nameIno, err error) {
255 255
 	return sl, nil
256 256
 }
257 257
 
258
-// parseDirent is a minor modification of syscall.ParseDirent (linux version)
258
+// parseDirent is a minor modification of unix.ParseDirent (linux version)
259 259
 // which returns {name,inode} pairs instead of just names.
260 260
 func parseDirent(buf []byte, names []nameIno) (consumed int, newnames []nameIno) {
261 261
 	origlen := len(buf)
262 262
 	for len(buf) > 0 {
263
-		dirent := (*syscall.Dirent)(unsafe.Pointer(&buf[0]))
263
+		dirent := (*unix.Dirent)(unsafe.Pointer(&buf[0]))
264 264
 		buf = buf[dirent.Reclen:]
265 265
 		if dirent.Ino == 0 { // File absent in directory.
266 266
 			continue
... ...
@@ -7,6 +7,7 @@ import (
7 7
 	"syscall"
8 8
 
9 9
 	"github.com/docker/docker/pkg/system"
10
+	"golang.org/x/sys/unix"
10 11
 )
11 12
 
12 13
 func statDifferent(oldStat *system.StatT, newStat *system.StatT) bool {
... ...
@@ -16,7 +17,7 @@ func statDifferent(oldStat *system.StatT, newStat *system.StatT) bool {
16 16
 		oldStat.GID() != newStat.GID() ||
17 17
 		oldStat.Rdev() != newStat.Rdev() ||
18 18
 		// Don't look at size for dirs, its not a good measure of change
19
-		(oldStat.Mode()&syscall.S_IFDIR != syscall.S_IFDIR &&
19
+		(oldStat.Mode()&unix.S_IFDIR != unix.S_IFDIR &&
20 20
 			(!sameFsTimeSpec(oldStat.Mtim(), newStat.Mtim()) || (oldStat.Size() != newStat.Size()))) {
21 21
 		return true
22 22
 	}
... ...
@@ -24,7 +25,7 @@ func statDifferent(oldStat *system.StatT, newStat *system.StatT) bool {
24 24
 }
25 25
 
26 26
 func (info *FileInfo) isDir() bool {
27
-	return info.parent == nil || info.stat.Mode()&syscall.S_IFDIR != 0
27
+	return info.parent == nil || info.stat.Mode()&unix.S_IFDIR != 0
28 28
 }
29 29
 
30 30
 func getIno(fi os.FileInfo) uint64 {
... ...
@@ -5,10 +5,10 @@ import (
5 5
 	"io/ioutil"
6 6
 	"os"
7 7
 	"path/filepath"
8
-	"syscall"
9 8
 
10 9
 	"github.com/docker/docker/pkg/mount"
11 10
 	rsystem "github.com/opencontainers/runc/libcontainer/system"
11
+	"golang.org/x/sys/unix"
12 12
 )
13 13
 
14 14
 // chroot on linux uses pivot_root instead of chroot
... ...
@@ -22,7 +22,7 @@ func chroot(path string) (err error) {
22 22
 	if rsystem.RunningInUserNS() {
23 23
 		return realChroot(path)
24 24
 	}
25
-	if err := syscall.Unshare(syscall.CLONE_NEWNS); err != nil {
25
+	if err := unix.Unshare(unix.CLONE_NEWNS); err != nil {
26 26
 		return fmt.Errorf("Error creating mount namespace before pivot: %v", err)
27 27
 	}
28 28
 
... ...
@@ -47,7 +47,7 @@ func chroot(path string) (err error) {
47 47
 	defer func() {
48 48
 		if mounted {
49 49
 			// make sure pivotDir is not mounted before we try to remove it
50
-			if errCleanup := syscall.Unmount(pivotDir, syscall.MNT_DETACH); errCleanup != nil {
50
+			if errCleanup := unix.Unmount(pivotDir, unix.MNT_DETACH); errCleanup != nil {
51 51
 				if err == nil {
52 52
 					err = errCleanup
53 53
 				}
... ...
@@ -66,7 +66,7 @@ func chroot(path string) (err error) {
66 66
 		}
67 67
 	}()
68 68
 
69
-	if err := syscall.PivotRoot(path, pivotDir); err != nil {
69
+	if err := unix.PivotRoot(path, pivotDir); err != nil {
70 70
 		// If pivot fails, fall back to the normal chroot after cleaning up temp dir
71 71
 		if err := os.Remove(pivotDir); err != nil {
72 72
 			return fmt.Errorf("Error cleaning up after failed pivot: %v", err)
... ...
@@ -79,17 +79,17 @@ func chroot(path string) (err error) {
79 79
 	// This dir contains the rootfs of the caller, which we need to remove so it is not visible during extraction
80 80
 	pivotDir = filepath.Join("/", filepath.Base(pivotDir))
81 81
 
82
-	if err := syscall.Chdir("/"); err != nil {
82
+	if err := unix.Chdir("/"); err != nil {
83 83
 		return fmt.Errorf("Error changing to new root: %v", err)
84 84
 	}
85 85
 
86 86
 	// Make the pivotDir (where the old root lives) private so it can be unmounted without propagating to the host
87
-	if err := syscall.Mount("", pivotDir, "", syscall.MS_PRIVATE|syscall.MS_REC, ""); err != nil {
87
+	if err := unix.Mount("", pivotDir, "", unix.MS_PRIVATE|unix.MS_REC, ""); err != nil {
88 88
 		return fmt.Errorf("Error making old root private after pivot: %v", err)
89 89
 	}
90 90
 
91 91
 	// Now unmount the old root so it's no longer visible from the new root
92
-	if err := syscall.Unmount(pivotDir, syscall.MNT_DETACH); err != nil {
92
+	if err := unix.Unmount(pivotDir, unix.MNT_DETACH); err != nil {
93 93
 		return fmt.Errorf("Error while unmounting old root after pivot: %v", err)
94 94
 	}
95 95
 	mounted = false
... ...
@@ -98,10 +98,10 @@ func chroot(path string) (err error) {
98 98
 }
99 99
 
100 100
 func realChroot(path string) error {
101
-	if err := syscall.Chroot(path); err != nil {
101
+	if err := unix.Chroot(path); err != nil {
102 102
 		return fmt.Errorf("Error after fallback to chroot: %v", err)
103 103
 	}
104
-	if err := syscall.Chdir("/"); err != nil {
104
+	if err := unix.Chdir("/"); err != nil {
105 105
 		return fmt.Errorf("Error changing to new root after chroot: %v", err)
106 106
 	}
107 107
 	return nil
... ...
@@ -2,11 +2,11 @@
2 2
 
3 3
 package chrootarchive
4 4
 
5
-import "syscall"
5
+import "golang.org/x/sys/unix"
6 6
 
7 7
 func chroot(path string) error {
8
-	if err := syscall.Chroot(path); err != nil {
8
+	if err := unix.Chroot(path); err != nil {
9 9
 		return err
10 10
 	}
11
-	return syscall.Chdir("/")
11
+	return unix.Chdir("/")
12 12
 }
... ...
@@ -7,10 +7,10 @@ import (
7 7
 	"fmt"
8 8
 	"os"
9 9
 	"runtime"
10
-	"syscall"
11 10
 	"unsafe"
12 11
 
13 12
 	"github.com/Sirupsen/logrus"
13
+	"golang.org/x/sys/unix"
14 14
 )
15 15
 
16 16
 // DevmapperLogger defines methods for logging with devicemapper.
... ...
@@ -449,7 +449,7 @@ func BlockDeviceDiscard(path string) error {
449 449
 
450 450
 	// Without this sometimes the remove of the device that happens after
451 451
 	// discard fails with EBUSY.
452
-	syscall.Sync()
452
+	unix.Sync()
453 453
 
454 454
 	return nil
455 455
 }
... ...
@@ -3,13 +3,14 @@
3 3
 package devicemapper
4 4
 
5 5
 import (
6
-	"syscall"
7 6
 	"unsafe"
7
+
8
+	"golang.org/x/sys/unix"
8 9
 )
9 10
 
10 11
 func ioctlBlkGetSize64(fd uintptr) (int64, error) {
11 12
 	var size int64
12
-	if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, BlkGetSize64, uintptr(unsafe.Pointer(&size))); err != 0 {
13
+	if _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, BlkGetSize64, uintptr(unsafe.Pointer(&size))); err != 0 {
13 14
 		return 0, err
14 15
 	}
15 16
 	return size, nil
... ...
@@ -20,7 +21,7 @@ func ioctlBlkDiscard(fd uintptr, offset, length uint64) error {
20 20
 	r[0] = offset
21 21
 	r[1] = length
22 22
 
23
-	if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, BlkDiscard, uintptr(unsafe.Pointer(&r[0]))); err != 0 {
23
+	if _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, BlkDiscard, uintptr(unsafe.Pointer(&r[0]))); err != 0 {
24 24
 		return err
25 25
 	}
26 26
 	return nil
... ...
@@ -6,8 +6,9 @@ import (
6 6
 	"fmt"
7 7
 	"io/ioutil"
8 8
 	"os"
9
-	"syscall"
10 9
 	"unsafe"
10
+
11
+	"golang.org/x/sys/unix"
11 12
 )
12 13
 
13 14
 func locateDummyIfEmpty(path string) (string, error) {
... ...
@@ -40,9 +41,9 @@ func SupportsDType(path string) (bool, error) {
40 40
 
41 41
 	visited := 0
42 42
 	supportsDType := true
43
-	fn := func(ent *syscall.Dirent) bool {
43
+	fn := func(ent *unix.Dirent) bool {
44 44
 		visited++
45
-		if ent.Type == syscall.DT_UNKNOWN {
45
+		if ent.Type == unix.DT_UNKNOWN {
46 46
 			supportsDType = false
47 47
 			// stop iteration
48 48
 			return true
... ...
@@ -59,7 +60,7 @@ func SupportsDType(path string) (bool, error) {
59 59
 	return supportsDType, nil
60 60
 }
61 61
 
62
-func iterateReadDir(path string, fn func(*syscall.Dirent) bool) error {
62
+func iterateReadDir(path string, fn func(*unix.Dirent) bool) error {
63 63
 	d, err := os.Open(path)
64 64
 	if err != nil {
65 65
 		return err
... ...
@@ -68,7 +69,7 @@ func iterateReadDir(path string, fn func(*syscall.Dirent) bool) error {
68 68
 	fd := int(d.Fd())
69 69
 	buf := make([]byte, 4096)
70 70
 	for {
71
-		nbytes, err := syscall.ReadDirent(fd, buf)
71
+		nbytes, err := unix.ReadDirent(fd, buf)
72 72
 		if err != nil {
73 73
 			return err
74 74
 		}
... ...
@@ -76,7 +77,7 @@ func iterateReadDir(path string, fn func(*syscall.Dirent) bool) error {
76 76
 			break
77 77
 		}
78 78
 		for off := 0; off < nbytes; {
79
-			ent := (*syscall.Dirent)(unsafe.Pointer(&buf[off]))
79
+			ent := (*unix.Dirent)(unsafe.Pointer(&buf[off]))
80 80
 			if stop := fn(ent); stop {
81 81
 				return nil
82 82
 			}
... ...
@@ -6,8 +6,9 @@ import (
6 6
 	"io/ioutil"
7 7
 	"os"
8 8
 	"os/exec"
9
-	"syscall"
10 9
 	"testing"
10
+
11
+	"golang.org/x/sys/unix"
11 12
 )
12 13
 
13 14
 func testSupportsDType(t *testing.T, expected bool, mkfsCommand string, mkfsArg ...string) {
... ...
@@ -53,7 +54,7 @@ func testSupportsDType(t *testing.T, expected bool, mkfsCommand string, mkfsArg
53 53
 	}
54 54
 
55 55
 	// loopback-mount the image.
56
-	// for ease of setting up loopback device, we use os/exec rather than syscall.Mount
56
+	// for ease of setting up loopback device, we use os/exec rather than unix.Mount
57 57
 	out, err = exec.Command("mount", "-o", "loop", imageFileName, mountpoint).CombinedOutput()
58 58
 	if len(out) > 0 {
59 59
 		t.Log(string(out))
... ...
@@ -62,7 +63,7 @@ func testSupportsDType(t *testing.T, expected bool, mkfsCommand string, mkfsArg
62 62
 		t.Skip("skipping the test because mount failed")
63 63
 	}
64 64
 	defer func() {
65
-		if err := syscall.Unmount(mountpoint, 0); err != nil {
65
+		if err := unix.Unmount(mountpoint, 0); err != nil {
66 66
 			t.Fatal(err)
67 67
 		}
68 68
 	}()
... ...
@@ -6,9 +6,9 @@ import (
6 6
 	"errors"
7 7
 	"fmt"
8 8
 	"os"
9
-	"syscall"
10 9
 
11 10
 	"github.com/Sirupsen/logrus"
11
+	"golang.org/x/sys/unix"
12 12
 )
13 13
 
14 14
 // Loopback related errors
... ...
@@ -69,7 +69,7 @@ func openNextAvailableLoopback(index int, sparseFile *os.File) (loopFile *os.Fil
69 69
 			loopFile.Close()
70 70
 
71 71
 			// If the error is EBUSY, then try the next loopback
72
-			if err != syscall.EBUSY {
72
+			if err != unix.EBUSY {
73 73
 				logrus.Errorf("Cannot set up loopback device %s: %s", target, err)
74 74
 				return nil, ErrAttachLoopbackDevice
75 75
 			}
... ...
@@ -3,12 +3,13 @@
3 3
 package loopback
4 4
 
5 5
 import (
6
-	"syscall"
7 6
 	"unsafe"
7
+
8
+	"golang.org/x/sys/unix"
8 9
 )
9 10
 
10 11
 func ioctlLoopCtlGetFree(fd uintptr) (int, error) {
11
-	index, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, LoopCtlGetFree, 0)
12
+	index, _, err := unix.Syscall(unix.SYS_IOCTL, fd, LoopCtlGetFree, 0)
12 13
 	if err != 0 {
13 14
 		return 0, err
14 15
 	}
... ...
@@ -16,21 +17,21 @@ func ioctlLoopCtlGetFree(fd uintptr) (int, error) {
16 16
 }
17 17
 
18 18
 func ioctlLoopSetFd(loopFd, sparseFd uintptr) error {
19
-	if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, loopFd, LoopSetFd, sparseFd); err != 0 {
19
+	if _, _, err := unix.Syscall(unix.SYS_IOCTL, loopFd, LoopSetFd, sparseFd); err != 0 {
20 20
 		return err
21 21
 	}
22 22
 	return nil
23 23
 }
24 24
 
25 25
 func ioctlLoopSetStatus64(loopFd uintptr, loopInfo *loopInfo64) error {
26
-	if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, loopFd, LoopSetStatus64, uintptr(unsafe.Pointer(loopInfo))); err != 0 {
26
+	if _, _, err := unix.Syscall(unix.SYS_IOCTL, loopFd, LoopSetStatus64, uintptr(unsafe.Pointer(loopInfo))); err != 0 {
27 27
 		return err
28 28
 	}
29 29
 	return nil
30 30
 }
31 31
 
32 32
 func ioctlLoopClrFd(loopFd uintptr) error {
33
-	if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, loopFd, LoopClrFd, 0); err != 0 {
33
+	if _, _, err := unix.Syscall(unix.SYS_IOCTL, loopFd, LoopClrFd, 0); err != 0 {
34 34
 		return err
35 35
 	}
36 36
 	return nil
... ...
@@ -39,14 +40,14 @@ func ioctlLoopClrFd(loopFd uintptr) error {
39 39
 func ioctlLoopGetStatus64(loopFd uintptr) (*loopInfo64, error) {
40 40
 	loopInfo := &loopInfo64{}
41 41
 
42
-	if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, loopFd, LoopGetStatus64, uintptr(unsafe.Pointer(loopInfo))); err != 0 {
42
+	if _, _, err := unix.Syscall(unix.SYS_IOCTL, loopFd, LoopGetStatus64, uintptr(unsafe.Pointer(loopInfo))); err != 0 {
43 43
 		return nil, err
44 44
 	}
45 45
 	return loopInfo, nil
46 46
 }
47 47
 
48 48
 func ioctlLoopSetCapacity(loopFd uintptr, value int) error {
49
-	if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, loopFd, LoopSetCapacity, uintptr(value)); err != 0 {
49
+	if _, _, err := unix.Syscall(unix.SYS_IOCTL, loopFd, LoopSetCapacity, uintptr(value)); err != 0 {
50 50
 		return err
51 51
 	}
52 52
 	return nil
... ...
@@ -1,87 +1,87 @@
1 1
 package mount
2 2
 
3 3
 import (
4
-	"syscall"
4
+	"golang.org/x/sys/unix"
5 5
 )
6 6
 
7 7
 const (
8 8
 	// RDONLY will mount the file system read-only.
9
-	RDONLY = syscall.MS_RDONLY
9
+	RDONLY = unix.MS_RDONLY
10 10
 
11 11
 	// NOSUID will not allow set-user-identifier or set-group-identifier bits to
12 12
 	// take effect.
13
-	NOSUID = syscall.MS_NOSUID
13
+	NOSUID = unix.MS_NOSUID
14 14
 
15 15
 	// NODEV will not interpret character or block special devices on the file
16 16
 	// system.
17
-	NODEV = syscall.MS_NODEV
17
+	NODEV = unix.MS_NODEV
18 18
 
19 19
 	// NOEXEC will not allow execution of any binaries on the mounted file system.
20
-	NOEXEC = syscall.MS_NOEXEC
20
+	NOEXEC = unix.MS_NOEXEC
21 21
 
22 22
 	// SYNCHRONOUS will allow I/O to the file system to be done synchronously.
23
-	SYNCHRONOUS = syscall.MS_SYNCHRONOUS
23
+	SYNCHRONOUS = unix.MS_SYNCHRONOUS
24 24
 
25 25
 	// DIRSYNC will force all directory updates within the file system to be done
26 26
 	// synchronously. This affects the following system calls: create, link,
27 27
 	// unlink, symlink, mkdir, rmdir, mknod and rename.
28
-	DIRSYNC = syscall.MS_DIRSYNC
28
+	DIRSYNC = unix.MS_DIRSYNC
29 29
 
30 30
 	// REMOUNT will attempt to remount an already-mounted file system. This is
31 31
 	// commonly used to change the mount flags for a file system, especially to
32 32
 	// make a readonly file system writeable. It does not change device or mount
33 33
 	// point.
34
-	REMOUNT = syscall.MS_REMOUNT
34
+	REMOUNT = unix.MS_REMOUNT
35 35
 
36 36
 	// MANDLOCK will force mandatory locks on a filesystem.
37
-	MANDLOCK = syscall.MS_MANDLOCK
37
+	MANDLOCK = unix.MS_MANDLOCK
38 38
 
39 39
 	// NOATIME will not update the file access time when reading from a file.
40
-	NOATIME = syscall.MS_NOATIME
40
+	NOATIME = unix.MS_NOATIME
41 41
 
42 42
 	// NODIRATIME will not update the directory access time.
43
-	NODIRATIME = syscall.MS_NODIRATIME
43
+	NODIRATIME = unix.MS_NODIRATIME
44 44
 
45 45
 	// BIND remounts a subtree somewhere else.
46
-	BIND = syscall.MS_BIND
46
+	BIND = unix.MS_BIND
47 47
 
48 48
 	// RBIND remounts a subtree and all possible submounts somewhere else.
49
-	RBIND = syscall.MS_BIND | syscall.MS_REC
49
+	RBIND = unix.MS_BIND | unix.MS_REC
50 50
 
51 51
 	// UNBINDABLE creates a mount which cannot be cloned through a bind operation.
52
-	UNBINDABLE = syscall.MS_UNBINDABLE
52
+	UNBINDABLE = unix.MS_UNBINDABLE
53 53
 
54 54
 	// RUNBINDABLE marks the entire mount tree as UNBINDABLE.
55
-	RUNBINDABLE = syscall.MS_UNBINDABLE | syscall.MS_REC
55
+	RUNBINDABLE = unix.MS_UNBINDABLE | unix.MS_REC
56 56
 
57 57
 	// PRIVATE creates a mount which carries no propagation abilities.
58
-	PRIVATE = syscall.MS_PRIVATE
58
+	PRIVATE = unix.MS_PRIVATE
59 59
 
60 60
 	// RPRIVATE marks the entire mount tree as PRIVATE.
61
-	RPRIVATE = syscall.MS_PRIVATE | syscall.MS_REC
61
+	RPRIVATE = unix.MS_PRIVATE | unix.MS_REC
62 62
 
63 63
 	// SLAVE creates a mount which receives propagation from its master, but not
64 64
 	// vice versa.
65
-	SLAVE = syscall.MS_SLAVE
65
+	SLAVE = unix.MS_SLAVE
66 66
 
67 67
 	// RSLAVE marks the entire mount tree as SLAVE.
68
-	RSLAVE = syscall.MS_SLAVE | syscall.MS_REC
68
+	RSLAVE = unix.MS_SLAVE | unix.MS_REC
69 69
 
70 70
 	// SHARED creates a mount which provides the ability to create mirrors of
71 71
 	// that mount such that mounts and unmounts within any of the mirrors
72 72
 	// propagate to the other mirrors.
73
-	SHARED = syscall.MS_SHARED
73
+	SHARED = unix.MS_SHARED
74 74
 
75 75
 	// RSHARED marks the entire mount tree as SHARED.
76
-	RSHARED = syscall.MS_SHARED | syscall.MS_REC
76
+	RSHARED = unix.MS_SHARED | unix.MS_REC
77 77
 
78 78
 	// RELATIME updates inode access times relative to modify or change time.
79
-	RELATIME = syscall.MS_RELATIME
79
+	RELATIME = unix.MS_RELATIME
80 80
 
81 81
 	// STRICTATIME allows to explicitly request full atime updates.  This makes
82 82
 	// it possible for the kernel to default to relatime or noatime but still
83 83
 	// allow userspace to override it.
84
-	STRICTATIME = syscall.MS_STRICTATIME
84
+	STRICTATIME = unix.MS_STRICTATIME
85 85
 
86
-	mntDetach = syscall.MNT_DETACH
86
+	mntDetach = unix.MNT_DETACH
87 87
 )
... ...
@@ -13,8 +13,9 @@ import "C"
13 13
 import (
14 14
 	"fmt"
15 15
 	"strings"
16
-	"syscall"
17 16
 	"unsafe"
17
+
18
+	"golang.org/x/sys/unix"
18 19
 )
19 20
 
20 21
 func allocateIOVecs(options []string) []C.struct_iovec {
... ...
@@ -55,5 +56,5 @@ func mount(device, target, mType string, flag uintptr, data string) error {
55 55
 }
56 56
 
57 57
 func unmount(target string, flag int) error {
58
-	return syscall.Unmount(target, flag)
58
+	return unix.Unmount(target, flag)
59 59
 }
... ...
@@ -1,18 +1,18 @@
1 1
 package mount
2 2
 
3 3
 import (
4
-	"syscall"
4
+	"golang.org/x/sys/unix"
5 5
 )
6 6
 
7 7
 const (
8 8
 	// ptypes is the set propagation types.
9
-	ptypes = syscall.MS_SHARED | syscall.MS_PRIVATE | syscall.MS_SLAVE | syscall.MS_UNBINDABLE
9
+	ptypes = unix.MS_SHARED | unix.MS_PRIVATE | unix.MS_SLAVE | unix.MS_UNBINDABLE
10 10
 
11 11
 	// pflags is the full set valid flags for a change propagation call.
12
-	pflags = ptypes | syscall.MS_REC | syscall.MS_SILENT
12
+	pflags = ptypes | unix.MS_REC | unix.MS_SILENT
13 13
 
14 14
 	// broflags is the combination of bind and read only
15
-	broflags = syscall.MS_BIND | syscall.MS_RDONLY
15
+	broflags = unix.MS_BIND | unix.MS_RDONLY
16 16
 )
17 17
 
18 18
 // isremount returns true if either device name or flags identify a remount request, false otherwise.
... ...
@@ -20,7 +20,7 @@ func isremount(device string, flags uintptr) bool {
20 20
 	switch {
21 21
 	// We treat device "" and "none" as a remount request to provide compatibility with
22 22
 	// requests that don't explicitly set MS_REMOUNT such as those manipulating bind mounts.
23
-	case flags&syscall.MS_REMOUNT != 0, device == "", device == "none":
23
+	case flags&unix.MS_REMOUNT != 0, device == "", device == "none":
24 24
 		return true
25 25
 	default:
26 26
 		return false
... ...
@@ -31,26 +31,26 @@ func mount(device, target, mType string, flags uintptr, data string) error {
31 31
 	oflags := flags &^ ptypes
32 32
 	if !isremount(device, flags) {
33 33
 		// Initial call applying all non-propagation flags.
34
-		if err := syscall.Mount(device, target, mType, oflags, data); err != nil {
34
+		if err := unix.Mount(device, target, mType, oflags, data); err != nil {
35 35
 			return err
36 36
 		}
37 37
 	}
38 38
 
39 39
 	if flags&ptypes != 0 {
40 40
 		// Change the propagation type.
41
-		if err := syscall.Mount("", target, "", flags&pflags, ""); err != nil {
41
+		if err := unix.Mount("", target, "", flags&pflags, ""); err != nil {
42 42
 			return err
43 43
 		}
44 44
 	}
45 45
 
46 46
 	if oflags&broflags == broflags {
47 47
 		// Remount the bind to apply read only.
48
-		return syscall.Mount("", target, "", oflags|syscall.MS_REMOUNT, "")
48
+		return unix.Mount("", target, "", oflags|unix.MS_REMOUNT, "")
49 49
 	}
50 50
 
51 51
 	return nil
52 52
 }
53 53
 
54 54
 func unmount(target string, flag int) error {
55
-	return syscall.Unmount(target, flag)
55
+	return unix.Unmount(target, flag)
56 56
 }
... ...
@@ -5,8 +5,9 @@ package mount
5 5
 import (
6 6
 	"os"
7 7
 	"path"
8
-	"syscall"
9 8
 	"testing"
9
+
10
+	"golang.org/x/sys/unix"
10 11
 )
11 12
 
12 13
 // nothing is propagated in or out
... ...
@@ -309,7 +310,7 @@ func TestSubtreeUnbindable(t *testing.T) {
309 309
 	}()
310 310
 
311 311
 	// then attempt to mount it to target. It should fail
312
-	if err := Mount(sourceDir, targetDir, "none", "bind,rw"); err != nil && err != syscall.EINVAL {
312
+	if err := Mount(sourceDir, targetDir, "none", "bind,rw"); err != nil && err != unix.EINVAL {
313 313
 		t.Fatal(err)
314 314
 	} else if err == nil {
315 315
 		t.Fatalf("%q should not have been bindable", sourceDir)
... ...
@@ -4,8 +4,9 @@ package kernel
4 4
 
5 5
 import (
6 6
 	"fmt"
7
-	"syscall"
8 7
 	"unsafe"
8
+
9
+	"golang.org/x/sys/windows"
9 10
 )
10 11
 
11 12
 // VersionInfo holds information about the kernel.
... ...
@@ -24,28 +25,28 @@ func (k *VersionInfo) String() string {
24 24
 func GetKernelVersion() (*VersionInfo, error) {
25 25
 
26 26
 	var (
27
-		h         syscall.Handle
27
+		h         windows.Handle
28 28
 		dwVersion uint32
29 29
 		err       error
30 30
 	)
31 31
 
32 32
 	KVI := &VersionInfo{"Unknown", 0, 0, 0}
33 33
 
34
-	if err = syscall.RegOpenKeyEx(syscall.HKEY_LOCAL_MACHINE,
35
-		syscall.StringToUTF16Ptr(`SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\`),
34
+	if err = windows.RegOpenKeyEx(windows.HKEY_LOCAL_MACHINE,
35
+		windows.StringToUTF16Ptr(`SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\`),
36 36
 		0,
37
-		syscall.KEY_READ,
37
+		windows.KEY_READ,
38 38
 		&h); err != nil {
39 39
 		return KVI, err
40 40
 	}
41
-	defer syscall.RegCloseKey(h)
41
+	defer windows.RegCloseKey(h)
42 42
 
43 43
 	var buf [1 << 10]uint16
44 44
 	var typ uint32
45 45
 	n := uint32(len(buf) * 2) // api expects array of bytes, not uint16
46 46
 
47
-	if err = syscall.RegQueryValueEx(h,
48
-		syscall.StringToUTF16Ptr("BuildLabEx"),
47
+	if err = windows.RegQueryValueEx(h,
48
+		windows.StringToUTF16Ptr("BuildLabEx"),
49 49
 		nil,
50 50
 		&typ,
51 51
 		(*byte)(unsafe.Pointer(&buf[0])),
... ...
@@ -53,11 +54,11 @@ func GetKernelVersion() (*VersionInfo, error) {
53 53
 		return KVI, err
54 54
 	}
55 55
 
56
-	KVI.kvi = syscall.UTF16ToString(buf[:])
56
+	KVI.kvi = windows.UTF16ToString(buf[:])
57 57
 
58 58
 	// Important - docker.exe MUST be manifested for this API to return
59 59
 	// the correct information.
60
-	if dwVersion, err = syscall.GetVersion(); err != nil {
60
+	if dwVersion, err = windows.GetVersion(); err != nil {
61 61
 		return KVI, err
62 62
 	}
63 63
 
... ...
@@ -1,18 +1,16 @@
1 1
 package kernel
2 2
 
3
-import (
4
-	"syscall"
5
-)
3
+import "golang.org/x/sys/unix"
6 4
 
7 5
 // Utsname represents the system name structure.
8
-// It is passthrough for syscall.Utsname in order to make it portable with
6
+// It is passthrough for unix.Utsname in order to make it portable with
9 7
 // other platforms where it is not available.
10
-type Utsname syscall.Utsname
8
+type Utsname unix.Utsname
11 9
 
12
-func uname() (*syscall.Utsname, error) {
13
-	uts := &syscall.Utsname{}
10
+func uname() (*unix.Utsname, error) {
11
+	uts := &unix.Utsname{}
14 12
 
15
-	if err := syscall.Uname(uts); err != nil {
13
+	if err := unix.Uname(uts); err != nil {
16 14
 		return nil, err
17 15
 	}
18 16
 	return uts, nil
... ...
@@ -1,8 +1,9 @@
1 1
 package operatingsystem
2 2
 
3 3
 import (
4
-	"syscall"
5 4
 	"unsafe"
5
+
6
+	"golang.org/x/sys/windows"
6 7
 )
7 8
 
8 9
 // See https://code.google.com/p/go/source/browse/src/pkg/mime/type_windows.go?r=d14520ac25bf6940785aabb71f5be453a286f58c
... ...
@@ -11,33 +12,33 @@ import (
11 11
 // GetOperatingSystem gets the name of the current operating system.
12 12
 func GetOperatingSystem() (string, error) {
13 13
 
14
-	var h syscall.Handle
14
+	var h windows.Handle
15 15
 
16 16
 	// Default return value
17 17
 	ret := "Unknown Operating System"
18 18
 
19
-	if err := syscall.RegOpenKeyEx(syscall.HKEY_LOCAL_MACHINE,
20
-		syscall.StringToUTF16Ptr(`SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\`),
19
+	if err := windows.RegOpenKeyEx(windows.HKEY_LOCAL_MACHINE,
20
+		windows.StringToUTF16Ptr(`SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\`),
21 21
 		0,
22
-		syscall.KEY_READ,
22
+		windows.KEY_READ,
23 23
 		&h); err != nil {
24 24
 		return ret, err
25 25
 	}
26
-	defer syscall.RegCloseKey(h)
26
+	defer windows.RegCloseKey(h)
27 27
 
28 28
 	var buf [1 << 10]uint16
29 29
 	var typ uint32
30 30
 	n := uint32(len(buf) * 2) // api expects array of bytes, not uint16
31 31
 
32
-	if err := syscall.RegQueryValueEx(h,
33
-		syscall.StringToUTF16Ptr("ProductName"),
32
+	if err := windows.RegQueryValueEx(h,
33
+		windows.StringToUTF16Ptr("ProductName"),
34 34
 		nil,
35 35
 		&typ,
36 36
 		(*byte)(unsafe.Pointer(&buf[0])),
37 37
 		&n); err != nil {
38 38
 		return ret, err
39 39
 	}
40
-	ret = syscall.UTF16ToString(buf[:])
40
+	ret = windows.UTF16ToString(buf[:])
41 41
 
42 42
 	return ret, nil
43 43
 }
... ...
@@ -3,12 +3,12 @@
3 3
 package pidfile
4 4
 
5 5
 import (
6
-	"syscall"
6
+	"golang.org/x/sys/unix"
7 7
 )
8 8
 
9 9
 func processExists(pid int) bool {
10 10
 	// OS X does not have a proc filesystem.
11 11
 	// Use kill -0 pid to judge if the process exists.
12
-	err := syscall.Kill(pid, 0)
12
+	err := unix.Kill(pid, 0)
13 13
 	return err == nil
14 14
 }
... ...
@@ -1,6 +1,8 @@
1 1
 package pidfile
2 2
 
3
-import "syscall"
3
+import (
4
+	"golang.org/x/sys/windows"
5
+)
4 6
 
5 7
 const (
6 8
 	processQueryLimitedInformation = 0x1000
... ...
@@ -9,13 +11,13 @@ const (
9 9
 )
10 10
 
11 11
 func processExists(pid int) bool {
12
-	h, err := syscall.OpenProcess(processQueryLimitedInformation, false, uint32(pid))
12
+	h, err := windows.OpenProcess(processQueryLimitedInformation, false, uint32(pid))
13 13
 	if err != nil {
14 14
 		return false
15 15
 	}
16 16
 	var c uint32
17
-	err = syscall.GetExitCodeProcess(h, &c)
18
-	syscall.Close(h)
17
+	err = windows.GetExitCodeProcess(h, &c)
18
+	windows.Close(h)
19 19
 	if err != nil {
20 20
 		return c == stillActive
21 21
 	}
... ...
@@ -3,13 +3,13 @@
3 3
 package platform
4 4
 
5 5
 import (
6
-	"syscall"
6
+	"golang.org/x/sys/unix"
7 7
 )
8 8
 
9 9
 // runtimeArchitecture gets the name of the current architecture (x86, x86_64, …)
10 10
 func runtimeArchitecture() (string, error) {
11
-	utsname := &syscall.Utsname{}
12
-	if err := syscall.Uname(utsname); err != nil {
11
+	utsname := &unix.Utsname{}
12
+	if err := unix.Uname(utsname); err != nil {
13 13
 		return "", err
14 14
 	}
15 15
 	return charsToString(utsname.Machine), nil
... ...
@@ -1,5 +1,5 @@
1
-// +build linux,386 linux,amd64 linux,arm64
2
-// see golang's sources src/syscall/ztypes_linux_*.go that use int8
1
+// +build linux,386 linux,amd64 linux,arm64 s390x
2
+// see golang's sources golang.org/x/sys/unix/ztypes_linux_*.go that use int8
3 3
 
4 4
 package platform
5 5
 
... ...
@@ -1,4 +1,4 @@
1
-// +build linux,386 linux,amd64 linux,arm64
1
+// +build linux,386 linux,amd64 linux,arm64 s390x
2 2
 
3 3
 package platform
4 4
 
... ...
@@ -1,5 +1,5 @@
1
-// +build linux,arm linux,ppc64 linux,ppc64le s390x
2
-// see golang's sources src/syscall/ztypes_linux_*.go that use uint8
1
+// +build linux,arm linux,ppc64 linux,ppc64le
2
+// see golang's sources golang.org/x/sys/unix/ztypes_linux_*.go that use uint8
3 3
 
4 4
 package platform
5 5
 
... ...
@@ -1,4 +1,4 @@
1
-// +build linux,arm linux,ppc64 linux,ppc64le s390x
1
+// +build linux,arm linux,ppc64 linux,ppc64le
2 2
 
3 3
 package platform
4 4
 
... ...
@@ -5,6 +5,8 @@ package reexec
5 5
 import (
6 6
 	"os/exec"
7 7
 	"syscall"
8
+
9
+	"golang.org/x/sys/unix"
8 10
 )
9 11
 
10 12
 // Self returns the path to the current process's binary.
... ...
@@ -22,7 +24,7 @@ func Command(args ...string) *exec.Cmd {
22 22
 		Path: Self(),
23 23
 		Args: args,
24 24
 		SysProcAttr: &syscall.SysProcAttr{
25
-			Pdeathsig: syscall.SIGTERM,
25
+			Pdeathsig: unix.SIGTERM,
26 26
 		},
27 27
 	}
28 28
 }
... ...
@@ -2,6 +2,8 @@ package signal
2 2
 
3 3
 import (
4 4
 	"syscall"
5
+
6
+	"golang.org/x/sys/unix"
5 7
 )
6 8
 
7 9
 const (
... ...
@@ -11,41 +13,41 @@ const (
11 11
 
12 12
 // SignalMap is a map of Linux signals.
13 13
 var SignalMap = map[string]syscall.Signal{
14
-	"ABRT":     syscall.SIGABRT,
15
-	"ALRM":     syscall.SIGALRM,
16
-	"BUS":      syscall.SIGBUS,
17
-	"CHLD":     syscall.SIGCHLD,
18
-	"CLD":      syscall.SIGCLD,
19
-	"CONT":     syscall.SIGCONT,
20
-	"FPE":      syscall.SIGFPE,
21
-	"HUP":      syscall.SIGHUP,
22
-	"ILL":      syscall.SIGILL,
23
-	"INT":      syscall.SIGINT,
24
-	"IO":       syscall.SIGIO,
25
-	"IOT":      syscall.SIGIOT,
26
-	"KILL":     syscall.SIGKILL,
27
-	"PIPE":     syscall.SIGPIPE,
28
-	"POLL":     syscall.SIGPOLL,
29
-	"PROF":     syscall.SIGPROF,
30
-	"PWR":      syscall.SIGPWR,
31
-	"QUIT":     syscall.SIGQUIT,
32
-	"SEGV":     syscall.SIGSEGV,
33
-	"STKFLT":   syscall.SIGSTKFLT,
34
-	"STOP":     syscall.SIGSTOP,
35
-	"SYS":      syscall.SIGSYS,
36
-	"TERM":     syscall.SIGTERM,
37
-	"TRAP":     syscall.SIGTRAP,
38
-	"TSTP":     syscall.SIGTSTP,
39
-	"TTIN":     syscall.SIGTTIN,
40
-	"TTOU":     syscall.SIGTTOU,
41
-	"UNUSED":   syscall.SIGUNUSED,
42
-	"URG":      syscall.SIGURG,
43
-	"USR1":     syscall.SIGUSR1,
44
-	"USR2":     syscall.SIGUSR2,
45
-	"VTALRM":   syscall.SIGVTALRM,
46
-	"WINCH":    syscall.SIGWINCH,
47
-	"XCPU":     syscall.SIGXCPU,
48
-	"XFSZ":     syscall.SIGXFSZ,
14
+	"ABRT":     unix.SIGABRT,
15
+	"ALRM":     unix.SIGALRM,
16
+	"BUS":      unix.SIGBUS,
17
+	"CHLD":     unix.SIGCHLD,
18
+	"CLD":      unix.SIGCLD,
19
+	"CONT":     unix.SIGCONT,
20
+	"FPE":      unix.SIGFPE,
21
+	"HUP":      unix.SIGHUP,
22
+	"ILL":      unix.SIGILL,
23
+	"INT":      unix.SIGINT,
24
+	"IO":       unix.SIGIO,
25
+	"IOT":      unix.SIGIOT,
26
+	"KILL":     unix.SIGKILL,
27
+	"PIPE":     unix.SIGPIPE,
28
+	"POLL":     unix.SIGPOLL,
29
+	"PROF":     unix.SIGPROF,
30
+	"PWR":      unix.SIGPWR,
31
+	"QUIT":     unix.SIGQUIT,
32
+	"SEGV":     unix.SIGSEGV,
33
+	"STKFLT":   unix.SIGSTKFLT,
34
+	"STOP":     unix.SIGSTOP,
35
+	"SYS":      unix.SIGSYS,
36
+	"TERM":     unix.SIGTERM,
37
+	"TRAP":     unix.SIGTRAP,
38
+	"TSTP":     unix.SIGTSTP,
39
+	"TTIN":     unix.SIGTTIN,
40
+	"TTOU":     unix.SIGTTOU,
41
+	"UNUSED":   unix.SIGUNUSED,
42
+	"URG":      unix.SIGURG,
43
+	"USR1":     unix.SIGUSR1,
44
+	"USR2":     unix.SIGUSR2,
45
+	"VTALRM":   unix.SIGVTALRM,
46
+	"WINCH":    unix.SIGWINCH,
47
+	"XCPU":     unix.SIGXCPU,
48
+	"XFSZ":     unix.SIGXFSZ,
49 49
 	"RTMIN":    sigrtmin,
50 50
 	"RTMIN+1":  sigrtmin + 1,
51 51
 	"RTMIN+2":  sigrtmin + 2,
... ...
@@ -6,49 +6,49 @@ import (
6 6
 	"os"
7 7
 	"path/filepath"
8 8
 	"strings"
9
-	"syscall"
10 9
 
11 10
 	"github.com/docker/docker/pkg/longpath"
11
+	"golang.org/x/sys/windows"
12 12
 )
13 13
 
14 14
 func toShort(path string) (string, error) {
15
-	p, err := syscall.UTF16FromString(path)
15
+	p, err := windows.UTF16FromString(path)
16 16
 	if err != nil {
17 17
 		return "", err
18 18
 	}
19 19
 	b := p // GetShortPathName says we can reuse buffer
20
-	n, err := syscall.GetShortPathName(&p[0], &b[0], uint32(len(b)))
20
+	n, err := windows.GetShortPathName(&p[0], &b[0], uint32(len(b)))
21 21
 	if err != nil {
22 22
 		return "", err
23 23
 	}
24 24
 	if n > uint32(len(b)) {
25 25
 		b = make([]uint16, n)
26
-		if _, err = syscall.GetShortPathName(&p[0], &b[0], uint32(len(b))); err != nil {
26
+		if _, err = windows.GetShortPathName(&p[0], &b[0], uint32(len(b))); err != nil {
27 27
 			return "", err
28 28
 		}
29 29
 	}
30
-	return syscall.UTF16ToString(b), nil
30
+	return windows.UTF16ToString(b), nil
31 31
 }
32 32
 
33 33
 func toLong(path string) (string, error) {
34
-	p, err := syscall.UTF16FromString(path)
34
+	p, err := windows.UTF16FromString(path)
35 35
 	if err != nil {
36 36
 		return "", err
37 37
 	}
38 38
 	b := p // GetLongPathName says we can reuse buffer
39
-	n, err := syscall.GetLongPathName(&p[0], &b[0], uint32(len(b)))
39
+	n, err := windows.GetLongPathName(&p[0], &b[0], uint32(len(b)))
40 40
 	if err != nil {
41 41
 		return "", err
42 42
 	}
43 43
 	if n > uint32(len(b)) {
44 44
 		b = make([]uint16, n)
45
-		n, err = syscall.GetLongPathName(&p[0], &b[0], uint32(len(b)))
45
+		n, err = windows.GetLongPathName(&p[0], &b[0], uint32(len(b)))
46 46
 		if err != nil {
47 47
 			return "", err
48 48
 		}
49 49
 	}
50 50
 	b = b[:n]
51
-	return syscall.UTF16ToString(b), nil
51
+	return windows.UTF16ToString(b), nil
52 52
 }
53 53
 
54 54
 func evalSymlinks(path string) (string, error) {
... ...
@@ -65,7 +65,7 @@ func evalSymlinks(path string) (string, error) {
65 65
 	if err != nil {
66 66
 		return "", err
67 67
 	}
68
-	// syscall.GetLongPathName does not change the case of the drive letter,
68
+	// windows.GetLongPathName does not change the case of the drive letter,
69 69
 	// but the result of EvalSymlinks must be unique, so we have
70 70
 	// EvalSymlinks(`c:\a`) == EvalSymlinks(`C:\a`).
71 71
 	// Make drive letter upper case.
... ...
@@ -4,8 +4,9 @@ package sysinfo
4 4
 
5 5
 import (
6 6
 	"runtime"
7
-	"syscall"
8 7
 	"unsafe"
8
+
9
+	"golang.org/x/sys/unix"
9 10
 )
10 11
 
11 12
 // numCPU queries the system for the count of threads available
... ...
@@ -15,10 +16,10 @@ import (
15 15
 // Returns 0 on errors. Use |runtime.NumCPU| in that case.
16 16
 func numCPU() int {
17 17
 	// Gets the affinity mask for a process: The very one invoking this function.
18
-	pid, _, _ := syscall.RawSyscall(syscall.SYS_GETPID, 0, 0, 0)
18
+	pid, _, _ := unix.RawSyscall(unix.SYS_GETPID, 0, 0, 0)
19 19
 
20 20
 	var mask [1024 / 64]uintptr
21
-	_, _, err := syscall.RawSyscall(syscall.SYS_SCHED_GETAFFINITY, pid, uintptr(len(mask)*8), uintptr(unsafe.Pointer(&mask[0])))
21
+	_, _, err := unix.RawSyscall(unix.SYS_SCHED_GETAFFINITY, pid, uintptr(len(mask)*8), uintptr(unsafe.Pointer(&mask[0])))
22 22
 	if err != 0 {
23 23
 		return 0
24 24
 	}
... ...
@@ -6,10 +6,10 @@ import (
6 6
 	"os"
7 7
 	"path"
8 8
 	"strings"
9
-	"syscall"
10 9
 
11 10
 	"github.com/Sirupsen/logrus"
12 11
 	"github.com/opencontainers/runc/libcontainer/cgroups"
12
+	"golang.org/x/sys/unix"
13 13
 )
14 14
 
15 15
 const (
... ...
@@ -60,9 +60,9 @@ func New(quiet bool) *SysInfo {
60 60
 	}
61 61
 
62 62
 	// Check if Seccomp is supported, via CONFIG_SECCOMP.
63
-	if _, _, err := syscall.RawSyscall(syscall.SYS_PRCTL, syscall.PR_GET_SECCOMP, 0, 0); err != syscall.EINVAL {
63
+	if _, _, err := unix.RawSyscall(unix.SYS_PRCTL, unix.PR_GET_SECCOMP, 0, 0); err != unix.EINVAL {
64 64
 		// Make sure the kernel has CONFIG_SECCOMP_FILTER.
65
-		if _, _, err := syscall.RawSyscall(syscall.SYS_PRCTL, syscall.PR_SET_SECCOMP, SeccompModeFilter, 0); err != syscall.EINVAL {
65
+		if _, _, err := unix.RawSyscall(unix.SYS_PRCTL, unix.PR_SET_SECCOMP, SeccompModeFilter, 0); err != unix.EINVAL {
66 66
 			sysInfo.Seccomp = true
67 67
 		}
68 68
 	}
... ...
@@ -3,25 +3,26 @@
3 3
 package system
4 4
 
5 5
 import (
6
-	"syscall"
7 6
 	"time"
7
+
8
+	"golang.org/x/sys/windows"
8 9
 )
9 10
 
10 11
 //setCTime will set the create time on a file. On Windows, this requires
11 12
 //calling SetFileTime and explicitly including the create time.
12 13
 func setCTime(path string, ctime time.Time) error {
13
-	ctimespec := syscall.NsecToTimespec(ctime.UnixNano())
14
-	pathp, e := syscall.UTF16PtrFromString(path)
14
+	ctimespec := windows.NsecToTimespec(ctime.UnixNano())
15
+	pathp, e := windows.UTF16PtrFromString(path)
15 16
 	if e != nil {
16 17
 		return e
17 18
 	}
18
-	h, e := syscall.CreateFile(pathp,
19
-		syscall.FILE_WRITE_ATTRIBUTES, syscall.FILE_SHARE_WRITE, nil,
20
-		syscall.OPEN_EXISTING, syscall.FILE_FLAG_BACKUP_SEMANTICS, 0)
19
+	h, e := windows.CreateFile(pathp,
20
+		windows.FILE_WRITE_ATTRIBUTES, windows.FILE_SHARE_WRITE, nil,
21
+		windows.OPEN_EXISTING, windows.FILE_FLAG_BACKUP_SEMANTICS, 0)
21 22
 	if e != nil {
22 23
 		return e
23 24
 	}
24
-	defer syscall.Close(h)
25
-	c := syscall.NsecToFiletime(syscall.TimespecToNsec(ctimespec))
26
-	return syscall.SetFileTime(h, &c, nil, nil)
25
+	defer windows.Close(h)
26
+	c := windows.NsecToFiletime(windows.TimespecToNsec(ctimespec))
27
+	return windows.SetFileTime(h, &c, nil, nil)
27 28
 }
... ...
@@ -19,8 +19,8 @@ var (
19 19
 )
20 20
 
21 21
 // CreateEvent implements win32 CreateEventW func in golang. It will create an event object.
22
-func CreateEvent(eventAttributes *syscall.SecurityAttributes, manualReset bool, initialState bool, name string) (handle syscall.Handle, err error) {
23
-	namep, _ := syscall.UTF16PtrFromString(name)
22
+func CreateEvent(eventAttributes *windows.SecurityAttributes, manualReset bool, initialState bool, name string) (handle windows.Handle, err error) {
23
+	namep, _ := windows.UTF16PtrFromString(name)
24 24
 	var _p1 uint32
25 25
 	if manualReset {
26 26
 		_p1 = 1
... ...
@@ -31,45 +31,45 @@ func CreateEvent(eventAttributes *syscall.SecurityAttributes, manualReset bool,
31 31
 	}
32 32
 	r0, _, e1 := procCreateEvent.Call(uintptr(unsafe.Pointer(eventAttributes)), uintptr(_p1), uintptr(_p2), uintptr(unsafe.Pointer(namep)))
33 33
 	use(unsafe.Pointer(namep))
34
-	handle = syscall.Handle(r0)
35
-	if handle == syscall.InvalidHandle {
34
+	handle = windows.Handle(r0)
35
+	if handle == windows.InvalidHandle {
36 36
 		err = e1
37 37
 	}
38 38
 	return
39 39
 }
40 40
 
41 41
 // OpenEvent implements win32 OpenEventW func in golang. It opens an event object.
42
-func OpenEvent(desiredAccess uint32, inheritHandle bool, name string) (handle syscall.Handle, err error) {
43
-	namep, _ := syscall.UTF16PtrFromString(name)
42
+func OpenEvent(desiredAccess uint32, inheritHandle bool, name string) (handle windows.Handle, err error) {
43
+	namep, _ := windows.UTF16PtrFromString(name)
44 44
 	var _p1 uint32
45 45
 	if inheritHandle {
46 46
 		_p1 = 1
47 47
 	}
48 48
 	r0, _, e1 := procOpenEvent.Call(uintptr(desiredAccess), uintptr(_p1), uintptr(unsafe.Pointer(namep)))
49 49
 	use(unsafe.Pointer(namep))
50
-	handle = syscall.Handle(r0)
51
-	if handle == syscall.InvalidHandle {
50
+	handle = windows.Handle(r0)
51
+	if handle == windows.InvalidHandle {
52 52
 		err = e1
53 53
 	}
54 54
 	return
55 55
 }
56 56
 
57 57
 // SetEvent implements win32 SetEvent func in golang.
58
-func SetEvent(handle syscall.Handle) (err error) {
58
+func SetEvent(handle windows.Handle) (err error) {
59 59
 	return setResetPulse(handle, procSetEvent)
60 60
 }
61 61
 
62 62
 // ResetEvent implements win32 ResetEvent func in golang.
63
-func ResetEvent(handle syscall.Handle) (err error) {
63
+func ResetEvent(handle windows.Handle) (err error) {
64 64
 	return setResetPulse(handle, procResetEvent)
65 65
 }
66 66
 
67 67
 // PulseEvent implements win32 PulseEvent func in golang.
68
-func PulseEvent(handle syscall.Handle) (err error) {
68
+func PulseEvent(handle windows.Handle) (err error) {
69 69
 	return setResetPulse(handle, procPulseEvent)
70 70
 }
71 71
 
72
-func setResetPulse(handle syscall.Handle, proc *windows.LazyProc) (err error) {
72
+func setResetPulse(handle windows.Handle, proc *windows.LazyProc) (err error) {
73 73
 	r0, _, _ := proc.Call(uintptr(handle))
74 74
 	if r0 != 0 {
75 75
 		err = syscall.Errno(r0)
... ...
@@ -14,6 +14,7 @@ import (
14 14
 	"unsafe"
15 15
 
16 16
 	winio "github.com/Microsoft/go-winio"
17
+	"golang.org/x/sys/windows"
17 18
 )
18 19
 
19 20
 const (
... ...
@@ -99,13 +100,12 @@ func mkdirall(path string, applyACL bool, sddl string) error {
99 99
 // mkdirWithACL creates a new directory. If there is an error, it will be of
100 100
 // type *PathError. .
101 101
 //
102
-// This is a modified and combined version of os.Mkdir and syscall.Mkdir
102
+// This is a modified and combined version of os.Mkdir and windows.Mkdir
103 103
 // in golang to cater for creating a directory am ACL permitting full
104 104
 // access, with inheritance, to any subfolder/file for Built-in Administrators
105 105
 // and Local System.
106 106
 func mkdirWithACL(name string, sddl string) error {
107
-	sa := syscall.SecurityAttributes{Length: 0}
108
-
107
+	sa := windows.SecurityAttributes{Length: 0}
109 108
 	sd, err := winio.SddlToSecurityDescriptor(sddl)
110 109
 	if err != nil {
111 110
 		return &os.PathError{Op: "mkdir", Path: name, Err: err}
... ...
@@ -114,12 +114,12 @@ func mkdirWithACL(name string, sddl string) error {
114 114
 	sa.InheritHandle = 1
115 115
 	sa.SecurityDescriptor = uintptr(unsafe.Pointer(&sd[0]))
116 116
 
117
-	namep, err := syscall.UTF16PtrFromString(name)
117
+	namep, err := windows.UTF16PtrFromString(name)
118 118
 	if err != nil {
119 119
 		return &os.PathError{Op: "mkdir", Path: name, Err: err}
120 120
 	}
121 121
 
122
-	e := syscall.CreateDirectory(namep, &sa)
122
+	e := windows.CreateDirectory(namep, &sa)
123 123
 	if e != nil {
124 124
 		return &os.PathError{Op: "mkdir", Path: name, Err: e}
125 125
 	}
... ...
@@ -142,7 +142,7 @@ func IsAbs(path string) bool {
142 142
 	return true
143 143
 }
144 144
 
145
-// The origin of the functions below here are the golang OS and syscall packages,
145
+// The origin of the functions below here are the golang OS and windows packages,
146 146
 // slightly modified to only cope with files, not directories due to the
147 147
 // specific use case.
148 148
 //
... ...
@@ -174,74 +174,74 @@ func OpenFileSequential(name string, flag int, _ os.FileMode) (*os.File, error)
174 174
 	if name == "" {
175 175
 		return nil, &os.PathError{Op: "open", Path: name, Err: syscall.ENOENT}
176 176
 	}
177
-	r, errf := syscallOpenFileSequential(name, flag, 0)
177
+	r, errf := windowsOpenFileSequential(name, flag, 0)
178 178
 	if errf == nil {
179 179
 		return r, nil
180 180
 	}
181 181
 	return nil, &os.PathError{Op: "open", Path: name, Err: errf}
182 182
 }
183 183
 
184
-func syscallOpenFileSequential(name string, flag int, _ os.FileMode) (file *os.File, err error) {
185
-	r, e := syscallOpenSequential(name, flag|syscall.O_CLOEXEC, 0)
184
+func windowsOpenFileSequential(name string, flag int, _ os.FileMode) (file *os.File, err error) {
185
+	r, e := windowsOpenSequential(name, flag|windows.O_CLOEXEC, 0)
186 186
 	if e != nil {
187 187
 		return nil, e
188 188
 	}
189 189
 	return os.NewFile(uintptr(r), name), nil
190 190
 }
191 191
 
192
-func makeInheritSa() *syscall.SecurityAttributes {
193
-	var sa syscall.SecurityAttributes
192
+func makeInheritSa() *windows.SecurityAttributes {
193
+	var sa windows.SecurityAttributes
194 194
 	sa.Length = uint32(unsafe.Sizeof(sa))
195 195
 	sa.InheritHandle = 1
196 196
 	return &sa
197 197
 }
198 198
 
199
-func syscallOpenSequential(path string, mode int, _ uint32) (fd syscall.Handle, err error) {
199
+func windowsOpenSequential(path string, mode int, _ uint32) (fd windows.Handle, err error) {
200 200
 	if len(path) == 0 {
201
-		return syscall.InvalidHandle, syscall.ERROR_FILE_NOT_FOUND
201
+		return windows.InvalidHandle, windows.ERROR_FILE_NOT_FOUND
202 202
 	}
203
-	pathp, err := syscall.UTF16PtrFromString(path)
203
+	pathp, err := windows.UTF16PtrFromString(path)
204 204
 	if err != nil {
205
-		return syscall.InvalidHandle, err
205
+		return windows.InvalidHandle, err
206 206
 	}
207 207
 	var access uint32
208
-	switch mode & (syscall.O_RDONLY | syscall.O_WRONLY | syscall.O_RDWR) {
209
-	case syscall.O_RDONLY:
210
-		access = syscall.GENERIC_READ
211
-	case syscall.O_WRONLY:
212
-		access = syscall.GENERIC_WRITE
213
-	case syscall.O_RDWR:
214
-		access = syscall.GENERIC_READ | syscall.GENERIC_WRITE
208
+	switch mode & (windows.O_RDONLY | windows.O_WRONLY | windows.O_RDWR) {
209
+	case windows.O_RDONLY:
210
+		access = windows.GENERIC_READ
211
+	case windows.O_WRONLY:
212
+		access = windows.GENERIC_WRITE
213
+	case windows.O_RDWR:
214
+		access = windows.GENERIC_READ | windows.GENERIC_WRITE
215 215
 	}
216
-	if mode&syscall.O_CREAT != 0 {
217
-		access |= syscall.GENERIC_WRITE
216
+	if mode&windows.O_CREAT != 0 {
217
+		access |= windows.GENERIC_WRITE
218 218
 	}
219
-	if mode&syscall.O_APPEND != 0 {
220
-		access &^= syscall.GENERIC_WRITE
221
-		access |= syscall.FILE_APPEND_DATA
219
+	if mode&windows.O_APPEND != 0 {
220
+		access &^= windows.GENERIC_WRITE
221
+		access |= windows.FILE_APPEND_DATA
222 222
 	}
223
-	sharemode := uint32(syscall.FILE_SHARE_READ | syscall.FILE_SHARE_WRITE)
224
-	var sa *syscall.SecurityAttributes
225
-	if mode&syscall.O_CLOEXEC == 0 {
223
+	sharemode := uint32(windows.FILE_SHARE_READ | windows.FILE_SHARE_WRITE)
224
+	var sa *windows.SecurityAttributes
225
+	if mode&windows.O_CLOEXEC == 0 {
226 226
 		sa = makeInheritSa()
227 227
 	}
228 228
 	var createmode uint32
229 229
 	switch {
230
-	case mode&(syscall.O_CREAT|syscall.O_EXCL) == (syscall.O_CREAT | syscall.O_EXCL):
231
-		createmode = syscall.CREATE_NEW
232
-	case mode&(syscall.O_CREAT|syscall.O_TRUNC) == (syscall.O_CREAT | syscall.O_TRUNC):
233
-		createmode = syscall.CREATE_ALWAYS
234
-	case mode&syscall.O_CREAT == syscall.O_CREAT:
235
-		createmode = syscall.OPEN_ALWAYS
236
-	case mode&syscall.O_TRUNC == syscall.O_TRUNC:
237
-		createmode = syscall.TRUNCATE_EXISTING
230
+	case mode&(windows.O_CREAT|windows.O_EXCL) == (windows.O_CREAT | windows.O_EXCL):
231
+		createmode = windows.CREATE_NEW
232
+	case mode&(windows.O_CREAT|windows.O_TRUNC) == (windows.O_CREAT | windows.O_TRUNC):
233
+		createmode = windows.CREATE_ALWAYS
234
+	case mode&windows.O_CREAT == windows.O_CREAT:
235
+		createmode = windows.OPEN_ALWAYS
236
+	case mode&windows.O_TRUNC == windows.O_TRUNC:
237
+		createmode = windows.TRUNCATE_EXISTING
238 238
 	default:
239
-		createmode = syscall.OPEN_EXISTING
239
+		createmode = windows.OPEN_EXISTING
240 240
 	}
241 241
 	// Use FILE_FLAG_SEQUENTIAL_SCAN rather than FILE_ATTRIBUTE_NORMAL as implemented in golang.
242 242
 	//https://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx
243 243
 	const fileFlagSequentialScan = 0x08000000 // FILE_FLAG_SEQUENTIAL_SCAN
244
-	h, e := syscall.CreateFile(pathp, access, sharemode, sa, createmode, fileFlagSequentialScan, 0)
244
+	h, e := windows.CreateFile(pathp, access, sharemode, sa, createmode, fileFlagSequentialScan, 0)
245 245
 	return h, e
246 246
 }
247 247
 
... ...
@@ -2,7 +2,9 @@
2 2
 
3 3
 package system
4 4
 
5
-import "syscall"
5
+import (
6
+	"syscall"
7
+)
6 8
 
7 9
 // Lstat takes a path to a file and returns
8 10
 // a system.StatT type pertaining to that file.
... ...
@@ -3,13 +3,13 @@
3 3
 package system
4 4
 
5 5
 import (
6
-	"syscall"
6
+	"golang.org/x/sys/unix"
7 7
 )
8 8
 
9 9
 // Mknod creates a filesystem node (file, device special file or named pipe) named path
10 10
 // with attributes specified by mode and dev.
11 11
 func Mknod(path string, mode uint32, dev int) error {
12
-	return syscall.Mknod(path, mode, dev)
12
+	return unix.Mknod(path, mode, dev)
13 13
 }
14 14
 
15 15
 // Mkdev is used to build the value of linux devices (in /dev/) which specifies major
... ...
@@ -4,12 +4,14 @@ package system
4 4
 
5 5
 import (
6 6
 	"syscall"
7
+
8
+	"golang.org/x/sys/unix"
7 9
 )
8 10
 
9 11
 // IsProcessAlive returns true if process with a given pid is running.
10 12
 func IsProcessAlive(pid int) bool {
11
-	err := syscall.Kill(pid, syscall.Signal(0))
12
-	if err == nil || err == syscall.EPERM {
13
+	err := unix.Kill(pid, syscall.Signal(0))
14
+	if err == nil || err == unix.EPERM {
13 15
 		return true
14 16
 	}
15 17
 
... ...
@@ -18,5 +20,5 @@ func IsProcessAlive(pid int) bool {
18 18
 
19 19
 // KillProcess force-stops a process.
20 20
 func KillProcess(pid int) {
21
-	syscall.Kill(pid, syscall.SIGKILL)
21
+	unix.Kill(pid, unix.SIGKILL)
22 22
 }
... ...
@@ -2,7 +2,9 @@
2 2
 
3 3
 package system
4 4
 
5
-import "syscall"
5
+import (
6
+	"syscall"
7
+)
6 8
 
7 9
 // StatT type contains status of a file. It contains metadata
8 10
 // like permission, owner, group, size, etc about a file.
... ...
@@ -2,12 +2,12 @@
2 2
 
3 3
 package system
4 4
 
5
-import "syscall"
5
+import "golang.org/x/sys/unix"
6 6
 
7 7
 // Unmount is a platform-specific helper function to call
8 8
 // the unmount syscall.
9 9
 func Unmount(dest string) error {
10
-	return syscall.Unmount(dest, 0)
10
+	return unix.Unmount(dest, 0)
11 11
 }
12 12
 
13 13
 // CommandLineToArgv should not be used on Unix.
... ...
@@ -1,14 +1,14 @@
1 1
 package system
2 2
 
3 3
 import (
4
-	"syscall"
5 4
 	"unsafe"
6 5
 
7 6
 	"github.com/Sirupsen/logrus"
7
+	"golang.org/x/sys/windows"
8 8
 )
9 9
 
10 10
 var (
11
-	ntuserApiset       = syscall.NewLazyDLL("ext-ms-win-ntuser-window-l1-1-0")
11
+	ntuserApiset       = windows.NewLazyDLL("ext-ms-win-ntuser-window-l1-1-0")
12 12
 	procGetVersionExW  = modkernel32.NewProc("GetVersionExW")
13 13
 	procGetProductInfo = modkernel32.NewProc("GetProductInfo")
14 14
 )
... ...
@@ -42,7 +42,7 @@ type osVersionInfoEx struct {
42 42
 func GetOSVersion() OSVersion {
43 43
 	var err error
44 44
 	osv := OSVersion{}
45
-	osv.Version, err = syscall.GetVersion()
45
+	osv.Version, err = windows.GetVersion()
46 46
 	if err != nil {
47 47
 		// GetVersion never fails.
48 48
 		panic(err)
... ...
@@ -93,20 +93,20 @@ func Unmount(dest string) error {
93 93
 func CommandLineToArgv(commandLine string) ([]string, error) {
94 94
 	var argc int32
95 95
 
96
-	argsPtr, err := syscall.UTF16PtrFromString(commandLine)
96
+	argsPtr, err := windows.UTF16PtrFromString(commandLine)
97 97
 	if err != nil {
98 98
 		return nil, err
99 99
 	}
100 100
 
101
-	argv, err := syscall.CommandLineToArgv(argsPtr, &argc)
101
+	argv, err := windows.CommandLineToArgv(argsPtr, &argc)
102 102
 	if err != nil {
103 103
 		return nil, err
104 104
 	}
105
-	defer syscall.LocalFree(syscall.Handle(uintptr(unsafe.Pointer(argv))))
105
+	defer windows.LocalFree(windows.Handle(uintptr(unsafe.Pointer(argv))))
106 106
 
107 107
 	newArgs := make([]string, argc)
108 108
 	for i, v := range (*argv)[:argc] {
109
-		newArgs[i] = string(syscall.UTF16ToString((*v)[:]))
109
+		newArgs[i] = string(windows.UTF16ToString((*v)[:]))
110 110
 	}
111 111
 
112 112
 	return newArgs, nil
... ...
@@ -3,11 +3,11 @@
3 3
 package system
4 4
 
5 5
 import (
6
-	"syscall"
6
+	"golang.org/x/sys/unix"
7 7
 )
8 8
 
9 9
 // Umask sets current process's file mode creation mask to newmask
10 10
 // and returns oldmask.
11 11
 func Umask(newmask int) (oldmask int, err error) {
12
-	return syscall.Umask(newmask), nil
12
+	return unix.Umask(newmask), nil
13 13
 }
... ...
@@ -3,18 +3,20 @@ package system
3 3
 import (
4 4
 	"syscall"
5 5
 	"unsafe"
6
+
7
+	"golang.org/x/sys/unix"
6 8
 )
7 9
 
8 10
 // LUtimesNano is used to change access and modification time of the specified path.
9
-// It's used for symbol link file because syscall.UtimesNano doesn't support a NOFOLLOW flag atm.
11
+// It's used for symbol link file because unix.UtimesNano doesn't support a NOFOLLOW flag atm.
10 12
 func LUtimesNano(path string, ts []syscall.Timespec) error {
11 13
 	var _path *byte
12
-	_path, err := syscall.BytePtrFromString(path)
14
+	_path, err := unix.BytePtrFromString(path)
13 15
 	if err != nil {
14 16
 		return err
15 17
 	}
16 18
 
17
-	if _, _, err := syscall.Syscall(syscall.SYS_LUTIMES, uintptr(unsafe.Pointer(_path)), uintptr(unsafe.Pointer(&ts[0])), 0); err != 0 && err != syscall.ENOSYS {
19
+	if _, _, err := unix.Syscall(unix.SYS_LUTIMES, uintptr(unsafe.Pointer(_path)), uintptr(unsafe.Pointer(&ts[0])), 0); err != 0 && err != unix.ENOSYS {
18 20
 		return err
19 21
 	}
20 22
 
... ...
@@ -3,22 +3,21 @@ package system
3 3
 import (
4 4
 	"syscall"
5 5
 	"unsafe"
6
+
7
+	"golang.org/x/sys/unix"
6 8
 )
7 9
 
8 10
 // LUtimesNano is used to change access and modification time of the specified path.
9
-// It's used for symbol link file because syscall.UtimesNano doesn't support a NOFOLLOW flag atm.
11
+// It's used for symbol link file because unix.UtimesNano doesn't support a NOFOLLOW flag atm.
10 12
 func LUtimesNano(path string, ts []syscall.Timespec) error {
11
-	// These are not currently available in syscall
12
-	atFdCwd := -100
13
-	atSymLinkNoFollow := 0x100
13
+	atFdCwd := unix.AT_FDCWD
14 14
 
15 15
 	var _path *byte
16
-	_path, err := syscall.BytePtrFromString(path)
16
+	_path, err := unix.BytePtrFromString(path)
17 17
 	if err != nil {
18 18
 		return err
19 19
 	}
20
-
21
-	if _, _, err := syscall.Syscall6(syscall.SYS_UTIMENSAT, uintptr(atFdCwd), uintptr(unsafe.Pointer(_path)), uintptr(unsafe.Pointer(&ts[0])), uintptr(atSymLinkNoFollow), 0, 0); err != 0 && err != syscall.ENOSYS {
20
+	if _, _, err := unix.Syscall6(unix.SYS_UTIMENSAT, uintptr(atFdCwd), uintptr(unsafe.Pointer(_path)), uintptr(unsafe.Pointer(&ts[0])), unix.AT_SYMLINK_NOFOLLOW, 0, 0); err != 0 && err != unix.ENOSYS {
22 21
 		return err
23 22
 	}
24 23
 
... ...
@@ -1,33 +1,34 @@
1 1
 package system
2 2
 
3 3
 import (
4
-	"syscall"
5 4
 	"unsafe"
5
+
6
+	"golang.org/x/sys/unix"
6 7
 )
7 8
 
8 9
 // Lgetxattr retrieves the value of the extended attribute identified by attr
9 10
 // and associated with the given path in the file system.
10 11
 // It will returns a nil slice and nil error if the xattr is not set.
11 12
 func Lgetxattr(path string, attr string) ([]byte, error) {
12
-	pathBytes, err := syscall.BytePtrFromString(path)
13
+	pathBytes, err := unix.BytePtrFromString(path)
13 14
 	if err != nil {
14 15
 		return nil, err
15 16
 	}
16
-	attrBytes, err := syscall.BytePtrFromString(attr)
17
+	attrBytes, err := unix.BytePtrFromString(attr)
17 18
 	if err != nil {
18 19
 		return nil, err
19 20
 	}
20 21
 
21 22
 	dest := make([]byte, 128)
22 23
 	destBytes := unsafe.Pointer(&dest[0])
23
-	sz, _, errno := syscall.Syscall6(syscall.SYS_LGETXATTR, uintptr(unsafe.Pointer(pathBytes)), uintptr(unsafe.Pointer(attrBytes)), uintptr(destBytes), uintptr(len(dest)), 0, 0)
24
-	if errno == syscall.ENODATA {
24
+	sz, _, errno := unix.Syscall6(unix.SYS_LGETXATTR, uintptr(unsafe.Pointer(pathBytes)), uintptr(unsafe.Pointer(attrBytes)), uintptr(destBytes), uintptr(len(dest)), 0, 0)
25
+	if errno == unix.ENODATA {
25 26
 		return nil, nil
26 27
 	}
27
-	if errno == syscall.ERANGE {
28
+	if errno == unix.ERANGE {
28 29
 		dest = make([]byte, sz)
29 30
 		destBytes := unsafe.Pointer(&dest[0])
30
-		sz, _, errno = syscall.Syscall6(syscall.SYS_LGETXATTR, uintptr(unsafe.Pointer(pathBytes)), uintptr(unsafe.Pointer(attrBytes)), uintptr(destBytes), uintptr(len(dest)), 0, 0)
31
+		sz, _, errno = unix.Syscall6(unix.SYS_LGETXATTR, uintptr(unsafe.Pointer(pathBytes)), uintptr(unsafe.Pointer(attrBytes)), uintptr(destBytes), uintptr(len(dest)), 0, 0)
31 32
 	}
32 33
 	if errno != 0 {
33 34
 		return nil, errno
... ...
@@ -41,11 +42,11 @@ var _zero uintptr
41 41
 // Lsetxattr sets the value of the extended attribute identified by attr
42 42
 // and associated with the given path in the file system.
43 43
 func Lsetxattr(path string, attr string, data []byte, flags int) error {
44
-	pathBytes, err := syscall.BytePtrFromString(path)
44
+	pathBytes, err := unix.BytePtrFromString(path)
45 45
 	if err != nil {
46 46
 		return err
47 47
 	}
48
-	attrBytes, err := syscall.BytePtrFromString(attr)
48
+	attrBytes, err := unix.BytePtrFromString(attr)
49 49
 	if err != nil {
50 50
 		return err
51 51
 	}
... ...
@@ -55,7 +56,7 @@ func Lsetxattr(path string, attr string, data []byte, flags int) error {
55 55
 	} else {
56 56
 		dataBytes = unsafe.Pointer(&_zero)
57 57
 	}
58
-	_, _, errno := syscall.Syscall6(syscall.SYS_LSETXATTR, uintptr(unsafe.Pointer(pathBytes)), uintptr(unsafe.Pointer(attrBytes)), uintptr(dataBytes), uintptr(len(data)), uintptr(flags), 0)
58
+	_, _, errno := unix.Syscall6(unix.SYS_LSETXATTR, uintptr(unsafe.Pointer(pathBytes)), uintptr(unsafe.Pointer(attrBytes)), uintptr(dataBytes), uintptr(len(data)), uintptr(flags), 0)
59 59
 	if errno != 0 {
60 60
 		return errno
61 61
 	}
... ...
@@ -8,7 +8,6 @@ import (
8 8
 	"net"
9 9
 	"os"
10 10
 	"path/filepath"
11
-	"syscall"
12 11
 	"time"
13 12
 
14 13
 	"github.com/Sirupsen/logrus"
... ...
@@ -23,6 +22,7 @@ import (
23 23
 	"github.com/opencontainers/go-digest"
24 24
 	specs "github.com/opencontainers/runtime-spec/specs-go"
25 25
 	"github.com/pkg/errors"
26
+	"golang.org/x/sys/unix"
26 27
 )
27 28
 
28 29
 func (pm *Manager) enable(p *v2.Plugin, c *controller, force bool) error {
... ...
@@ -146,7 +146,7 @@ func (pm *Manager) restore(p *v2.Plugin) error {
146 146
 func shutdownPlugin(p *v2.Plugin, c *controller, containerdClient libcontainerd.Client) {
147 147
 	pluginID := p.GetID()
148 148
 
149
-	err := containerdClient.Signal(pluginID, int(syscall.SIGTERM))
149
+	err := containerdClient.Signal(pluginID, int(unix.SIGTERM))
150 150
 	if err != nil {
151 151
 		logrus.Errorf("Sending SIGTERM to plugin failed with error: %v", err)
152 152
 	} else {
... ...
@@ -155,7 +155,7 @@ func shutdownPlugin(p *v2.Plugin, c *controller, containerdClient libcontainerd.
155 155
 			logrus.Debug("Clean shutdown of plugin")
156 156
 		case <-time.After(time.Second * 10):
157 157
 			logrus.Debug("Force shutdown plugin")
158
-			if err := containerdClient.Signal(pluginID, int(syscall.SIGKILL)); err != nil {
158
+			if err := containerdClient.Signal(pluginID, int(unix.SIGKILL)); err != nil {
159 159
 				logrus.Errorf("Sending SIGKILL to plugin failed with error: %v", err)
160 160
 			}
161 161
 		}
... ...
@@ -3,9 +3,8 @@
3 3
 package seccomp
4 4
 
5 5
 import (
6
-	"syscall"
7
-
8 6
 	"github.com/docker/docker/api/types"
7
+	"golang.org/x/sys/unix"
9 8
 )
10 9
 
11 10
 func arches() []types.Architecture {
... ...
@@ -510,7 +509,7 @@ func DefaultProfile() *types.Seccomp {
510 510
 			Args: []*types.Arg{
511 511
 				{
512 512
 					Index:    0,
513
-					Value:    syscall.CLONE_NEWNS | syscall.CLONE_NEWUTS | syscall.CLONE_NEWIPC | syscall.CLONE_NEWUSER | syscall.CLONE_NEWPID | syscall.CLONE_NEWNET,
513
+					Value:    unix.CLONE_NEWNS | unix.CLONE_NEWUTS | unix.CLONE_NEWIPC | unix.CLONE_NEWUSER | unix.CLONE_NEWPID | unix.CLONE_NEWNET,
514 514
 					ValueTwo: 0,
515 515
 					Op:       types.OpMaskedEqual,
516 516
 				},
... ...
@@ -528,7 +527,7 @@ func DefaultProfile() *types.Seccomp {
528 528
 			Args: []*types.Arg{
529 529
 				{
530 530
 					Index:    1,
531
-					Value:    syscall.CLONE_NEWNS | syscall.CLONE_NEWUTS | syscall.CLONE_NEWIPC | syscall.CLONE_NEWUSER | syscall.CLONE_NEWPID | syscall.CLONE_NEWNET,
531
+					Value:    unix.CLONE_NEWNS | unix.CLONE_NEWUTS | unix.CLONE_NEWIPC | unix.CLONE_NEWUSER | unix.CLONE_NEWPID | unix.CLONE_NEWNET,
532 532
 					ValueTwo: 0,
533 533
 					Op:       types.OpMaskedEqual,
534 534
 				},