Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 158423
b: refs/heads/master
c: 63fbdab
h: refs/heads/master
i:
  158421: 39e43ac
  158419: de05e85
  158415: a7d4c16
v: v3
  • Loading branch information
Jason Baron authored and Frederic Weisbecker committed Aug 11, 2009
1 parent 6620a35 commit e1355ed
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 066e0378c23f0a3db730893f6a041e4a3922a385
refs/heads/master: 63fbdab3157b72467013fe4dcf88c85e45280ef7
31 changes: 27 additions & 4 deletions trunk/include/linux/tracepoint.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,10 @@ struct tracepoint {
* Make sure the alignment of the structure in the __tracepoints section will
* not add unwanted padding between the beginning of the section and the
* structure. Force alignment to the same alignment as the section start.
* An optional set of (un)registration functions can be passed to perform any
* additional (un)registration work.
*/
#define DECLARE_TRACE(name, proto, args) \
#define DECLARE_TRACE_WITH_CALLBACK(name, proto, args, reg, unreg) \
extern struct tracepoint __tracepoint_##name; \
static inline void trace_##name(proto) \
{ \
Expand All @@ -71,13 +73,30 @@ struct tracepoint {
} \
static inline int register_trace_##name(void (*probe)(proto)) \
{ \
return tracepoint_probe_register(#name, (void *)probe); \
int ret; \
void (*func)(void) = reg; \
\
ret = tracepoint_probe_register(#name, (void *)probe); \
if (func && !ret) \
func(); \
return ret; \
} \
static inline int unregister_trace_##name(void (*probe)(proto)) \
{ \
return tracepoint_probe_unregister(#name, (void *)probe);\
int ret; \
void (*func)(void) = unreg; \
\
ret = tracepoint_probe_unregister(#name, (void *)probe);\
if (func && !ret) \
func(); \
return ret; \
}


#define DECLARE_TRACE(name, proto, args) \
DECLARE_TRACE_WITH_CALLBACK(name, TP_PROTO(proto), TP_ARGS(args),\
NULL, NULL);

#define DEFINE_TRACE(name) \
static const char __tpstrtab_##name[] \
__attribute__((section("__tracepoints_strings"))) = #name; \
Expand All @@ -94,7 +113,7 @@ extern void tracepoint_update_probe_range(struct tracepoint *begin,
struct tracepoint *end);

#else /* !CONFIG_TRACEPOINTS */
#define DECLARE_TRACE(name, proto, args) \
#define DECLARE_TRACE_WITH_CALLBACK(name, proto, args, reg, unreg) \
static inline void _do_trace_##name(struct tracepoint *tp, proto) \
{ } \
static inline void trace_##name(proto) \
Expand All @@ -108,6 +127,10 @@ extern void tracepoint_update_probe_range(struct tracepoint *begin,
return -ENOSYS; \
}

#define DECLARE_TRACE(name, proto, args) \
DECLARE_TRACE_WITH_CALLBACK(name, TP_PROTO(proto), TP_ARGS(args),\
NULL, NULL);

#define DEFINE_TRACE(name)
#define EXPORT_TRACEPOINT_SYMBOL_GPL(name)
#define EXPORT_TRACEPOINT_SYMBOL(name)
Expand Down

0 comments on commit e1355ed

Please sign in to comment.