aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/ftrace.h
diff options
context:
space:
mode:
authorFrederic Weisbecker <fweisbec@gmail.com>2008-10-02 07:26:05 -0400
committerIngo Molnar <mingo@elte.hu>2008-10-14 04:39:12 -0400
commit5601020feb0c3010e9e3e0131e9697ac6a06777b (patch)
tree99d1a70dbf3bba2b5ae1007c4828c28e6480214a /include/linux/ftrace.h
parentcb5ab74204a6e2579d1119bf1348eb806526b12b (diff)
tracing/fastboot: get the initcall name before it disappears
After some initcall traces, some initcall names may be inconsistent. That's because these functions will disappear from the .init section and also their name from the symbols table. So we have to copy the name of the function in a buffer large enough during the trace appending. It is not costly for the ring_buffer because the number of initcall entries is commonly not really large. Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include/linux/ftrace.h')
-rw-r--r--include/linux/ftrace.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h
index 4455490d91bd..e672e51c40a9 100644
--- a/include/linux/ftrace.h
+++ b/include/linux/ftrace.h
@@ -7,6 +7,7 @@
7#include <linux/fs.h> 7#include <linux/fs.h>
8#include <linux/init.h> 8#include <linux/init.h>
9#include <linux/types.h> 9#include <linux/types.h>
10#include <linux/kallsyms.h>
10 11
11extern int ftrace_enabled; 12extern int ftrace_enabled;
12extern int 13extern int
@@ -213,7 +214,7 @@ ftrace_init_module(unsigned long *start, unsigned long *end) { }
213 214
214struct boot_trace { 215struct boot_trace {
215 pid_t caller; 216 pid_t caller;
216 initcall_t func; 217 char func[KSYM_NAME_LEN];
217 int result; 218 int result;
218 unsigned long long duration; 219 unsigned long long duration;
219 ktime_t calltime; 220 ktime_t calltime;
@@ -221,10 +222,10 @@ struct boot_trace {
221}; 222};
222 223
223#ifdef CONFIG_BOOT_TRACER 224#ifdef CONFIG_BOOT_TRACER
224extern void trace_boot(struct boot_trace *it); 225extern void trace_boot(struct boot_trace *it, initcall_t fn);
225extern void start_boot_trace(void); 226extern void start_boot_trace(void);
226#else 227#else
227static inline void trace_boot(struct boot_trace *it) { } 228static inline void trace_boot(struct boot_trace *it, initcall_t fn) { }
228static inline void start_boot_trace(void) { } 229static inline void start_boot_trace(void) { }
229#endif 230#endif
230 231