diff --git a/collector/loadavg_freebsd.go b/collector/loadavg_freebsd.go new file mode 100644 index 00000000..b490513f --- /dev/null +++ b/collector/loadavg_freebsd.go @@ -0,0 +1,27 @@ +// +build !noloadavg + +package collector + +import ( + "unsafe" + + "golang.org/x/sys/unix" +) + +func getLoad() ([]float64, error) { + type loadavg struct { + load [3]uint32 + scale int + } + b, err := unix.SysctlRaw("vm.loadavg") + if err != nil { + return nil, err + } + load := *(*loadavg)(unsafe.Pointer((&b[0]))) + scale := float64(load.scale) + return []float64{ + float64(load.load[0]) / scale, + float64(load.load[1]) / scale, + float64(load.load[2]) / scale, + }, nil +} diff --git a/collector/loadavg_unix.go b/collector/loadavg_unix.go index f121a657..7641ceaf 100644 --- a/collector/loadavg_unix.go +++ b/collector/loadavg_unix.go @@ -11,7 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -// +build darwin dragonfly freebsd netbsd openbsd solaris +// +build darwin dragonfly netbsd openbsd solaris // +build !noloadavg package collector