pmap: adapt to normailzed <pids> select/fill interface

Signed-off-by: Jim Warner <james.warner@comcast.net>
This commit is contained in:
Jim Warner 2015-10-02 00:00:00 -05:00 committed by Craig Small
parent 747dfc5987
commit a7153fe49f

23
pmap.c
View File

@ -989,9 +989,9 @@ static char *get_default_rc_filename(void)
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
struct procps_pidsinfo *info = NULL; struct procps_pidsinfo *info = NULL;
struct pids_counts *pids_cnts; struct pids_reap *pids_reap;
struct pids_stacks *pidlist; unsigned *pidlist;
int fill_count, user_count; int reap_count, user_count;
int ret = 0, c, conf_ret; int ret = 0, c, conf_ret;
char *rc_filename = NULL; char *rc_filename = NULL;
@ -1129,10 +1129,9 @@ int main(int argc, char **argv)
} }
} }
} }
if (procps_pids_new(&info, 4, Pid_items))
if (procps_pids_new(&info, 4, Pid_items)
|| !(pidlist = procps_pids_stacks_alloc(info, argc)))
xerrx(EXIT_FAILURE, _("library failed pids statistics")); xerrx(EXIT_FAILURE, _("library failed pids statistics"));
pidlist = xmalloc(sizeof(pid_t) * argc);
user_count = 0; user_count = 0;
while (*argv) { while (*argv) {
@ -1150,19 +1149,19 @@ int main(int argc, char **argv)
pid = strtoul(walk, &endp, 0); pid = strtoul(walk, &endp, 0);
if (pid < 1ul || pid > 0x7ffffffful || *endp) if (pid < 1ul || pid > 0x7ffffffful || *endp)
usage(stderr); usage(stderr);
pidlist->stacks[user_count++]->fill_id = pid; pidlist[user_count++] = pid;
} }
discover_shm_minor(); discover_shm_minor();
if (!(pids_cnts = procps_pids_stacks_fill(info, pidlist, user_count, PROCPS_FILL_PID))) if (!(pids_reap = procps_pids_select(info, pidlist, user_count, PROCPS_FILL_PID)))
xerrx(EXIT_FAILURE, _("library failed pids statistics")); xerrx(EXIT_FAILURE, _("library failed pids statistics"));
for (fill_count = 0; fill_count < pids_cnts->total; fill_count++) { for (reap_count = 0; reap_count < pids_reap->counts.total; reap_count++) {
ret |= one_proc(pidlist->stacks[fill_count]); ret |= one_proc(pids_reap->stacks[reap_count]);
} }
procps_pids_stacks_dealloc(info, &pidlist); free(pidlist);
procps_pids_unref(&info); procps_pids_unref(&info);
/* cleaning the list used for the -c/-X/-XX modes */ /* cleaning the list used for the -c/-X/-XX modes */
@ -1179,7 +1178,7 @@ int main(int argc, char **argv)
cnf_listhead = cnf_listnode; cnf_listhead = cnf_listnode;
} }
if (fill_count < user_count) if (reap_count < user_count)
/* didn't find all processes asked for */ /* didn't find all processes asked for */
ret |= 42; ret |= 42;
return ret; return ret;