KSTAT_CHAIN_UPDATE(3KSTAT)               Kernel Statistics Library Functions
NAME
     kstat_chain_update - update the kstat header chain
Library     Kernel Statistics Library (libkstat, -lkstat)
SYNOPSIS
     #include <kstat.h>     kid_t     kstat_chain_update(
kstat_ctl_t *kc);
DESCRIPTION
     The 
kstat_chain_update() function brings the user's kstat header chain
     in sync with that of the kernel.  The kstat chain is a linked list of
     kstat headers (
kstat_t's) pointed to by `kc->kc_chain', which is
     initialized by 
kstat_open(3KSTAT).  This chain constitutes a list of
     all kstats currently in the system.
     During normal operation, the kernel creates new kstats and deletes old
     ones as various device instances are added and removed, thereby causing
     the user's copy of the kstat chain to become out of date.  The     
kstat_chain_update() function detects this condition by comparing the
     kernel's current kstat chain ID (KCID), which is incremented every time
     the kstat chain changes, to the user's KCID, `kc->kc_chain_id'.  If the
     KCIDs match, 
kstat_chain_update() does nothing.  Otherwise, it deletes
     any invalid kstat headers from the user's kstat chain, adds any new
     ones, and sets `kc->kc_chain_id' to the new KCID.  All other kstat
     headers in the user's kstat chain are unmodified.
     Because of the deletion process, any 
kstat_t structures retrieved by
     the 
kstat_lookup(3KSTAT) function or data pointers obtained through the     
kstat_data_lookup(3KSTAT) function are invalidated by a call to     
kstat_chain_update().  New lookup calls must be made to obtain fresh
     structures after each chain update.
RETURN VALUES
     Upon successful completion, 
kstat_chain_update() returns the new KCID
     if the kstat chain has changed and 0 if it has not changed.  Otherwise,
     it returns 
-1 and sets 
errno to indicate the error.
FILES
     /dev/kstat                        kernel statistics driver character
                                       device
ERRORS
     The 
kstat_chain_update() function will fail if:
     EAGAIN             The kstat was temporarily unavailable for reading or
                        writing.
     ENOMEM             Insufficient storage space is available.
     ENXIO              The given kstat could not be located for reading.
     EOVERFLOW          The data for the given kstat was too large to be
                        stored in the structure.
INTERFACE STABILITY
     CommittedMT-LEVEL     UnsafeSEE ALSO
     kstat(3KSTAT), 
kstat_lookup(3KSTAT), 
kstat_open(3KSTAT),     
kstat_read(3KSTAT), 
attributes(7)illumos                       November 29, 2021                      illumos