Print this page
XXXX Check for uninitialized kernel statistics

*** 1205,1214 **** --- 1205,1252 ---- (void) KSTAT_UPDATE(ksp, KSTAT_WRITE); } ksp->ks_flags &= ~KSTAT_FLAG_DORMANT; } + #ifdef DEBUG + /* + * Search for uninitialized kstats. + */ + switch (ksp->ks_type) { + case KSTAT_TYPE_NAMED: { + uint_t i; + kstat_named_t *knp = KSTAT_NAMED_PTR(ksp); + + for (i = 0; i < ksp->ks_ndata; i++, knp++) { + if (knp->data_type > KSTAT_DATA_STRING) { + cmn_err(CE_WARN, + "kstat_install('%s', %d, '%s'): " + "invalid data type", + ksp->ks_module, ksp->ks_instance, + ksp->ks_name); + } + + /* + * If the name of this kstat is empty + * we assume it is uninitialized. + */ + if (knp->name[0] == '\0') { + cmn_err(CE_WARN, + "kstat_install('%s', %d, '%s'): " + "uninitialized kstat", + ksp->ks_module, ksp->ks_instance, + ksp->ks_name); + } + } + + break; + } + default: + break; + } + #endif + /* * Now that the kstat is active, make it visible to the kstat driver. */ ksp->ks_flags &= ~KSTAT_FLAG_INVALID; kstat_rele(ksp);