+static void dump_and_clear_stats(struct tdb_attribute_stats *stats)
+{
+ printf("allocs = %llu\n",
+ (unsigned long long)stats->allocs);
+ printf(" alloc_subhash = %llu\n",
+ (unsigned long long)stats->alloc_subhash);
+ printf(" alloc_bucket_exact = %llu\n",
+ (unsigned long long)stats->alloc_bucket_exact);
+ printf(" alloc_bucket_max = %llu\n",
+ (unsigned long long)stats->alloc_bucket_max);
+ printf(" alloc_leftover = %llu\n",
+ (unsigned long long)stats->alloc_leftover);
+ printf(" alloc_coalesce_tried = %llu\n",
+ (unsigned long long)stats->alloc_coalesce_tried);
+ printf(" alloc_coalesce_lockfail = %llu\n",
+ (unsigned long long)stats->alloc_coalesce_lockfail);
+ printf(" alloc_coalesce_race = %llu\n",
+ (unsigned long long)stats->alloc_coalesce_race);
+ printf(" alloc_coalesce_succeeded = %llu\n",
+ (unsigned long long)stats->alloc_coalesce_succeeded);
+ printf(" alloc_coalesce_num_merged = %llu\n",
+ (unsigned long long)stats->alloc_coalesce_num_merged);
+ printf("expands = %llu\n",
+ (unsigned long long)stats->expands);
+ printf("frees = %llu\n",
+ (unsigned long long)stats->frees);
+ printf("locks = %llu\n",
+ (unsigned long long)stats->locks);
+ printf(" lock_lowlevel = %llu\n",
+ (unsigned long long)stats->lock_lowlevel);
+ printf(" lock_nonblock = %llu\n",
+ (unsigned long long)stats->lock_nonblock);
+
+ /* Now clear. */
+ memset(&stats->allocs, 0, (char *)(stats+1) - (char *)&stats->allocs);
+}
+