X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Flikely%2Flikely.h;h=410772dbde78a37ec99c64261758961ae2f2821b;hp=137cb86131884d28710fa4f5e668d5bfe0f99f74;hb=0e5d0e30b30bb07b6605843e5ff224210d8083d8;hpb=a40b318e7a07a452ae7456053727bd11b2fa49b4 diff --git a/ccan/likely/likely.h b/ccan/likely/likely.h index 137cb861..410772db 100644 --- a/ccan/likely/likely.h +++ b/ccan/likely/likely.h @@ -1,10 +1,11 @@ +/* Licensed under LGPLv2.1+ - see LICENSE file for details */ #ifndef CCAN_LIKELY_H #define CCAN_LIKELY_H #include "config.h" #include #include -#ifndef DEBUG +#ifndef CCAN_LIKELY_DEBUG #if HAVE_BUILTIN_EXPECT /** * likely - indicate that a condition is likely to be true. @@ -55,7 +56,7 @@ #define likely(cond) (!!(cond)) #define unlikely(cond) (!!(cond)) #endif -#else /* DEBUG versions */ +#else /* CCAN_LIKELY_DEBUG versions */ #define likely(cond) \ (_likely_trace(!!(cond), 1, stringify(cond), __FILE__, __LINE__)) #define unlikely(cond) \ @@ -66,15 +67,15 @@ long _likely_trace(bool cond, bool expect, const char *file, unsigned int line); #endif -#ifdef DEBUG +#ifdef CCAN_LIKELY_DEBUG /** * likely_stats - return description of abused likely()/unlikely() * @min_hits: minimum number of hits * @percent: maximum percentage correct * - * When DEBUG is defined, likely() and unlikely() trace their results: this - * causes a significant slowdown, but allows analysis of whether the stats - * are correct. + * When CCAN_LIKELY_DEBUG is defined, likely() and unlikely() trace their + * results: this causes a significant slowdown, but allows analysis of + * whether the branches are labelled correctly. * * This function returns a malloc'ed description of the least-correct * usage of likely() or unlikely(). It ignores places which have been @@ -90,7 +91,7 @@ long _likely_trace(bool cond, bool expect, * // Print every place hit more than twice which was wrong > 5%. * static void report_stats(void) * { - * #ifdef DEBUG + * #ifdef CCAN_LIKELY_DEBUG * const char *bad; * * while ((bad = likely_stats(2, 95)) != NULL) { @@ -100,6 +101,13 @@ long _likely_trace(bool cond, bool expect, * #endif * } */ -const char *likely_stats(unsigned int min_hits, unsigned int percent); -#endif /* DEBUG */ +char *likely_stats(unsigned int min_hits, unsigned int percent); + +/** + * likely_stats_reset - free up memory of likely()/unlikely() branches. + * + * This can also plug memory leaks. + */ +void likely_stats_reset(void); +#endif /* CCAN_LIKELY_DEBUG */ #endif /* CCAN_LIKELY_H */