Driver Entry Points ksupdate(9E)
NAME
ksupdate - dynamically update kstats
SYNOPSIS
#include
#include
#include
#include
int prefixksupdate(kstatt *ksp, int rw);
INTERFACE LEVEL
Solaris DI specific (Solaris DI)
PARAMETERS
ksp Pointer to a kstat(9S) structure.
rw Read/Write flag. Possible values are
KSTATREAD Update kstat structure statistics
from the driver.
KSTATWRITE Update driver statistics from the
kstat structure.
DESCRIPTION
The kstat mechanism allows for an optional ksupdate() func-
tion to update kstat data. This is useful for drivers where
the underlying device keeps cheap hardware statistics, but
extraction is expensive. Instead of constantly keeping the
kstat data section up to date, the driver can supply a
ksupdate() function which updates the kstat's data section
on demand. To take advantage of this feature, set the
ksupdate field before calling kstatinstall(9F).
The ksupdate() function must have the following structure:
static int
xxkstatupdate(kstatt *ksp, int rw)
{
if (rw == KSTATWRITE) {
/* update the native stats from ksp->ksdata */
/* return EACES if you don't support this */
} else {
SunOS 5.11 Last change: 27 May 1994 1
Driver Entry Points ksupdate(9E)
/* update ksp->ksdata from the native stats */
}
return (0);
}
In general, the ksupdate() routine may need to refer to
provider-private data; for example, it may need a pointer to
the provider's raw statistics. The ksprivate field is
available for this purpose. Its use is entirely at the
provider's discretion.
No kstat locking should be done inside the ksupdate() rou-
tine. The caller will already be holding the kstat's
kslock (to ensure consistent data) and will prevent the
kstat from being removed.
RETURN VALUES
ksupdate() should return
0 For success.
EACES If KSTATWRITE is not allowed.
EIO For any other error.
SEE ALSO
kstatcreate(9F), kstatinstall(9F), kstat(9S)
Writing Device Drivers
SunOS 5.11 Last change: 27 May 1994 2
|