'\" te .\" Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. .TH kstat_chain_update 3KSTAT "13 Apr 2010" "SunOS 5.11" "Kernel Statistics Library Functions" .SH NAME kstat_chain_update \- update the kstat header chain .SH SYNOPSIS .LP .nf \fBcc\fR [ \fIflag\fR\&.\|.\|. ] \fIfile\fR\&.\|.\|. \fB-lkstat\fR [ \fIlibrary\fR\&.\|.\|.] #include \fBkid_t\fR \fBkstat_chain_update\fR(\fBkstat_ctl_t *\fR\fIkc\fR); .fi .SH DESCRIPTION .sp .LP The \fBkstat_chain_update()\fR 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 (\fBkstat_t\fR's) pointed to by \fIkc\fR->\fBkc_chain\fR, which is initialized by \fBkstat_open\fR(3KSTAT). This chain constitutes a list of all kstats currently in the system. .sp .LP 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 \fBkstat_chain_update()\fR 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, \fIkc\fR->\fBkc_chain_id\fR. If the KCIDs match, \fBkstat_chain_update()\fR does nothing. Otherwise, it deletes any invalid kstat headers from the user's kstat chain, adds any new ones, and sets \fIkc\fR->\fBkc_chain_id\fR to the new KCID. All other kstat headers in the user's kstat chain are unmodified. .SH RETURN VALUES .sp .LP Upon successful completion, \fBkstat_chain_update()\fR returns the new KCID if the kstat chain has changed and 0 if it has not changed. Otherwise, it returns \(mi1 and sets \fBerrno\fR to indicate the error. .SH ERRORS .sp .LP The \fBkstat_chain_update()\fR function will fail if: .sp .ne 2 .mk .na \fB\fBEAGAIN\fR\fR .ad .RS 13n .rt The kstat was temporarily unavailable for reading or writing. .RE .sp .ne 2 .mk .na \fB\fBENOMEM\fR\fR .ad .RS 13n .rt Insufficient storage space is available. .RE .sp .ne 2 .mk .na \fB\fBENXIO\fR\fR .ad .RS 13n .rt The given kstat could not be located for reading. .RE .sp .ne 2 .mk .na \fB\fBEOVERFLOW\fR\fR .ad .RS 13n .rt The data for the given kstat was too large to be stored in the structure. .RE .SH FILES .sp .ne 2 .mk .na \fB\fB/dev/kstat\fR\fR .ad .RS 14n .rt kernel statistics driver .RE .SH ATTRIBUTES .sp .LP See \fBattributes\fR(5) for descriptions of the following attributes: .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . ATTRIBUTE TYPEATTRIBUTE VALUE _ Interface StabilityCommitted _ MT-LevelMT-Safe with exceptions .TE .sp .LP The \fBkstat_chain_update()\fR function is MT-Safe with the exception that only one thread may actively use a \fBkstat_ctl_t *\fR value at any time. Synchronization is left to the application. .SH SEE ALSO .sp .LP \fBkstat\fR(3KSTAT), \fBkstat_lookup\fR(3KSTAT), \fBkstat_open\fR(3KSTAT), \fBkstat_read\fR(3KSTAT), \fBattributes\fR(5)