ioctl.go 552 B

123456789101112131415161718192021222324252627
  1. // +build linux,cgo
  2. package devicemapper
  3. import (
  4. "syscall"
  5. "unsafe"
  6. )
  7. func ioctlBlkGetSize64(fd uintptr) (int64, error) {
  8. var size int64
  9. if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, BlkGetSize64, uintptr(unsafe.Pointer(&size))); err != 0 {
  10. return 0, err
  11. }
  12. return size, nil
  13. }
  14. func ioctlBlkDiscard(fd uintptr, offset, length uint64) error {
  15. var r [2]uint64
  16. r[0] = offset
  17. r[1] = length
  18. if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, BlkDiscard, uintptr(unsafe.Pointer(&r[0]))); err != 0 {
  19. return err
  20. }
  21. return nil
  22. }