usage_posix.go 471 B

1234567891011121314151617181920212223242526
  1. // +build !windows
  2. package sysinfo
  3. import (
  4. "syscall"
  5. "time"
  6. )
  7. func timevalToDuration(tv syscall.Timeval) time.Duration {
  8. return time.Duration(tv.Nano()) * time.Nanosecond
  9. }
  10. // GetUsage gathers process times.
  11. func GetUsage() (Usage, error) {
  12. ru := syscall.Rusage{}
  13. err := syscall.Getrusage(syscall.RUSAGE_SELF, &ru)
  14. if err != nil {
  15. return Usage{}, err
  16. }
  17. return Usage{
  18. System: timevalToDuration(ru.Stime),
  19. User: timevalToDuration(ru.Utime),
  20. }, nil
  21. }