diff options
Diffstat (limited to 'fs/pstore/internal.h')
| -rw-r--r-- | fs/pstore/internal.h | 58 | 
1 files changed, 58 insertions, 0 deletions
diff --git a/fs/pstore/internal.h b/fs/pstore/internal.h new file mode 100644 index 00000000000..3b3d305277c --- /dev/null +++ b/fs/pstore/internal.h @@ -0,0 +1,58 @@ +#ifndef __PSTORE_INTERNAL_H__ +#define __PSTORE_INTERNAL_H__ + +#include <linux/types.h> +#include <linux/time.h> +#include <linux/pstore.h> + +#if NR_CPUS <= 2 && defined(CONFIG_ARM_THUMB) +#define PSTORE_CPU_IN_IP 0x1 +#elif NR_CPUS <= 4 && defined(CONFIG_ARM) +#define PSTORE_CPU_IN_IP 0x3 +#endif + +struct pstore_ftrace_record { +	unsigned long ip; +	unsigned long parent_ip; +#ifndef PSTORE_CPU_IN_IP +	unsigned int cpu; +#endif +}; + +static inline void +pstore_ftrace_encode_cpu(struct pstore_ftrace_record *rec, unsigned int cpu) +{ +#ifndef PSTORE_CPU_IN_IP +	rec->cpu = cpu; +#else +	rec->ip |= cpu; +#endif +} + +static inline unsigned int +pstore_ftrace_decode_cpu(struct pstore_ftrace_record *rec) +{ +#ifndef PSTORE_CPU_IN_IP +	return rec->cpu; +#else +	return rec->ip & PSTORE_CPU_IN_IP; +#endif +} + +#ifdef CONFIG_PSTORE_FTRACE +extern void pstore_register_ftrace(void); +#else +static inline void pstore_register_ftrace(void) {} +#endif + +extern struct pstore_info *psinfo; + +extern void	pstore_set_kmsg_bytes(int); +extern void	pstore_get_records(int); +extern int	pstore_mkfile(enum pstore_type_id, char *psname, u64 id, +			      int count, char *data, bool compressed, +			      size_t size, struct timespec time, +			      struct pstore_info *psi); +extern int	pstore_is_mounted(void); + +#endif  | 
