KSTAT_CHAIN_UPDATE(3KSTAT) | Kernel Statistics Library Functions | KSTAT_CHAIN_UPDATE(3KSTAT) |
kstat_chain_update
—
update the kstat header chain
Kernel Statistics Library (libkstat, -lkstat)
#include
<kstat.h>
kid_t
kstat_chain_update
(kstat_ctl_t
*kc);
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.
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.
The kstat_chain_update
() function will
fail if:
kstat(3KSTAT), kstat_lookup(3KSTAT), kstat_open(3KSTAT), kstat_read(3KSTAT), attributes(7)
November 29, 2021 | OmniOS |