Go to main content

man pages section 3: Extended Library Functions, Volume 2

Exit Print View

Updated: Thursday, June 13, 2019
 
 

kstat_chain_update(3KSTAT)

Name

kstat_chain_update - update the kstat header chain

Synopsis

cc [ flag… ] file–lkstat [ library…]
#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 the kstat_open() function. This chain constitutes a list of all kstats currently in the system. For more information, see the kstat_open(3KSTAT) man page.

During normal operation, the kernel creates new kstats and delete 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, the kstat_chain_update() function 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.

Return Values

Upon successful completion, the kstat_chain_update() function 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.

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.

Files

/dev/kstat

kernel statistics driver

Attributes

See attributes(7) for descriptions of the following attributes:

ATTRIBUTE TYPE
ATTRIBUTE VALUE
Interface Stability
Obsolete
MT-Level
MT-Safe with exceptions

The kstat_chain_update() function is MT-Safe with the exception that only one thread may actively use a kstat_ctl_t * value at any time. Synchronization is left to the application.

See Also

kstat(3KSTAT), kstat_lookup(3KSTAT), kstat_open(3KSTAT), kstat_read(3KSTAT), attributes(7), kstat2(3KSTAT2), kstat2_update(3KSTAT2)

Notes

The kstat_chain_update() function is deprecated. It may be removed in a future release of Oracle Solaris. For more information, see the kstat2(3KSTAT2) man page.