17 lines
361 B
Go
17 lines
361 B
Go
//go:build !windows
|
|
|
|
package runtime
|
|
|
|
import "syscall"
|
|
|
|
func workspaceDiskPercent(workspaceRoot string) (float64, error) {
|
|
var stat syscall.Statfs_t
|
|
if err := syscall.Statfs(workspaceRoot, &stat); err != nil {
|
|
return 0, err
|
|
}
|
|
if stat.Blocks == 0 {
|
|
return 0, syscall.EINVAL
|
|
}
|
|
return 100 * float64(stat.Blocks-stat.Bavail) / float64(stat.Blocks), nil
|
|
}
|