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 */ |
