From 2d2db4203f491891dc7c25d190d800326f2e6332 Mon Sep 17 00:00:00 2001 From: Rajkumar Gupta Date: Mon, 5 Jun 2017 14:18:20 +0530 Subject: [PATCH] Change to adapt current cpu.Times API for per cpu and core time stats --- cpu/cpu_windows.go | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/cpu/cpu_windows.go b/cpu/cpu_windows.go index af67905..01431a4 100644 --- a/cpu/cpu_windows.go +++ b/cpu/cpu_windows.go @@ -45,8 +45,11 @@ type Win32_PerfFormattedData_PerfOS_System struct { // TODO: Get percpu func Times(percpu bool) ([]TimesStat, error) { - var ret []TimesStat + if percpu { + return perCPUTimes() + } + var ret []TimesStat var lpIdleTime common.FILETIME var lpKernelTime common.FILETIME var lpUserTime common.FILETIME @@ -122,3 +125,22 @@ func ProcInfo() ([]Win32_PerfFormattedData_PerfOS_System, error) { err := wmi.Query(q, &ret) return ret, err } + +func perCPUTimes() ([]TimesStat, error) { + var ret []TimesStat + stats, err := PerfInfo() + if err != nil { + return nil, err + } + for _, v := range stats { + c := TimesStat{ + CPU: v.Name, + User: float64(v.PercentUserTime), + System: float64(v.PercentPrivilegedTime), + Idle: float64(v.PercentIdleTime), + Irq: float64(v.PercentInterruptTime), + } + ret = append(ret, c) + } + return ret, nil +}