'\" te .\" Copyright (c) 2004, Sun Microsystems, Inc. All Rights Reserved. .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License. .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner] .TH KSTAT_CHAIN_UPDATE 3KSTAT "Aug 3, 2004" .SH NAME kstat_chain_update \- update the kstat header chain .SH SYNOPSIS .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 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 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 \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. .sp .LP Because of the deletion process, any \fBkstat_t\fR structures retrieved by the \fBkstat_lookup\fR(3KSTAT) function or data pointers obtained through the \fBkstat_data_lookup\fR(3KSTAT) function are invalidated by a call to \fRkstat_chain_update\fB(). New lookup calls must be made to obtain fresh structures after each chain update. .SH RETURN VALUES 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 The \fBkstat_chain_update()\fR function will fail if: .sp .ne 2 .na \fB\fBEAGAIN\fR\fR .ad .RS 13n The kstat was temporarily unavailable for reading or writing. .RE .sp .ne 2 .na \fB\fBENOMEM\fR\fR .ad .RS 13n Insufficient storage space is available. .RE .sp .ne 2 .na \fB\fBENXIO\fR\fR .ad .RS 13n The given kstat could not be located for reading. .RE .sp .ne 2 .na \fB\fBEOVERFLOW\fR\fR .ad .RS 13n The data for the given kstat was too large to be stored in the structure. .RE .SH FILES .ne 2 .na \fB\fB/dev/kstat\fR\fR .ad .RS 14n kernel statistics driver .RE .SH ATTRIBUTES See \fBattributes\fR(5) for descriptions of the following attributes: .sp .sp .TS box; c | c l | l . ATTRIBUTE TYPE ATTRIBUTE VALUE _ Interface Stability Stable _ MT-Level Unsafe .TE .SH SEE ALSO \fBkstat\fR(3KSTAT), \fBkstat_lookup\fR(3KSTAT), \fBkstat_open\fR(3KSTAT), \fBkstat_read\fR(3KSTAT), \fBattributes\fR(5)