• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
trace_boot_call(struct boot_trace_call * bt,initcall_t fn)50 void trace_boot_call(struct boot_trace_call *bt, initcall_t fn) { }
51 
52 static inline
trace_boot_ret(struct boot_trace_ret * bt,initcall_t fn)53 void trace_boot_ret(struct boot_trace_ret *bt, initcall_t fn) { }
54 
start_boot_trace(void)55 static inline void start_boot_trace(void) { }
enable_boot_trace(void)56 static inline void enable_boot_trace(void) { }
disable_boot_trace(void)57 static inline void disable_boot_trace(void) { }
58 #endif /* CONFIG_BOOT_TRACER */
59 
60 #endif /* __LINUX_TRACE_BOOT_H */
61