diff options
Diffstat (limited to 'include/trace/boot.h')
| -rw-r--r-- | include/trace/boot.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/include/trace/boot.h b/include/trace/boot.h new file mode 100644 index 000000000000..088ea089e31d --- /dev/null +++ b/include/trace/boot.h | |||
| @@ -0,0 +1,60 @@ | |||
| 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 */ | ||
