.. | .. |
---|
146 | 146 | define tracepoints. Check http://lwn.net/Articles/379903, |
---|
147 | 147 | http://lwn.net/Articles/381064 and http://lwn.net/Articles/383362 |
---|
148 | 148 | for a series of articles with more details. |
---|
| 149 | + |
---|
| 150 | +If you require calling a tracepoint from a header file, it is not |
---|
| 151 | +recommended to call one directly or to use the trace_<tracepoint>_enabled() |
---|
| 152 | +function call, as tracepoints in header files can have side effects if a |
---|
| 153 | +header is included from a file that has CREATE_TRACE_POINTS set, as |
---|
| 154 | +well as the trace_<tracepoint>() is not that small of an inline |
---|
| 155 | +and can bloat the kernel if used by other inlined functions. Instead, |
---|
| 156 | +include tracepoint-defs.h and use tracepoint_enabled(). |
---|
| 157 | + |
---|
| 158 | +In a C file:: |
---|
| 159 | + |
---|
| 160 | + void do_trace_foo_bar_wrapper(args) |
---|
| 161 | + { |
---|
| 162 | + trace_foo_bar(args); |
---|
| 163 | + } |
---|
| 164 | + |
---|
| 165 | +In the header file:: |
---|
| 166 | + |
---|
| 167 | + DECLARE_TRACEPOINT(foo_bar); |
---|
| 168 | + |
---|
| 169 | + static inline void some_inline_function() |
---|
| 170 | + { |
---|
| 171 | + [..] |
---|
| 172 | + if (tracepoint_enabled(foo_bar)) |
---|
| 173 | + do_trace_foo_bar_wrapper(args); |
---|
| 174 | + [..] |
---|
| 175 | + } |
---|