X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=rcuja%2Frcuja.c;h=41ac70c43fb457aa98ae7ba80ebfce4b515904b6;hb=026545d3928cc63b042353581176f04fe00be08b;hp=9f135b08ee5ebd5d8d70b32ae0277b0917957512;hpb=021c72c06fe01ac99afb234e7aa7c4301d6fddee;p=userspace-rcu.git diff --git a/rcuja/rcuja.c b/rcuja/rcuja.c index 9f135b0..41ac70c 100644 --- a/rcuja/rcuja.c +++ b/rcuja/rcuja.c @@ -2415,10 +2415,11 @@ void print_debug_fallback_distribution(struct cds_ja *ja) } static -void print_ja_debug_info(struct cds_ja *ja) +int ja_final_checks(struct cds_ja *ja) { double fallback_ratio; unsigned long na, nf, nr_fallback; + int ret = 0; fallback_ratio = (double) uatomic_read(&ja->nr_fallback); fallback_ratio /= (double) uatomic_read(&ja->nr_nodes_allocated); @@ -2431,13 +2432,16 @@ void print_ja_debug_info(struct cds_ja *ja) na = uatomic_read(&ja->nr_nodes_allocated); nf = uatomic_read(&ja->nr_nodes_freed); + dbg_printf("Nodes allocated: %lu, Nodes freed: %lu.\n", na, nf); + if (nr_fallback) + print_debug_fallback_distribution(ja); + if (na != nf) { fprintf(stderr, "[error] Judy array leaked %ld nodes. Allocated: %lu, freed: %lu.\n", (long) na - nf, na, nf); + ret = -1; } - dbg_printf("Nodes allocated: %lu, Nodes freed: %lu.\n", na, nf); - if (nr_fallback) - print_debug_fallback_distribution(ja); + return ret; } /* @@ -2463,7 +2467,7 @@ int cds_ja_destroy(struct cds_ja *ja, flavor->barrier(); flavor->thread_online(); - print_ja_debug_info(ja); + ret = ja_final_checks(ja); free(ja); - return 0; + return ret; }