Creating slice from C-array

Might not be lined up correctly? Weird output data
in the second CPU.
This commit is contained in:
stuart nelson 2016-09-17 14:05:36 +02:00
parent 03da1ea516
commit 1b7a18c271

View File

@ -18,6 +18,7 @@ package collector
import ( import (
"errors" "errors"
"fmt" "fmt"
"unsafe"
"github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus"
) )
@ -175,9 +176,11 @@ func (c *statCollector) Update(ch chan<- prometheus.Metric) (err error) {
if C.getCPUTimes(&ncpu, &cpuTimesC, &cpuTimesLength) == -1 { if C.getCPUTimes(&ncpu, &cpuTimesC, &cpuTimesLength) == -1 {
return errors.New("could not retrieve CPU times") return errors.New("could not retrieve CPU times")
} }
// TODO: Remember to free variables
// defer C.freeCPUTimes(cpuTimesC) // defer C.freeCPUTimes(cpuTimesC)
fmt.Println(cpuTimesC)
fmt.Println(uint64(cpuTimesLength)) cpuTimes := (*[1 << 30]C.struct_kinfo_cputime)(unsafe.Pointer(&cpuTimesC))[:ncpu:ncpu]
fmt.Println(cpuTimes)
return errors.New("early kill") return errors.New("early kill")
if cpuTimesLength > maxCPUTimesLen { if cpuTimesLength > maxCPUTimesLen {
return errors.New("more CPU's than MAXCPU?") return errors.New("more CPU's than MAXCPU?")