#include <sys/types.h> #include <sys/kstat.h> #include <sys/ddi.h> #include <sys/sunddi.h>
int prefix_ks_update(kstat_t *ksp , int rw);
Solaris DDI specific (Solaris DDI)
The ks_update() function must have the following structure:
static int xx_kstat_update(kstat_t *ksp, int rw) { if (rw == KSTAT_WRITE) { /* update the native stats from ksp->ks_data */ /* return EACCES if you don’t support this */ } else { /* update ksp->ks_data from the native stats */ } return (0); }In general, the ks_update() routine may need to refer to provider-private data; for example, it may need a pointer to the provider’s raw statistics. The ks_private field is available for this purpose. Its use is entirely at the provider’s discretion.
No kstat locking should be done inside the ks_update() routine. The caller will already be holding the kstat’s ks_lock (to ensure consistent data) and will prevent the kstat from being removed.
Return Values
ks_update() should return
- for success
- EACCES
- if KSTAT_WRITE is not allowed
- EIO
- for any other error.
See Also
kstat_create(9F) , kstat_install(9F) , kstat(9S)