always use sigar_kstat_update rather than kstat_chain_update directly
This commit is contained in:
parent
142721a52f
commit
fb475be338
|
@ -16,7 +16,7 @@ int sigar_get_multi_kstats(sigar_t *sigar,
|
||||||
name += kl->nlen; /* e.g. "hme0" + 3 */
|
name += kl->nlen; /* e.g. "hme0" + 3 */
|
||||||
dev = atoi(name);
|
dev = atoi(name);
|
||||||
|
|
||||||
if ((kl->num == 0) || (kstat_chain_update(kc) > 0)) {
|
if ((kl->num == 0) || (sigar_kstat_update(sigar) > 0)) {
|
||||||
while ((ksp = kstat_lookup(kc, kl->name, i, NULL))) {
|
while ((ksp = kstat_lookup(kc, kl->name, i, NULL))) {
|
||||||
if (i+1 > kl->num) {
|
if (i+1 > kl->num) {
|
||||||
kl->num = i+1;
|
kl->num = i+1;
|
||||||
|
@ -111,6 +111,28 @@ int sigar_get_kstats(sigar_t *sigar)
|
||||||
return SIGAR_OK;
|
return SIGAR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SIGAR_INLINE kid_t sigar_kstat_update(sigar_t *sigar)
|
||||||
|
{
|
||||||
|
kid_t id = kstat_chain_update(sigar->kc);
|
||||||
|
|
||||||
|
switch (id) {
|
||||||
|
case -1:
|
||||||
|
sigar_log_printf(sigar, SIGAR_LOG_ERROR,
|
||||||
|
"kstat_chain_update error: %s",
|
||||||
|
sigar_strerror(sigar, errno));
|
||||||
|
break;
|
||||||
|
case 0:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
sigar_get_kstats(sigar);
|
||||||
|
sigar_log(sigar, SIGAR_LOG_DEBUG,
|
||||||
|
"kstat chain updated");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* bincompat is not possible with certain kstat data structures between
|
* bincompat is not possible with certain kstat data structures between
|
||||||
* solaris 2.6, 2.7, 2.8, etc. alternative is to use kstat_data_lookup()
|
* solaris 2.6, 2.7, 2.8, etc. alternative is to use kstat_data_lookup()
|
||||||
|
|
|
@ -33,6 +33,8 @@ typedef struct {
|
||||||
int nlen;
|
int nlen;
|
||||||
} kstat_list_t;
|
} kstat_list_t;
|
||||||
|
|
||||||
|
SIGAR_INLINE kid_t sigar_kstat_update(sigar_t *sigar);
|
||||||
|
|
||||||
int sigar_get_kstats(sigar_t *sigar);
|
int sigar_get_kstats(sigar_t *sigar);
|
||||||
|
|
||||||
int sigar_get_multi_kstats(sigar_t *sigar,
|
int sigar_get_multi_kstats(sigar_t *sigar,
|
||||||
|
|
|
@ -154,20 +154,6 @@ char *sigar_os_error_string(sigar_t *sigar, int err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static SIGAR_INLINE int sigar_kstat_update(sigar_t *sigar)
|
|
||||||
{
|
|
||||||
switch (kstat_chain_update(sigar->kc)) {
|
|
||||||
case 0:
|
|
||||||
break;
|
|
||||||
case -1:
|
|
||||||
return -1; /* shouldn't happen */
|
|
||||||
default:
|
|
||||||
sigar_get_kstats(sigar);
|
|
||||||
}
|
|
||||||
|
|
||||||
return SIGAR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define KPAGE_SHIFT(v) \
|
#define KPAGE_SHIFT(v) \
|
||||||
((v) << sigar->pagesize)
|
((v) << sigar->pagesize)
|
||||||
|
|
||||||
|
@ -1368,7 +1354,8 @@ static int get_fs_kstat(sigar_t *sigar,
|
||||||
kstat_t *ksp, *first;
|
kstat_t *ksp, *first;
|
||||||
char *ptr;
|
char *ptr;
|
||||||
|
|
||||||
kstat_chain_update(sigar->kc);
|
sigar_kstat_update(sigar);
|
||||||
|
|
||||||
first = ksp =
|
first = ksp =
|
||||||
kstat_lookup(sigar->kc, fsk->module, fsk->instance, NULL);
|
kstat_lookup(sigar->kc, fsk->module, fsk->instance, NULL);
|
||||||
|
|
||||||
|
@ -1980,7 +1967,8 @@ static int sigar_net_ifstat_get_any(sigar_t *sigar, const char *name,
|
||||||
char dev[64], *ptr=dev;
|
char dev[64], *ptr=dev;
|
||||||
int num;
|
int num;
|
||||||
|
|
||||||
kstat_chain_update(kc);
|
sigar_kstat_update(sigar);
|
||||||
|
|
||||||
strncpy(dev, name, sizeof(dev)-1);
|
strncpy(dev, name, sizeof(dev)-1);
|
||||||
dev[sizeof(dev)-1] = '\0';
|
dev[sizeof(dev)-1] = '\0';
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue