// +build darwin freebsd openbsd netbsd | |
package sysutil | |
import ( | |
"bytes" | |
"encoding/binary" | |
"syscall" | |
"time" | |
) | |
func init() { | |
var err error | |
// get boot time | |
res, err := syscall.Sysctl("kern.boottime") | |
if err != nil { | |
btime = time.Now() | |
return | |
} | |
// decode | |
var t timeval | |
err = binary.Read(bytes.NewBuffer([]byte(res)), binary.LittleEndian, &t) | |
if err != nil { | |
btime = time.Now() | |
return | |
} | |
btime = time.Unix(int64(t.Sec), int64(t.Usec)) | |
} |