1 #ifndef _COMPAT_LINUX_TRACEPOINT_H
2 #define _COMPAT_LINUX_TRACEPOINT_H 1
4 #include <linux/version.h>
6 #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,27))
8 #include_next <linux/tracepoint.h>
10 /* Backports f42c85e7 */
11 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30))
12 #undef TP_STRUCT__entry
13 #define TP_STRUCT__entry(args...) args
16 /* Backports 091ad365, a rename */
17 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33))
18 #define DECLARE_EVENT_CLASS TRACE_EVENT_TEMPLATE
21 /* Backpports 2939b0469 */
22 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30))
23 #define TP_PROTO TPPROTO
24 #define TP_ARGS TPARGS
26 #define TP_RAW_FMT TPRAWFMT
29 /* Force disabling tracing */
32 #define PARAMS(args...) args
35 #define TRACE_EVENT(name, proto, ...) \
36 DECLARE_TRACE(name, PARAMS(proto), PARAMS(args))
38 #undef DECLARE_EVENT_CLASS
39 #define DECLARE_EVENT_CLASS(...)
42 #define DEFINE_EVENT(template, name, proto, args) \
43 DECLARE_TRACE(name, PARAMS(proto), PARAMS(args))
45 #undef DECLARE_TRACE_NOARGS
46 #define DECLARE_TRACE_NOARGS(name) \
47 __DECLARE_TRACE(name, void, , 1, void *__data, __data)
50 /* Backports 38516ab59fbc5b3bb278cf5e1fe2867c70cff32e */
51 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
54 #define DECLARE_TRACE(name, proto, args) \
55 __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), 1, \
56 PARAMS(void *__data, proto), \
59 #undef DECLARE_TRACE_CONDITION
60 #define DECLARE_TRACE_CONDITION(name, proto, args, cond) \
61 __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), PARAMS(cond), \
62 PARAMS(void *__data, proto), \
68 #define DECLARE_TRACE(name, proto, args) \
69 __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), 1, \
70 PARAMS(void *__data, proto), \
73 #undef DECLARE_TRACE_CONDITION
74 #define DECLARE_TRACE_CONDITION(name, proto, args, cond) \
75 __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), PARAMS(cond), \
76 PARAMS(void *__data, proto), \
78 #endif /* backport 38516ab59fbc5b3bb278cf5e1fe2867c70cff32e */
80 /* Backports 38516ab59fbc5b3bb278cf5e1fe2867c70cff32e */
81 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
83 /* Backports c420970ef476d7d68df119711700666224001f43 */
84 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30))
86 #undef __DECLARE_TRACE
87 #define __DECLARE_TRACE(name, proto, args, cond, data_proto, data_args) \
88 static inline void trace_##name(proto) \
90 static inline void trace_##name##_rcuidle(proto) \
93 register_trace_##name(void (*probe)(proto)) \
98 unregister_trace_##name(void (*probe)(proto)) \
101 static inline void check_trace_callback_type_##name(void (*cb)(data_proto)) \
106 #undef __DECLARE_TRACE
107 #define __DECLARE_TRACE(name, proto, args, cond, data_proto, data_args) \
108 static inline void trace_##name(proto) \
110 static inline void trace_##name##_rcuidle(proto) \
113 register_trace_##name(void (*probe)(proto)) \
118 unregister_trace_##name(void (*probe)(proto)) \
122 static inline void check_trace_callback_type_##name(void (*cb)(data_proto)) \
125 #endif /* backport c420970ef476d7d68df119711700666224001f43 */
129 #undef __DECLARE_TRACE
130 #define __DECLARE_TRACE(name, proto, args, cond, data_proto, data_args) \
131 static inline void trace_##name(proto) \
133 static inline void trace_##name##_rcuidle(proto) \
136 register_trace_##name(void (*probe)(data_proto), \
142 unregister_trace_##name(void (*probe)(data_proto), \
147 static inline void check_trace_callback_type_##name(void (*cb)(data_proto)) \
151 #endif /* backport 38516ab59fbc5b3bb278cf5e1fe2867c70cff32e */
153 #undef DEFINE_TRACE_FN
154 #define DEFINE_TRACE_FN(name, reg, unreg)
157 #define DEFINE_TRACE(name)
159 #undef EXPORT_TRACEPOINT_SYMBOL_GPL
160 #define EXPORT_TRACEPOINT_SYMBOL_GPL(name)
162 #undef EXPORT_TRACEPOINT_SYMBOL
163 #define EXPORT_TRACEPOINT_SYMBOL(name)
165 #ifdef CONFIG_TRACEPOINTS
166 #else /* CONFIG_TRACEPOINTS */
167 #endif /* CONFIG_TRACEPOINTS */
169 #else /* just disable tracing */
171 /* Disable all tracing */
173 #define TRACE_EVENT(name, proto, ...) \
174 static inline void trace_ ## name(proto) {}
175 #undef DECLARE_EVENT_CLASS
176 #define DECLARE_EVENT_CLASS(...)
178 #define DEFINE_EVENT(evt_class, name, proto, ...) \
179 static inline void trace_ ## name(proto) {}
181 #define TP_PROTO(args...) args
182 #define TP_ARGS(args...) args
183 #define TP_CONDITION(args...) args
185 #endif /* (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,27)) */
187 #endif /* _COMPAT_LINUX_TRACEPOINT_H */