static void alias(void) { struct aliasinfo *a; char *active = NULL; sort_aliases(); link_slabs(); for(a = aliasinfo; a < aliasinfo + aliases; a++) { if (!show_single_ref && a->slab->refs == 1) continue; if (!show_inverted) { if (active) { if (strcmp(a->slab->name, active) == 0) { printf(" %s", a->name); continue; } } printf("\n%-12s <- %s", a->slab->name, a->name); active = a->slab->name; } else printf("%-20s -> %s\n", a->name, a->slab->name); } if (active) printf("\n"); }
static void xtotals(void) { totals(); link_slabs(); rename_slabs(); printf("\nSlabs sorted by size\n"); printf("--------------------\n"); sort_loss = 0; sort_size = 1; sort_slabs(); output_slabs(); printf("\nSlabs sorted by loss\n"); printf("--------------------\n"); line = 0; sort_loss = 1; sort_size = 0; sort_slabs(); output_slabs(); printf("\n"); }
int main(int argc, char *argv[]) { int c; int err; char *pattern_source; page_size = getpagesize(); while ((c = getopt_long(argc, argv, "aAd::Defhil1noprstvzTS", opts, NULL)) != -1) switch (c) { case '1': show_single_ref = 1; break; case 'a': show_alias = 1; break; case 'A': sort_active = 1; break; case 'd': set_debug = 1; if (!debug_opt_scan(optarg)) fatal("Invalid debug option '%s'\n", optarg); break; case 'D': show_activity = 1; break; case 'e': show_empty = 1; break; case 'f': show_first_alias = 1; break; case 'h': usage(); return 0; case 'i': show_inverted = 1; break; case 'n': show_numa = 1; break; case 'o': show_ops = 1; break; case 'r': show_report = 1; break; case 's': shrink = 1; break; case 'l': show_slab = 1; break; case 't': show_track = 1; break; case 'v': validate = 1; break; case 'z': skip_zero = 0; break; case 'T': show_totals = 1; break; case 'S': sort_size = 1; break; default: fatal("%s: Invalid option '%c'\n", argv[0], optopt); } if (!show_slab && !show_alias && !show_track && !show_report && !validate && !shrink && !set_debug && !show_ops) show_slab = 1; if (argc > optind) pattern_source = argv[optind]; else pattern_source = ".*"; err = regcomp(&pattern, pattern_source, REG_ICASE|REG_NOSUB); if (err) fatal("%s: Invalid pattern '%s' code %d\n", argv[0], pattern_source, err); read_slab_dir(); if (show_alias) alias(); else if (show_totals) totals(); else { link_slabs(); rename_slabs(); sort_slabs(); output_slabs(); } return 0; }