KSTAT_READ(3KSTAT) Kernel Statistics Library Functions KSTAT_READ(3KSTAT)

kstat_read, kstat_write
read or write kstat data

Kernel Statistics Library (libkstat, -lkstat)

#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);

The kstat_read() function gets data from the kernel for the kstat pointed to by ksp. The ‘ksp->ks_data’ field is automatically allocated (or reallocated) to be large enough to hold all of the data. The ‘ksp->ks_ndata’ field 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’ to buf.

The kstat_write() function writes data from buf, or from ‘ksp->ks_data’ if buf is NULL to the corresponding kstat in the kernel. Only a privileged user can use kstat_write().

Upon successful completion, kstat_read() and kstat_write() return the current kstat chain ID (KCID). Otherwise, they return -1 and set errno to indicate the error.

/dev/kstat
kernel statistics driver character device

The kstat_read() and kstat_write() functions will fail if:
An attempt was made to write to a non-writable kstat.
The kstat was temporarily unavailable for reading or writing.
An attempt was made to write data to a kstat, but the number of elements or the data size does not match.
Insufficient storage space is available.
The given kstat could not be located for reading or writing.
 
An attempt was made to write to a kstat, but {PRIV_SYS_CONFIG} was not asserted in the effective privilege set.

Committed

Unsafe

kstat(3KSTAT), kstat_chain_update(3KSTAT), kstat_lookup(3KSTAT), kstat_open(3KSTAT), attributes(7), privileges(7)
November 29, 2021 OmniOS