cc [ flag... ] file... -lkstat [ library... ]
#include <kstat.h>
kid_t kstat_read(kstat_ctl_t *kc, kstat_t *ksp, void *buf);
kid_t kstat_write(kstat_ctl_t *kc, kstat_t *ksp, void *buf);
kstat_read() gets data from the kernel for the kstat pointed to by ksp. ksp->ks_data is automatically allocated (or reallocated) to be large enough to hold all of the data. ksp->ks_ndata is set to the number of data fields, ksp->ks_data_size is set to the total size of the data, and ksp->ks_snaptime is set to the high-resolution time at which the data snapshot was taken. If buf is non-NULL , the data is copied from ksp->ks_data into buf.
kstat_write() writes data from buf, or from ksp->ks_data if buf is NULL , to the corresponding kstat in the kernel. Only the superuser can use kstat_write().