diff options
author | Felix Blyakher <felixb@sgi.com> | 2009-06-10 18:07:47 -0400 |
---|---|---|
committer | Felix Blyakher <felixb@sgi.com> | 2009-06-10 18:07:47 -0400 |
commit | 4e73e0eb633f8a1b5cbf20e7f42c6dbfec1d1ca7 (patch) | |
tree | 0cea46e43f0625244c3d06a71d6559e5ec5419ca /include/linux/compiler.h | |
parent | 4156e735d3abde8e9243b5d22f7999dd3fffab2e (diff) | |
parent | 07a2039b8eb0af4ff464efd3dfd95de5c02648c6 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Diffstat (limited to 'include/linux/compiler.h')
-rw-r--r-- | include/linux/compiler.h | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/include/linux/compiler.h b/include/linux/compiler.h index d95da1020f1c..37bcb50a4d7c 100644 --- a/include/linux/compiler.h +++ b/include/linux/compiler.h | |||
@@ -68,6 +68,7 @@ struct ftrace_branch_data { | |||
68 | unsigned long miss; | 68 | unsigned long miss; |
69 | unsigned long hit; | 69 | unsigned long hit; |
70 | }; | 70 | }; |
71 | unsigned long miss_hit[2]; | ||
71 | }; | 72 | }; |
72 | }; | 73 | }; |
73 | 74 | ||
@@ -75,7 +76,8 @@ struct ftrace_branch_data { | |||
75 | * Note: DISABLE_BRANCH_PROFILING can be used by special lowlevel code | 76 | * Note: DISABLE_BRANCH_PROFILING can be used by special lowlevel code |
76 | * to disable branch tracing on a per file basis. | 77 | * to disable branch tracing on a per file basis. |
77 | */ | 78 | */ |
78 | #if defined(CONFIG_TRACE_BRANCH_PROFILING) && !defined(DISABLE_BRANCH_PROFILING) | 79 | #if defined(CONFIG_TRACE_BRANCH_PROFILING) \ |
80 | && !defined(DISABLE_BRANCH_PROFILING) && !defined(__CHECKER__) | ||
79 | void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); | 81 | void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); |
80 | 82 | ||
81 | #define likely_notrace(x) __builtin_expect(!!(x), 1) | 83 | #define likely_notrace(x) __builtin_expect(!!(x), 1) |
@@ -113,7 +115,9 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); | |||
113 | * "Define 'is'", Bill Clinton | 115 | * "Define 'is'", Bill Clinton |
114 | * "Define 'if'", Steven Rostedt | 116 | * "Define 'if'", Steven Rostedt |
115 | */ | 117 | */ |
116 | #define if(cond) if (__builtin_constant_p((cond)) ? !!(cond) : \ | 118 | #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) |
119 | #define __trace_if(cond) \ | ||
120 | if (__builtin_constant_p((cond)) ? !!(cond) : \ | ||
117 | ({ \ | 121 | ({ \ |
118 | int ______r; \ | 122 | int ______r; \ |
119 | static struct ftrace_branch_data \ | 123 | static struct ftrace_branch_data \ |
@@ -125,10 +129,7 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); | |||
125 | .line = __LINE__, \ | 129 | .line = __LINE__, \ |
126 | }; \ | 130 | }; \ |
127 | ______r = !!(cond); \ | 131 | ______r = !!(cond); \ |
128 | if (______r) \ | 132 | ______f.miss_hit[______r]++; \ |
129 | ______f.hit++; \ | ||
130 | else \ | ||
131 | ______f.miss++; \ | ||
132 | ______r; \ | 133 | ______r; \ |
133 | })) | 134 | })) |
134 | #endif /* CONFIG_PROFILE_ALL_BRANCHES */ | 135 | #endif /* CONFIG_PROFILE_ALL_BRANCHES */ |