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