+ nchstats.ncs_badhits, nchstats.ncs_falsehits, nchstats.ncs_long);
+ lseek(mf, (long)nl[X_XSTATS].n_value, 0);
+ read(mf, &xstats, sizeof xstats);
+ printf("%9d total calls to xalloc (cache hits %d%%)\n",
+ xstats.alloc, pct(xstats.alloc_cachehit, xstats.alloc));
+ printf("%9s sticky %d flushed %d unused %d\n", "",
+ xstats.alloc_inuse, xstats.alloc_cacheflush, xstats.alloc_unused);
+ printf("%9d total calls to xfree", xstats.free);
+ printf(" (sticky %d cached %d swapped %d)\n",
+ xstats.free_inuse, xstats.free_cache, xstats.free_cacheswap);
+#if defined(tahoe)
+ lseek(mf, (long)nl[X_CKEYSTATS].n_value, 0);
+ read(mf, &keystats, sizeof keystats);
+ printf("%9d %s (free %d%% norefs %d%% taken %d%% shared %d%%)\n",
+ keystats.ks_allocs, "code cache keys allocated",
+ pct(keystats.ks_free, keystats.ks_allocs),
+ pct(keystats.ks_norefs, keystats.ks_allocs),
+ pct(keystats.ks_taken, keystats.ks_allocs),
+ pct(keystats.ks_shared, keystats.ks_allocs));
+ lseek(mf, (long)nl[X_DKEYSTATS].n_value, 0);
+ read(mf, &keystats, sizeof keystats);
+ printf("%9d %s (free %d%% norefs %d%% taken %d%% shared %d%%)\n",
+ keystats.ks_allocs, "data cache keys allocated",
+ pct(keystats.ks_free, keystats.ks_allocs),
+ pct(keystats.ks_norefs, keystats.ks_allocs),
+ pct(keystats.ks_taken, keystats.ks_allocs),
+ pct(keystats.ks_shared, keystats.ks_allocs));
+#endif