implement proc_list
This commit is contained in:
parent
fa9df002d1
commit
9494545226
|
@ -13,6 +13,7 @@ int sigar_os_open(sigar_t **sigar)
|
||||||
(*sigar)->pagesize = getpagesize();
|
(*sigar)->pagesize = getpagesize();
|
||||||
(*sigar)->boot_time = 0;
|
(*sigar)->boot_time = 0;
|
||||||
(*sigar)->mhz = 0;
|
(*sigar)->mhz = 0;
|
||||||
|
(*sigar)->nproc = -1;
|
||||||
|
|
||||||
return SIGAR_OK;
|
return SIGAR_OK;
|
||||||
}
|
}
|
||||||
|
@ -140,10 +141,39 @@ int sigar_loadavg_get(sigar_t *sigar,
|
||||||
return SIGAR_OK;
|
return SIGAR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define PROC_ELTS 16
|
||||||
|
|
||||||
int sigar_proc_list_get(sigar_t *sigar,
|
int sigar_proc_list_get(sigar_t *sigar,
|
||||||
sigar_proc_list_t *proclist)
|
sigar_proc_list_t *proclist)
|
||||||
{
|
{
|
||||||
return SIGAR_ENOTIMPL;
|
struct tbl_procinfo procinfo[PROC_ELTS];
|
||||||
|
int offset;
|
||||||
|
|
||||||
|
if (sigar->nproc == -1) {
|
||||||
|
/* this number will not change while we are running */
|
||||||
|
sigar->nproc = table(TBL_PROCINFO, 0, NULL, INT_MAX, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
sigar_proc_list_create(proclist);
|
||||||
|
|
||||||
|
for (offset=0; offset<sigar->nproc; offset+=PROC_ELTS) {
|
||||||
|
int i;
|
||||||
|
int elts = table(TBL_PROCINFO, offset, &procinfo,
|
||||||
|
PROC_ELTS, sizeof(procinfo[0]));
|
||||||
|
|
||||||
|
for (i=0; i<elts; i++) {
|
||||||
|
struct tbl_procinfo *info = &procinfo[i];
|
||||||
|
if (!info->pi_status) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
SIGAR_PROC_LIST_GROW(proclist);
|
||||||
|
|
||||||
|
proclist->data[proclist->number++] = info->pi_pid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return SIGAR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sigar_proc_stat_get(sigar_t *sigar,
|
int sigar_proc_stat_get(sigar_t *sigar,
|
||||||
|
|
|
@ -18,6 +18,7 @@ struct sigar_t {
|
||||||
SIGAR_T_BASE;
|
SIGAR_T_BASE;
|
||||||
int pagesize;
|
int pagesize;
|
||||||
int mhz;
|
int mhz;
|
||||||
|
int nproc;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* SIGAR_OS_H */
|
#endif /* SIGAR_OS_H */
|
||||||
|
|
Loading…
Reference in New Issue