gopkg.in/docker/docker.v20@v20.10.27/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  }