123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- #ifndef _LINUX_TRACE_BOOT_H
- #define _LINUX_TRACE_BOOT_H
- #include <linux/module.h>
- #include <linux/kallsyms.h>
- #include <linux/init.h>
- /*
- * Structure which defines the trace of an initcall
- * while it is called.
- * You don't have to fill the func field since it is
- * only used internally by the tracer.
- */
- struct boot_trace_call {
- pid_t caller;
- char func[KSYM_SYMBOL_LEN];
- };
- /*
- * Structure which defines the trace of an initcall
- * while it returns.
- */
- struct boot_trace_ret {
- char func[KSYM_SYMBOL_LEN];
- int result;
- unsigned long long duration; /* nsecs */
- };
- #ifdef CONFIG_BOOT_TRACER
- /* Append the traces on the ring-buffer */
- extern void trace_boot_call(struct boot_trace_call *bt, initcall_t fn);
- extern void trace_boot_ret(struct boot_trace_ret *bt, initcall_t fn);
- /* Tells the tracer that smp_pre_initcall is finished.
- * So we can start the tracing
- */
- extern void start_boot_trace(void);
- /* Resume the tracing of other necessary events
- * such as sched switches
- */
- extern void enable_boot_trace(void);
- /* Suspend this tracing. Actually, only sched_switches tracing have
- * to be suspended. Initcalls doesn't need it.)
- */
- extern void disable_boot_trace(void);
- #else
- static inline
- void trace_boot_call(struct boot_trace_call *bt, initcall_t fn) { }
- static inline
- void trace_boot_ret(struct boot_trace_ret *bt, initcall_t fn) { }
- static inline void start_boot_trace(void) { }
- static inline void enable_boot_trace(void) { }
- static inline void disable_boot_trace(void) { }
- #endif /* CONFIG_BOOT_TRACER */
- #endif /* __LINUX_TRACE_BOOT_H */
|