diff options
author | Anton Vorontsov <anton.vorontsov@linaro.org> | 2012-07-09 17:10:41 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-07-17 10:05:52 -0700 |
commit | 060287b8c467bf49a594d8d669e1986c6d8d76b0 (patch) | |
tree | f869d1cc6d09875a0dc4f42b230f144617fc3bfc /include/linux/pstore.h | |
parent | 897dba027445be93f40e5caf550556ca38c48c51 (diff) | |
download | linux-stable-060287b8c467bf49a594d8d669e1986c6d8d76b0.tar.gz linux-stable-060287b8c467bf49a594d8d669e1986c6d8d76b0.tar.bz2 linux-stable-060287b8c467bf49a594d8d669e1986c6d8d76b0.zip |
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 b107484192fc..120443b0fda5 100644 --- a/include/linux/pstore.h +++ b/include/linux/pstore.h @@ -30,6 +30,7 @@ enum pstore_type_id { PSTORE_TYPE_DMESG = 0, PSTORE_TYPE_MCE = 1, PSTORE_TYPE_CONSOLE = 2, + PSTORE_TYPE_FTRACE = 3, PSTORE_TYPE_UNKNOWN = 255 }; @@ -57,6 +58,14 @@ struct pstore_info { void *data; }; + +#ifdef CONFIG_PSTORE_FTRACE +extern void pstore_ftrace_call(unsigned long ip, unsigned long parent_ip); +#else +static inline void pstore_ftrace_call(unsigned long ip, unsigned long parent_ip) +{ } +#endif + #ifdef CONFIG_PSTORE extern int pstore_register(struct pstore_info *); #else |