21 lines
474 B
Go
21 lines
474 B
Go
//go:build windows
|
|
|
|
package main
|
|
|
|
import "golang.org/x/sys/windows"
|
|
|
|
func processCPUSeconds() (float64, bool) {
|
|
handle, err := windows.GetCurrentProcess()
|
|
if err != nil {
|
|
return 0, false
|
|
}
|
|
var creation, exit, kernel, user windows.Filetime
|
|
if err := windows.GetProcessTimes(handle, &creation, &exit, &kernel, &user); err != nil {
|
|
return 0, false
|
|
}
|
|
ns := kernel.Nanoseconds() + user.Nanoseconds()
|
|
if ns < 0 {
|
|
return 0, false
|
|
}
|
|
return float64(ns) / 1e9, true
|
|
}
|