fs.go 469 B

1234567891011121314151617181920212223
  1. package proc
  2. import "syscall"
  3. type FSStat struct {
  4. CapacityBytes uint64
  5. UsedBytes uint64
  6. ReservedBytes uint64
  7. }
  8. func StatFS(dirPath string) (FSStat, error) {
  9. var s syscall.Statfs_t
  10. if err := syscall.Statfs(dirPath, &s); err != nil {
  11. return FSStat{}, err
  12. }
  13. res := FSStat{
  14. CapacityBytes: s.Blocks * uint64(s.Bsize),
  15. UsedBytes: (s.Blocks - s.Bfree) * uint64(s.Bsize),
  16. ReservedBytes: (s.Bfree - s.Bavail) * uint64(s.Bsize),
  17. }
  18. return res, nil
  19. }