gopkg.in/dedis/onet.v2@v2.0.0-20181115163211-c8f3724038a7/simul/monitor/rtime_windows.go (about)

     1  // +build windows
     2  
     3  package monitor
     4  
     5  import (
     6  	"syscall"
     7  
     8  	"gopkg.in/dedis/onet.v2/log"
     9  )
    10  
    11  // Returns the system and the user CPU time used by the current process so far.
    12  func getRTime() (tSys, tUsr float64) {
    13  	var creationTime, exitTime, kernelTime, userTime syscall.Filetime
    14  	hProcess, _ := syscall.GetCurrentProcess()
    15  	if err := syscall.GetProcessTimes(hProcess, &creationTime, &exitTime, &kernelTime, &userTime); err != nil {
    16  		log.Error("Couldn't get rusage time:", err)
    17  		return -1, -1
    18  	}
    19  
    20  	sys := int64(kernelTime.HighDateTime)<<32 + int64(kernelTime.LowDateTime)
    21  	usr := int64(userTime.HighDateTime)<<32 + int64(userTime.LowDateTime)
    22  	return (float64(sys) / 10000000.0), (float64(usr) / 10000000.0)
    23  }