github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/engine/pkg/devicemapper/ioctl.go (about) 1 //go:build linux && cgo 2 // +build linux,cgo 3 4 package devicemapper // import "github.com/docker/docker/pkg/devicemapper" 5 6 import ( 7 "unsafe" 8 9 "golang.org/x/sys/unix" 10 ) 11 12 func ioctlBlkGetSize64(fd uintptr) (int64, error) { 13 var size int64 14 if _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, BlkGetSize64, uintptr(unsafe.Pointer(&size))); err != 0 { 15 return 0, err 16 } 17 return size, nil 18 } 19 20 func ioctlBlkDiscard(fd uintptr, offset, length uint64) error { 21 var r [2]uint64 22 r[0] = offset 23 r[1] = length 24 25 if _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, BlkDiscard, uintptr(unsafe.Pointer(&r[0]))); err != 0 { 26 return err 27 } 28 return nil 29 }