Add ProcsCreated stat for openbsd

This commit is contained in:
James Bebbington 2020-09-12 12:35:21 +10:00
parent 28b2246b5b
commit 79e9a07263
3 changed files with 36 additions and 0 deletions

View File

@ -37,6 +37,12 @@ func AvgWithContext(ctx context.Context) (*AvgStat, error) {
return ret, nil
}
type forkstat struct {
forks int
vforks int
__tforks int
}
// Misc returns miscellaneous host-wide statistics.
// darwin use ps command to get process running/blocked count.
// Almost same as Darwin implementation, but state is different.
@ -64,5 +70,11 @@ func MiscWithContext(ctx context.Context) (*MiscStat, error) {
}
}
f, err := getForkStat()
if err != nil {
return nil, err
}
ret.ProcsCreated = f.forks
return &ret, nil
}

7
load/load_freebsd.go Normal file
View File

@ -0,0 +1,7 @@
// +build freebsd
package load
func getForkStat() (forkstat, error) {
return forkstat{}, nil
}

17
load/load_openbsd.go Normal file
View File

@ -0,0 +1,17 @@
// +build openbsd
package load
import (
"unsafe"
"golang.org/x/sys/unix"
)
func getForkStat() (forkstat, error) {
b, err := unix.SysctlRaw("kern.forkstat")
if err != nil {
return forkstat{}, err
}
return *(*forkstat)(unsafe.Pointer((&b[0]))), nil
}