diff options
author | Anton Vorontsov <anton.vorontsov@linaro.org> | 2012-07-09 20:10:41 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-07-17 13:05:52 -0400 |
commit | 060287b8c467bf49a594d8d669e1986c6d8d76b0 (patch) | |
tree | f869d1cc6d09875a0dc4f42b230f144617fc3bfc /include/linux/pstore.h | |
parent | 897dba027445be93f40e5caf550556ca38c48c51 (diff) |
pstore: Add persistent function tracing
With this support kernel can save function call chain log into a
persistent ram buffer that can be decoded and dumped after reboot
through pstore filesystem. It can be used to determine what function
was last called before a reset or panic.
We store the log in a binary format and then decode it at read time.
p.s.
Mostly the code comes from trace_persistent.c driver found in the
Android git tree, written by Colin Cross <ccross@android.com>
(according to sign-off history). I reworked the driver a little bit,
and ported it to pstore.
Signed-off-by: Anton Vorontsov <anton.vorontsov@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include/linux/pstore.h')
-rw-r--r-- | include/linux/pstore.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/include/linux/pstore.h b/include/linux/pstore.h index b107484192f..120443b0fda 100644 --- a/include/linux/pstore.h +++ b/include/linux/pstore.h | |||
@@ -30,6 +30,7 @@ enum pstore_type_id { | |||
30 | PSTORE_TYPE_DMESG = 0, | 30 | PSTORE_TYPE_DMESG = 0, |
31 | PSTORE_TYPE_MCE = 1, | 31 | PSTORE_TYPE_MCE = 1, |
32 | PSTORE_TYPE_CONSOLE = 2, | 32 | PSTORE_TYPE_CONSOLE = 2, |
33 | PSTORE_TYPE_FTRACE = 3, | ||
33 | PSTORE_TYPE_UNKNOWN = 255 | 34 | PSTORE_TYPE_UNKNOWN = 255 |
34 | }; | 35 | }; |
35 | 36 | ||
@@ -57,6 +58,14 @@ struct pstore_info { | |||
57 | void *data; | 58 | void *data; |
58 | }; | 59 | }; |
59 | 60 | ||
61 | |||
62 | #ifdef CONFIG_PSTORE_FTRACE | ||
63 | extern void pstore_ftrace_call(unsigned long ip, unsigned long parent_ip); | ||
64 | #else | ||
65 | static inline void pstore_ftrace_call(unsigned long ip, unsigned long parent_ip) | ||
66 | { } | ||
67 | #endif | ||
68 | |||
60 | #ifdef CONFIG_PSTORE | 69 | #ifdef CONFIG_PSTORE |
61 | extern int pstore_register(struct pstore_info *); | 70 | extern int pstore_register(struct pstore_info *); |
62 | #else | 71 | #else |