{
struct analyze_frames af;
struct process *ps;
+ struct pageframe *pf;
long int swapped, present, unique, total;
long int biggest = 0, second_biggest;
int count, processes = 0;
- int len = 0, i;
/*
* walk through all processes, find the one with most present
* pages
*/
- printf("\rAnalyzing pages for process: ");
- list_for_each_entry(ps, &process_list->list, list) {
- for (i = 0; i < len; i++)
- putchar('\b');
- len = printf("% 5d", ps->pid);
- fflush(stdout);
-
- memset(&af, 0, sizeof(af));
- af.pid = ps->pid;
-
- count_pages(root, &af);
- ps->pages_present = af.pages_present;
- ps->pages_swapped = af.pages_swapped;
- ps->pages_unique = af.pages_unique;
- biggest = MAX(biggest, ps->pages_present + ps->pages_swapped);
+ pf = rb_to_pageframe(rb_first(root));
+ while(pf) {
+ list_for_each_entry(ps, &process_list->list, list) {
+ memset(&af, 0, sizeof(af));
+ af.pid = ps->pid;
+
+ count_page(pf, &af);
+ ps->pages_present += af.pages_present;
+ ps->pages_swapped += af.pages_swapped;
+ ps->pages_unique += af.pages_unique;
+ biggest = MAX(biggest, ps->pages_present + ps->pages_swapped);
+ }
+ pf = rb_to_pageframe(rb_next(&pf->tree));
}
- for (i = 0; i < len; i++)
- putchar('\b');
- printf("Done \n\n");
printf(" RSS swapped USS total pid");
if (opts->with_threads)