diff --git a/vendor/github.com/Microsoft/hcsshim/zhcsshim.go b/vendor/github.com/Microsoft/hcsshim/zhcsshim.go index 5123e8d8e8161..7d94f216a1fe3 100644 --- a/vendor/github.com/Microsoft/hcsshim/zhcsshim.go +++ b/vendor/github.com/Microsoft/hcsshim/zhcsshim.go @@ -5,6 +5,7 @@ package hcsshim import ( "syscall" "unsafe" + "runtime" "github.com/Microsoft/go-winio" "golang.org/x/sys/windows" @@ -129,7 +130,14 @@ func _activateLayer(info *driverInfo, id *uint16) (hr error) { if hr = procActivateLayer.Find(); hr != nil { return } - r0, _, _ := syscall.Syscall(procActivateLayer.Addr(), 2, uintptr(unsafe.Pointer(info)), uintptr(unsafe.Pointer(id)), 0) + var r0 uintptr + if runtime.GOARCH == "arm" { + r0, _, _ = syscall.Syscall(procActivateLayer.Addr(), 3, uintptr((*info).Flavour), + uintptr(unsafe.Pointer((*info).HomeDirp)), uintptr(unsafe.Pointer(id))) + } else { + r0, _, _ = syscall.Syscall(procActivateLayer.Addr(), 2, uintptr(unsafe.Pointer(info)), + uintptr(unsafe.Pointer(id)), 0) + } if int32(r0) < 0 { hr = syscall.Errno(win32FromHresult(r0)) } @@ -158,7 +166,16 @@ func _copyLayer(info *driverInfo, srcId *uint16, dstId *uint16, descriptors []WC if hr = procCopyLayer.Find(); hr != nil { return } - r0, _, _ := syscall.Syscall6(procCopyLayer.Addr(), 5, uintptr(unsafe.Pointer(info)), uintptr(unsafe.Pointer(srcId)), uintptr(unsafe.Pointer(dstId)), uintptr(unsafe.Pointer(_p2)), uintptr(len(descriptors)), 0) + var r0 uintptr + if runtime.GOARCH == "arm" { + r0, _, _ = syscall.Syscall6(procCopyLayer.Addr(), 6, uintptr((*info).Flavour), + uintptr(unsafe.Pointer((*info).HomeDirp)), uintptr(unsafe.Pointer(srcId)), + uintptr(unsafe.Pointer(dstId)), uintptr(unsafe.Pointer(_p2)), uintptr(len(descriptors))) + } else { + r0, _, _ = syscall.Syscall6(procCopyLayer.Addr(), 5, uintptr(unsafe.Pointer(info)), + uintptr(unsafe.Pointer(srcId)), uintptr(unsafe.Pointer(dstId)), uintptr(unsafe.Pointer(_p2)), + uintptr(len(descriptors)), 0) + } if int32(r0) < 0 { hr = syscall.Errno(win32FromHresult(r0)) } @@ -176,6 +193,7 @@ func createLayer(info *driverInfo, id string, parent string) (hr error) { if hr != nil { return } + return _createLayer(info, _p0, _p1) } @@ -183,7 +201,15 @@ func _createLayer(info *driverInfo, id *uint16, parent *uint16) (hr error) { if hr = procCreateLayer.Find(); hr != nil { return } - r0, _, _ := syscall.Syscall(procCreateLayer.Addr(), 3, uintptr(unsafe.Pointer(info)), uintptr(unsafe.Pointer(id)), uintptr(unsafe.Pointer(parent))) + var r0 uintptr + if runtime.GOARCH == "arm" { + r0, _, _ = syscall.Syscall6(procCreateLayer.Addr(), 4, uintptr((*info).Flavour), + uintptr(unsafe.Pointer((*info).HomeDirp)), uintptr(unsafe.Pointer(id)), + uintptr(unsafe.Pointer(parent)), 0, 0) + } else { + r0, _, _ = syscall.Syscall(procCreateLayer.Addr(), 3, uintptr(unsafe.Pointer(info)), + uintptr(unsafe.Pointer(id)), uintptr(unsafe.Pointer(parent))) + } if int32(r0) < 0 { hr = syscall.Errno(win32FromHresult(r0)) } @@ -212,7 +238,16 @@ func _createSandboxLayer(info *driverInfo, id *uint16, parent *uint16, descripto if hr = procCreateSandboxLayer.Find(); hr != nil { return } - r0, _, _ := syscall.Syscall6(procCreateSandboxLayer.Addr(), 5, uintptr(unsafe.Pointer(info)), uintptr(unsafe.Pointer(id)), uintptr(unsafe.Pointer(parent)), uintptr(unsafe.Pointer(_p2)), uintptr(len(descriptors)), 0) + var r0 uintptr + if runtime.GOARCH == "arm" { + r0, _, _ = syscall.Syscall6(procCreateSandboxLayer.Addr(), 6, uintptr((*info).Flavour), + uintptr(unsafe.Pointer((*info).HomeDirp)), uintptr(unsafe.Pointer(id)), + uintptr(unsafe.Pointer(parent)), uintptr(unsafe.Pointer(_p2)), uintptr(len(descriptors))) + } else { + r0, _, _ = syscall.Syscall6(procCreateSandboxLayer.Addr(), 5, uintptr(unsafe.Pointer(info)), + uintptr(unsafe.Pointer(id)), uintptr(unsafe.Pointer(parent)), uintptr(unsafe.Pointer(_p2)), + uintptr(len(descriptors)), 0) + } if int32(r0) < 0 { hr = syscall.Errno(win32FromHresult(r0)) } @@ -232,7 +267,14 @@ func _expandSandboxSize(info *driverInfo, id *uint16, size uint64) (hr error) { if hr = procExpandSandboxSize.Find(); hr != nil { return } - r0, _, _ := syscall.Syscall(procExpandSandboxSize.Addr(), 3, uintptr(unsafe.Pointer(info)), uintptr(unsafe.Pointer(id)), uintptr(size)) + var r0 uintptr + if runtime.GOARCH == "arm" { + r0, _, _ = syscall.Syscall6(procExpandSandboxSize.Addr(), 4, uintptr((*info).Flavour), + uintptr(unsafe.Pointer((*info).HomeDirp)), uintptr(unsafe.Pointer(id)), uintptr(size), 0, 0) + } else { + r0, _, _ = syscall.Syscall(procExpandSandboxSize.Addr(), 3, uintptr(unsafe.Pointer(info)), + uintptr(unsafe.Pointer(id)), uintptr(size)) + } if int32(r0) < 0 { hr = syscall.Errno(win32FromHresult(r0)) } @@ -252,7 +294,14 @@ func _deactivateLayer(info *driverInfo, id *uint16) (hr error) { if hr = procDeactivateLayer.Find(); hr != nil { return } - r0, _, _ := syscall.Syscall(procDeactivateLayer.Addr(), 2, uintptr(unsafe.Pointer(info)), uintptr(unsafe.Pointer(id)), 0) + var r0 uintptr + if runtime.GOARCH == "arm" { + r0, _, _ = syscall.Syscall(procDeactivateLayer.Addr(), 3, uintptr((*info).Flavour), + uintptr(unsafe.Pointer((*info).HomeDirp)), uintptr(unsafe.Pointer(id))) + } else { + r0, _, _ = syscall.Syscall(procDeactivateLayer.Addr(), 2, uintptr(unsafe.Pointer(info)), + uintptr(unsafe.Pointer(id)), 0) + } if int32(r0) < 0 { hr = syscall.Errno(win32FromHresult(r0)) } @@ -272,7 +321,14 @@ func _destroyLayer(info *driverInfo, id *uint16) (hr error) { if hr = procDestroyLayer.Find(); hr != nil { return } - r0, _, _ := syscall.Syscall(procDestroyLayer.Addr(), 2, uintptr(unsafe.Pointer(info)), uintptr(unsafe.Pointer(id)), 0) + var r0 uintptr + if runtime.GOARCH == "arm" { + r0, _, _ = syscall.Syscall(procDestroyLayer.Addr(), 3, uintptr((*info).Flavour), + uintptr(unsafe.Pointer((*info).HomeDirp)), uintptr(unsafe.Pointer(id))) + } else { + r0, _, _ = syscall.Syscall(procDestroyLayer.Addr(), 2, uintptr(unsafe.Pointer(info)), + uintptr(unsafe.Pointer(id)), 0) + } if int32(r0) < 0 { hr = syscall.Errno(win32FromHresult(r0)) } @@ -301,7 +357,16 @@ func _exportLayer(info *driverInfo, id *uint16, path *uint16, descriptors []WC_L if hr = procExportLayer.Find(); hr != nil { return } - r0, _, _ := syscall.Syscall6(procExportLayer.Addr(), 5, uintptr(unsafe.Pointer(info)), uintptr(unsafe.Pointer(id)), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(_p2)), uintptr(len(descriptors)), 0) + var r0 uintptr + if runtime.GOARCH == "arm" { + r0, _, _ = syscall.Syscall6(procExportLayer.Addr(), 6, uintptr((*info).Flavour), + uintptr(unsafe.Pointer((*info).HomeDirp)), uintptr(unsafe.Pointer(id)), + uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(_p2)), uintptr(len(descriptors))) + } else { + r0, _, _ = syscall.Syscall6(procExportLayer.Addr(), 5, uintptr(unsafe.Pointer(info)), + uintptr(unsafe.Pointer(id)), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(_p2)), + uintptr(len(descriptors)), 0) + } if int32(r0) < 0 { hr = syscall.Errno(win32FromHresult(r0)) } @@ -321,7 +386,15 @@ func _getLayerMountPath(info *driverInfo, id *uint16, length *uintptr, buffer *u if hr = procGetLayerMountPath.Find(); hr != nil { return } - r0, _, _ := syscall.Syscall6(procGetLayerMountPath.Addr(), 4, uintptr(unsafe.Pointer(info)), uintptr(unsafe.Pointer(id)), uintptr(unsafe.Pointer(length)), uintptr(unsafe.Pointer(buffer)), 0, 0) + var r0 uintptr + if runtime.GOARCH == "arm" { + r0, _, _ = syscall.Syscall6(procGetLayerMountPath.Addr(), 5, uintptr((*info).Flavour), + uintptr(unsafe.Pointer((*info).HomeDirp)), uintptr(unsafe.Pointer(id)), + uintptr(unsafe.Pointer(length)), uintptr(unsafe.Pointer(buffer)), 0) + } else { + r0, _, _ = syscall.Syscall6(procGetLayerMountPath.Addr(), 4, uintptr(unsafe.Pointer(info)), + uintptr(unsafe.Pointer(id)), uintptr(unsafe.Pointer(length)), uintptr(unsafe.Pointer(buffer)), 0, 0) + } if int32(r0) < 0 { hr = syscall.Errno(win32FromHresult(r0)) } @@ -361,7 +434,16 @@ func _importLayer(info *driverInfo, id *uint16, path *uint16, descriptors []WC_L if hr = procImportLayer.Find(); hr != nil { return } - r0, _, _ := syscall.Syscall6(procImportLayer.Addr(), 5, uintptr(unsafe.Pointer(info)), uintptr(unsafe.Pointer(id)), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(_p2)), uintptr(len(descriptors)), 0) + var r0 uintptr + if runtime.GOARCH == "arm" { + r0, _, _ = syscall.Syscall6(procImportLayer.Addr(), 6, uintptr((*info).Flavour), + uintptr(unsafe.Pointer((*info).HomeDirp)), uintptr(unsafe.Pointer(id)), + uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(_p2)), uintptr(len(descriptors))) + } else { + r0, _, _ = syscall.Syscall6(procImportLayer.Addr(), 5, uintptr(unsafe.Pointer(info)), + uintptr(unsafe.Pointer(id)), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(_p2)), + uintptr(len(descriptors)), 0) + } if int32(r0) < 0 { hr = syscall.Errno(win32FromHresult(r0)) } @@ -381,7 +463,15 @@ func _layerExists(info *driverInfo, id *uint16, exists *uint32) (hr error) { if hr = procLayerExists.Find(); hr != nil { return } - r0, _, _ := syscall.Syscall(procLayerExists.Addr(), 3, uintptr(unsafe.Pointer(info)), uintptr(unsafe.Pointer(id)), uintptr(unsafe.Pointer(exists))) + var r0 uintptr + if runtime.GOARCH == "arm" { + r0, _, _ = syscall.Syscall6(procLayerExists.Addr(), 4, uintptr((*info).Flavour), + uintptr(unsafe.Pointer((*info).HomeDirp)), uintptr(unsafe.Pointer(id)), + uintptr(unsafe.Pointer(exists)), 0, 0) + } else { + r0, _, _ = syscall.Syscall(procLayerExists.Addr(), 3, uintptr(unsafe.Pointer(info)), + uintptr(unsafe.Pointer(id)), uintptr(unsafe.Pointer(exists))) + } if int32(r0) < 0 { hr = syscall.Errno(win32FromHresult(r0)) } @@ -425,7 +515,15 @@ func _prepareLayer(info *driverInfo, id *uint16, descriptors []WC_LAYER_DESCRIPT if hr = procPrepareLayer.Find(); hr != nil { return } - r0, _, _ := syscall.Syscall6(procPrepareLayer.Addr(), 4, uintptr(unsafe.Pointer(info)), uintptr(unsafe.Pointer(id)), uintptr(unsafe.Pointer(_p1)), uintptr(len(descriptors)), 0, 0) + var r0 uintptr + if runtime.GOARCH == "arm" { + r0, _, _ = syscall.Syscall6(procPrepareLayer.Addr(), 5, uintptr((*info).Flavour), + uintptr(unsafe.Pointer((*info).HomeDirp)), uintptr(unsafe.Pointer(id)), + uintptr(unsafe.Pointer(_p1)), uintptr(len(descriptors)), 0) + } else { + r0, _, _ = syscall.Syscall6(procPrepareLayer.Addr(), 4, uintptr(unsafe.Pointer(info)), + uintptr(unsafe.Pointer(id)), uintptr(unsafe.Pointer(_p1)), uintptr(len(descriptors)), 0, 0) + } if int32(r0) < 0 { hr = syscall.Errno(win32FromHresult(r0)) } @@ -445,7 +543,14 @@ func _unprepareLayer(info *driverInfo, id *uint16) (hr error) { if hr = procUnprepareLayer.Find(); hr != nil { return } - r0, _, _ := syscall.Syscall(procUnprepareLayer.Addr(), 2, uintptr(unsafe.Pointer(info)), uintptr(unsafe.Pointer(id)), 0) + var r0 uintptr + if runtime.GOARCH == "arm" { + r0, _, _ = syscall.Syscall(procUnprepareLayer.Addr(), 3, uintptr((*info).Flavour), + uintptr(unsafe.Pointer((*info).HomeDirp)), uintptr(unsafe.Pointer(id))) + } else { + r0, _, _ = syscall.Syscall(procUnprepareLayer.Addr(), 2, uintptr(unsafe.Pointer(info)), + uintptr(unsafe.Pointer(id)), 0) + } if int32(r0) < 0 { hr = syscall.Errno(win32FromHresult(r0)) } @@ -509,7 +614,16 @@ func _importLayerBegin(info *driverInfo, id *uint16, descriptors []WC_LAYER_DESC if hr = procImportLayerBegin.Find(); hr != nil { return } - r0, _, _ := syscall.Syscall6(procImportLayerBegin.Addr(), 5, uintptr(unsafe.Pointer(info)), uintptr(unsafe.Pointer(id)), uintptr(unsafe.Pointer(_p1)), uintptr(len(descriptors)), uintptr(unsafe.Pointer(context)), 0) + var r0 uintptr + if runtime.GOARCH == "arm" { + r0, _, _ = syscall.Syscall6(procImportLayerBegin.Addr(), 6, uintptr((*info).Flavour), + uintptr(unsafe.Pointer((*info).HomeDirp)), uintptr(unsafe.Pointer(id)), uintptr(unsafe.Pointer(_p1)), + uintptr(len(descriptors)), uintptr(unsafe.Pointer(context))) + } else { + r0, _, _ = syscall.Syscall6(procImportLayerBegin.Addr(), 5, uintptr(unsafe.Pointer(info)), + uintptr(unsafe.Pointer(id)), uintptr(unsafe.Pointer(_p1)), uintptr(len(descriptors)), + uintptr(unsafe.Pointer(context)), 0) + } if int32(r0) < 0 { hr = syscall.Errno(win32FromHresult(r0)) } @@ -579,7 +693,16 @@ func _exportLayerBegin(info *driverInfo, id *uint16, descriptors []WC_LAYER_DESC if hr = procExportLayerBegin.Find(); hr != nil { return } - r0, _, _ := syscall.Syscall6(procExportLayerBegin.Addr(), 5, uintptr(unsafe.Pointer(info)), uintptr(unsafe.Pointer(id)), uintptr(unsafe.Pointer(_p1)), uintptr(len(descriptors)), uintptr(unsafe.Pointer(context)), 0) + var r0 uintptr + if runtime.GOARCH == "arm" { + r0, _, _ = syscall.Syscall6(procExportLayerBegin.Addr(), 6, uintptr((*info).Flavour), + uintptr(unsafe.Pointer((*info).HomeDirp)), uintptr(unsafe.Pointer(id)), uintptr(unsafe.Pointer(_p1)), + uintptr(len(descriptors)), uintptr(unsafe.Pointer(context))) + } else { + r0, _, _ = syscall.Syscall6(procExportLayerBegin.Addr(), 5, uintptr(unsafe.Pointer(info)), + uintptr(unsafe.Pointer(id)), uintptr(unsafe.Pointer(_p1)), uintptr(len(descriptors)), + uintptr(unsafe.Pointer(context)), 0) + } if int32(r0) < 0 { hr = syscall.Errno(win32FromHresult(r0)) } diff --git a/vendor/github.com/containerd/containerd/platforms/cpuinfo.go b/vendor/github.com/containerd/containerd/platforms/cpuinfo.go index a5c5ab42b91fe..bc295e9518ecb 100644 --- a/vendor/github.com/containerd/containerd/platforms/cpuinfo.go +++ b/vendor/github.com/containerd/containerd/platforms/cpuinfo.go @@ -21,6 +21,9 @@ import ( "os" "runtime" "strings" + "strconv" + + _ "unsafe" "github.com/containerd/containerd/errdefs" "github.com/containerd/containerd/log" @@ -30,6 +33,9 @@ import ( // Present the ARM instruction set architecture, eg: v7, v8 var cpuVariant string +//go:linkname runtimeGoArm runtime.goarm +var runtimeGoArm uint8 + func init() { if isArmArch(runtime.GOARCH) { cpuVariant = getCPUVariant() @@ -74,10 +80,16 @@ func getCPUInfo(pattern string) (info string, err error) { } func getCPUVariant() string { - variant, err := getCPUInfo("Cpu architecture") - if err != nil { - log.L.WithError(err).Error("failure getting variant") - return "" + var variant string + if runtime.GOOS == "windows" { + variant = strconv.Itoa(int(runtimeGoArm)) + } else { + var err error + variant, err = getCPUInfo("Cpu architecture") + if err != nil { + log.L.WithError(err).Error("failure getting variant") + return "" + } } switch variant {