]> git.karo-electronics.de Git - mv-sheeva.git/blob - include/trace/boot.h
sched: qdisc_reset_all_tx is calling qdisc_reset without qdisc_lock
[mv-sheeva.git] / include / trace / boot.h
1 #ifndef _LINUX_TRACE_BOOT_H
2 #define _LINUX_TRACE_BOOT_H
3
4 #include <linux/module.h>
5 #include <linux/kallsyms.h>
6 #include <linux/init.h>
7
8 /*
9  * Structure which defines the trace of an initcall
10  * while it is called.
11  * You don't have to fill the func field since it is
12  * only used internally by the tracer.
13  */
14 struct boot_trace_call {
15         pid_t                   caller;
16         char                    func[KSYM_SYMBOL_LEN];
17 };
18
19 /*
20  * Structure which defines the trace of an initcall
21  * while it returns.
22  */
23 struct boot_trace_ret {
24         char                    func[KSYM_SYMBOL_LEN];
25         int                             result;
26         unsigned long long      duration;               /* nsecs */
27 };
28
29 #ifdef CONFIG_BOOT_TRACER
30 /* Append the traces on the ring-buffer */
31 extern void trace_boot_call(struct boot_trace_call *bt, initcall_t fn);
32 extern void trace_boot_ret(struct boot_trace_ret *bt, initcall_t fn);
33
34 /* Tells the tracer that smp_pre_initcall is finished.
35  * So we can start the tracing
36  */
37 extern void start_boot_trace(void);
38
39 /* Resume the tracing of other necessary events
40  * such as sched switches
41  */
42 extern void enable_boot_trace(void);
43
44 /* Suspend this tracing. Actually, only sched_switches tracing have
45  * to be suspended. Initcalls doesn't need it.)
46  */
47 extern void disable_boot_trace(void);
48 #else
49 static inline
50 void trace_boot_call(struct boot_trace_call *bt, initcall_t fn) { }
51
52 static inline
53 void trace_boot_ret(struct boot_trace_ret *bt, initcall_t fn) { }
54
55 static inline void start_boot_trace(void) { }
56 static inline void enable_boot_trace(void) { }
57 static inline void disable_boot_trace(void) { }
58 #endif /* CONFIG_BOOT_TRACER */
59
60 #endif /* __LINUX_TRACE_BOOT_H */