Synopsis

Description

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 the
superuser can use kstat_write().

Return Values

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.

Errors

The kstat_read() and kstat_write() functions will fail if:

EACCES

An attempt was made to write to a non-writable kstat.

EAGAIN

The kstat was temporarily unavailable for reading or writing.

EINVAL

An attempt was made to write data to a kstat, but the number of elements or the data size does not match.

ENOMEM

Insufficient storage space is available.

ENXIO

The given kstat could not be located for reading or writing.

EOVERFLOW

The data for the given kstat was too large to be stored in the structure.

EPERM

An attempt was made to write to a kstat, but {PRIV_SYS_CONFIG} was not asserted in the effective privilege set.