sys.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package devmapper
  2. import (
  3. "os"
  4. "os/exec"
  5. "syscall"
  6. )
  7. type (
  8. sysStatT syscall.Stat_t
  9. sysErrno syscall.Errno
  10. osFile struct{ *os.File }
  11. )
  12. var (
  13. sysMount = syscall.Mount
  14. sysUnmount = syscall.Unmount
  15. sysCloseOnExec = syscall.CloseOnExec
  16. sysSyscall = syscall.Syscall
  17. osOpenFile = func(name string, flag int, perm os.FileMode) (*osFile, error) {
  18. f, err := os.OpenFile(name, flag, perm)
  19. return &osFile{File: f}, err
  20. }
  21. osOpen = func(name string) (*osFile, error) { f, err := os.Open(name); return &osFile{File: f}, err }
  22. osNewFile = os.NewFile
  23. osCreate = os.Create
  24. osStat = os.Stat
  25. osIsNotExist = os.IsNotExist
  26. osIsExist = os.IsExist
  27. osMkdirAll = os.MkdirAll
  28. osRemoveAll = os.RemoveAll
  29. osRename = os.Rename
  30. osReadlink = os.Readlink
  31. execRun = func(name string, args ...string) error { return exec.Command(name, args...).Run() }
  32. )
  33. const (
  34. sysMsMgcVal = syscall.MS_MGC_VAL
  35. sysMsRdOnly = syscall.MS_RDONLY
  36. sysEInval = syscall.EINVAL
  37. sysSysIoctl = syscall.SYS_IOCTL
  38. sysEBusy = syscall.EBUSY
  39. osORdOnly = os.O_RDONLY
  40. osORdWr = os.O_RDWR
  41. osOCreate = os.O_CREATE
  42. osModeDevice = os.ModeDevice
  43. )
  44. func toSysStatT(i interface{}) *sysStatT {
  45. return (*sysStatT)(i.(*syscall.Stat_t))
  46. }