/** print extended histogram */ static int print_hist(SSL* ssl, struct stats_info* s) { struct timehist* hist; size_t i; hist = timehist_setup(); if(!hist) { log_err("out of memory"); return 0; } timehist_import(hist, s->svr.hist, NUM_BUCKETS_HIST); for(i=0; i<hist->num; i++) { if(!ssl_printf(ssl, "histogram.%6.6d.%6.6d.to.%6.6d.%6.6d=%u\n", (int)hist->buckets[i].lower.tv_sec, (int)hist->buckets[i].lower.tv_usec, (int)hist->buckets[i].upper.tv_sec, (int)hist->buckets[i].upper.tv_usec, (unsigned)hist->buckets[i].count)) { timehist_delete(hist); return 0; } } timehist_delete(hist); return 1; }
void mesh_delete(struct mesh_area* mesh) { if(!mesh) return; /* free all query states */ while(mesh->all.count) mesh_delete_helper(mesh->all.root); timehist_delete(mesh->histogram); ldns_buffer_free(mesh->qbuf_bak); free(mesh); }
/** print histogram */ static void print_hist(struct ub_stats_info* s) { struct timehist* hist; size_t i; hist = timehist_setup(); if(!hist) fatal_exit("out of memory"); timehist_import(hist, s->svr.hist, NUM_BUCKETS_HIST); for(i=0; i<hist->num; i++) { printf("histogram.%6.6d.%6.6d.to.%6.6d.%6.6d=%lu\n", (int)hist->buckets[i].lower.tv_sec, (int)hist->buckets[i].lower.tv_usec, (int)hist->buckets[i].upper.tv_sec, (int)hist->buckets[i].upper.tv_usec, (unsigned long)hist->buckets[i].count); } timehist_delete(hist); }