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

NAME


kstat_read, kstat_write - read or write kstat data

LIBRARY


Kernel Statistics Library (libkstat, -lkstat)

SYNOPSIS


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

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 a privileged
user 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.

FILES


/dev/kstat kernel statistics driver character device

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

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

INTERFACE STABILITY


Committed

MT-LEVEL
Unsafe

SEE ALSO


kstat(3KSTAT), kstat_chain_update(3KSTAT), kstat_lookup(3KSTAT),
kstat_open(3KSTAT), attributes(7), privileges(7)

illumos November 29, 2021 illumos