//go:build darwin || freebsd || openbsd || netbsd

package sysutil

import (
	"bytes"
	"encoding/binary"
	"syscall"
	"time"
)

func init() {
	// get boot time
	res, err := syscall.Sysctl("kern.boottime")
	if err != nil {
		btime = time.Now()
		return
	}
	// decode
	var t timeval
	if err = binary.Read(bytes.NewBuffer([]byte(res)), binary.LittleEndian, &t); err != nil {
		btime = time.Now()
		return
	}
	btime = time.Unix(int64(t.Sec), int64(t.Usec))
}
