github.com/newrelic/go-agent@v3.26.0+incompatible/internal/sysinfo/usage_windows.go (about) 1 // Copyright 2020 New Relic Corporation. All rights reserved. 2 // SPDX-License-Identifier: Apache-2.0 3 4 package sysinfo 5 6 import ( 7 "syscall" 8 "time" 9 ) 10 11 func filetimeToDuration(ft *syscall.Filetime) time.Duration { 12 ns := ft.Nanoseconds() 13 return time.Duration(ns) 14 } 15 16 // GetUsage gathers process times. 17 func GetUsage() (Usage, error) { 18 var creationTime syscall.Filetime 19 var exitTime syscall.Filetime 20 var kernelTime syscall.Filetime 21 var userTime syscall.Filetime 22 23 handle, err := syscall.GetCurrentProcess() 24 if err != nil { 25 return Usage{}, err 26 } 27 28 err = syscall.GetProcessTimes(handle, &creationTime, &exitTime, &kernelTime, &userTime) 29 if err != nil { 30 return Usage{}, err 31 } 32 33 return Usage{ 34 System: filetimeToDuration(&kernelTime), 35 User: filetimeToDuration(&userTime), 36 }, nil 37 }