Slide 8
Slide 8 text
How to use syscall
// freebsd MIB
mib := []int32{CTLKern, KernDevstat, KernDevstatAll}
// invoke syscall
_, _, err = syscall.Syscall6(
syscall.SYS___SYSCTL,
uintptr(unsafe.Pointer(&mib[0])),
uintptr(miblen),
uintptr(unsafe.Pointer(&buf[0])),
uintptr(unsafe.Pointer(&length)),
0,
0)
// parse bytes to Devstat
var ds Devstat
br := bytes.NewReader(buf)
Read(br, binary.LittleEndian, &ds)