loop_wrapper.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // +build linux,cgo
  2. package loopback
  3. /*
  4. #include <linux/loop.h> // FIXME: present only for defines, maybe we can remove it?
  5. #ifndef LOOP_CTL_GET_FREE
  6. #define LOOP_CTL_GET_FREE 0x4C82
  7. #endif
  8. #ifndef LO_FLAGS_PARTSCAN
  9. #define LO_FLAGS_PARTSCAN 8
  10. #endif
  11. */
  12. import "C"
  13. type loopInfo64 struct {
  14. loDevice uint64 /* ioctl r/o */
  15. loInode uint64 /* ioctl r/o */
  16. loRdevice uint64 /* ioctl r/o */
  17. loOffset uint64
  18. loSizelimit uint64 /* bytes, 0 == max available */
  19. loNumber uint32 /* ioctl r/o */
  20. loEncryptType uint32
  21. loEncryptKeySize uint32 /* ioctl w/o */
  22. loFlags uint32 /* ioctl r/o */
  23. loFileName [LoNameSize]uint8
  24. loCryptName [LoNameSize]uint8
  25. loEncryptKey [LoKeySize]uint8 /* ioctl w/o */
  26. loInit [2]uint64
  27. }
  28. // IOCTL consts
  29. const (
  30. LoopSetFd = C.LOOP_SET_FD
  31. LoopCtlGetFree = C.LOOP_CTL_GET_FREE
  32. LoopGetStatus64 = C.LOOP_GET_STATUS64
  33. LoopSetStatus64 = C.LOOP_SET_STATUS64
  34. LoopClrFd = C.LOOP_CLR_FD
  35. LoopSetCapacity = C.LOOP_SET_CAPACITY
  36. )
  37. // LOOP consts.
  38. const (
  39. LoFlagsAutoClear = C.LO_FLAGS_AUTOCLEAR
  40. LoFlagsReadOnly = C.LO_FLAGS_READ_ONLY
  41. LoFlagsPartScan = C.LO_FLAGS_PARTSCAN
  42. LoKeySize = C.LO_KEY_SIZE
  43. LoNameSize = C.LO_NAME_SIZE
  44. )