1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- // +build !windows
- package du
- import "syscall"
- // DiskUsage contains usage data and provides user-friendly access methods
- type DiskUsage struct {
- stat *syscall.Statfs_t
- }
- // NewDiskUsages returns an object holding the disk usage of volumePath
- // or nil in case of error (invalid path, etc)
- func NewDiskUsage(volumePath string) *DiskUsage {
- var stat syscall.Statfs_t
- syscall.Statfs(volumePath, &stat)
- return &DiskUsage{&stat}
- }
- // Free returns total free bytes on file system
- func (du *DiskUsage) Free() uint64 {
- return du.stat.Bfree * uint64(du.stat.Bsize)
- }
- // Available return total available bytes on file system to an unprivileged user
- func (du *DiskUsage) Available() uint64 {
- return uint64(du.stat.Bavail) * uint64(du.stat.Bsize)
- }
- // Size returns total size of the file system
- func (du *DiskUsage) Size() uint64 {
- return uint64(du.stat.Blocks) * uint64(du.stat.Bsize)
- }
- // Used returns total bytes used in file system
- func (du *DiskUsage) Used() uint64 {
- return du.Size() - du.Free()
- }
- // Usage returns percentage of use on the file system
- func (du *DiskUsage) Usage() float32 {
- return float32(du.Used()) / float32(du.Size())
- }
|