From: Andrew Morton Cc: Daniel Walker CC: Hua Zhong Signed-off-by: Andrew Morton --- include/linux/compiler.h | 30 +++++++++++++-------------- lib/likely_prof.c | 41 +++++++++++++++++++------------------ 2 files changed, 37 insertions(+), 34 deletions(-) diff -puN include/linux/compiler.h~profile-likely-unlikely-macros-tidy include/linux/compiler.h --- devel/include/linux/compiler.h~profile-likely-unlikely-macros-tidy 2006-05-27 23:29:52.000000000 -0700 +++ devel-akpm/include/linux/compiler.h 2006-05-27 23:29:52.000000000 -0700 @@ -65,22 +65,22 @@ struct likeliness { extern int do_check_likely(struct likeliness *likeliness, int exp); -# define LP_UNSEEN 4 +#define LP_UNSEEN 4 -# define __check_likely(exp, is_likely) \ - ({ \ - static __attribute__((__section__(".likely.data"))) \ - struct likeliness likeliness = { \ - .func = __func__, \ - .file = __FILE__, \ - .line = __LINE__, \ - .type = is_likely | LP_UNSEEN, \ - }; \ - do_check_likely(&likeliness, !!(exp)); \ +#define __check_likely(exp, is_likely) \ + ({ \ + static __attribute__((__section__(".likely.data"))) \ + struct likeliness likeliness = { \ + .func = __func__, \ + .file = __FILE__, \ + .line = __LINE__, \ + .type = is_likely | LP_UNSEEN, \ + }; \ + do_check_likely(&likeliness, !!(exp)); \ }) -# define likely(x) __check_likely(x, 1) -# define unlikely(x) __check_likely(x, 0) +#define likely(x) __check_likely(x, 1) +#define unlikely(x) __check_likely(x, 0) #else /* * Generic compiler-dependent macros required for kernel @@ -88,8 +88,8 @@ extern int do_check_likely(struct likeli * specific implementations come from the above header files */ -# define likely(x) __builtin_expect(!!(x), 1) -# define unlikely(x) __builtin_expect(!!(x), 0) +#define likely(x) __builtin_expect(!!(x), 1) +#define unlikely(x) __builtin_expect(!!(x), 0) #endif /* Optimization barrier */ diff -puN lib/likely_prof.c~profile-likely-unlikely-macros-tidy lib/likely_prof.c --- devel/lib/likely_prof.c~profile-likely-unlikely-macros-tidy 2006-05-27 23:29:52.000000000 -0700 +++ devel-akpm/lib/likely_prof.c 2006-05-27 23:29:52.000000000 -0700 @@ -14,15 +14,16 @@ #include #include #include + #include #include static struct likeliness *likeliness_head; -volatile unsigned long likely_lock = 0; - int do_check_likely(struct likeliness *likeliness, int ret) { + static unsigned long likely_lock; + if (ret) likeliness->count[1]++; else @@ -30,13 +31,11 @@ int do_check_likely(struct likeliness *l if (likeliness->type & LP_UNSEEN) { /* - * We don't simple use a spinlock because - * internally to the spinlock there is a - * call to unlikely which causes recursion. - * We opted for this method because we - * didn't need a preempt/irq disable and it - * was a bit cleaner then using internal __raw - * spinlock calls . + * We don't simple use a spinlock because internally to the + * spinlock there is a call to unlikely which causes recursion. + * We opted for this method because we didn't need a preempt/irq + * disable and it was a bit cleaner then using internal __raw + * spinlock calls. */ if (!test_and_set_bit(0, &likely_lock)) { if (likeliness->type & LP_UNSEEN) { @@ -58,8 +57,10 @@ static void * lp_seq_start(struct seq_fi if (!*pos) { seq_printf(out, "Likely Profiling Results\n"); - seq_printf(out, " --------------------------------------------------------------------\n"); - seq_printf(out, "[+- ] Type | # True | # False | Function:Filename@Line\n"); + seq_printf(out, " --------------------------------------------" + "------------------------\n"); + seq_printf(out, "[+- ] Type | # True | # False | Function:" + "Filename@Line\n"); out->private = likeliness_head; } @@ -67,9 +68,9 @@ static void * lp_seq_start(struct seq_fi return out->private; } -static void * lp_seq_next(struct seq_file *out, void *p, loff_t *pos) +static void *lp_seq_next(struct seq_file *out, void *p, loff_t *pos) { - struct likeliness * entry = p; + struct likeliness *entry = p; if (entry->next) { ++(*pos); @@ -77,13 +78,14 @@ static void * lp_seq_next(struct seq_fil } else out->private = NULL; - return (out->private); + return out->private; } static int lp_seq_show(struct seq_file *out, void *p) { - struct likeliness * entry = p; - int true = entry->count[1], false = entry->count[0]; + struct likeliness *entry = p; + int true = entry->count[1]; + int false = entry->count[0]; if (!entry->type) { if (true > false) @@ -92,8 +94,7 @@ static int lp_seq_show(struct seq_file * seq_printf(out, " "); seq_printf(out, "unlikely "); - } - else { + } else { if (true < false) seq_printf(out, "-"); else @@ -108,7 +109,9 @@ static int lp_seq_show(struct seq_file * return 0; } -static void lp_seq_stop(struct seq_file *m, void *p) { } +static void lp_seq_stop(struct seq_file *m, void *p) +{ +} struct seq_operations likely_profiling_ops = { .start = lp_seq_start, _