1 #ifndef _LINUX_TRACE_BOOT_H
2 #define _LINUX_TRACE_BOOT_H
4 #include <linux/module.h>
5 #include <linux/kallsyms.h>
6 #include <linux/init.h>
9 * Structure which defines the trace of an initcall
11 * You don't have to fill the func field since it is
12 * only used internally by the tracer.
14 struct boot_trace_call
{
16 char func
[KSYM_SYMBOL_LEN
];
20 * Structure which defines the trace of an initcall
23 struct boot_trace_ret
{
24 char func
[KSYM_SYMBOL_LEN
];
26 unsigned long long duration
; /* nsecs */
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
);
34 /* Tells the tracer that smp_pre_initcall is finished.
35 * So we can start the tracing
37 extern void start_boot_trace(void);
39 /* Resume the tracing of other necessary events
40 * such as sched switches
42 extern void enable_boot_trace(void);
44 /* Suspend this tracing. Actually, only sched_switches tracing have
45 * to be suspended. Initcalls doesn't need it.)
47 extern void disable_boot_trace(void);
50 void trace_boot_call(struct boot_trace_call
*bt
, initcall_t fn
) { }
53 void trace_boot_ret(struct boot_trace_ret
*bt
, initcall_t fn
) { }
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 */
60 #endif /* __LINUX_TRACE_BOOT_H */