blob: 3ec58b4b75126088c58c218caf1542245eb008ef [file] [log] [blame]
Frederic Weisbecker3f5ec132008-11-11 23:21:31 +01001#ifndef _LINUX_TRACE_BOOT_H
2#define _LINUX_TRACE_BOOT_H
3
4/*
Frederic Weisbecker74239072008-11-11 23:24:42 +01005 * Structure which defines the trace of an initcall
6 * while it is called.
Frederic Weisbecker3f5ec132008-11-11 23:21:31 +01007 * You don't have to fill the func field since it is
8 * only used internally by the tracer.
9 */
Frederic Weisbecker74239072008-11-11 23:24:42 +010010struct boot_trace_call {
Frederic Weisbecker3f5ec132008-11-11 23:21:31 +010011 pid_t caller;
Stephen Rothwell80015302008-12-11 16:10:08 +010012 char func[KSYM_SYMBOL_LEN];
Frederic Weisbecker74239072008-11-11 23:24:42 +010013};
14
15/*
16 * Structure which defines the trace of an initcall
17 * while it returns.
18 */
19struct boot_trace_ret {
Stephen Rothwell80015302008-12-11 16:10:08 +010020 char func[KSYM_SYMBOL_LEN];
Frederic Weisbecker74239072008-11-11 23:24:42 +010021 int result;
22 unsigned long long duration; /* nsecs */
Frederic Weisbecker3f5ec132008-11-11 23:21:31 +010023};
24
25#ifdef CONFIG_BOOT_TRACER
Frederic Weisbecker74239072008-11-11 23:24:42 +010026/* Append the traces on the ring-buffer */
27extern void trace_boot_call(struct boot_trace_call *bt, initcall_t fn);
28extern void trace_boot_ret(struct boot_trace_ret *bt, initcall_t fn);
Frederic Weisbecker3f5ec132008-11-11 23:21:31 +010029
30/* Tells the tracer that smp_pre_initcall is finished.
31 * So we can start the tracing
32 */
33extern void start_boot_trace(void);
34
35/* Resume the tracing of other necessary events
36 * such as sched switches
37 */
38extern void enable_boot_trace(void);
39
40/* Suspend this tracing. Actually, only sched_switches tracing have
41 * to be suspended. Initcalls doesn't need it.)
42 */
43extern void disable_boot_trace(void);
44#else
Frederic Weisbecker74239072008-11-11 23:24:42 +010045static inline
46void trace_boot_call(struct boot_trace_call *bt, initcall_t fn) { }
47
48static inline
49void trace_boot_ret(struct boot_trace_ret *bt, initcall_t fn) { }
50
Frederic Weisbecker3f5ec132008-11-11 23:21:31 +010051static inline void start_boot_trace(void) { }
52static inline void enable_boot_trace(void) { }
53static inline void disable_boot_trace(void) { }
54#endif /* CONFIG_BOOT_TRACER */
55
56#endif /* __LINUX_TRACE_BOOT_H */