Commit | Line | Data |
---|---|---|
060287b8 AV |
1 | #ifndef __PSTORE_INTERNAL_H__ |
2 | #define __PSTORE_INTERNAL_H__ | |
3 | ||
67a101f5 AV |
4 | #include <linux/types.h> |
5 | #include <linux/time.h> | |
060287b8 AV |
6 | #include <linux/pstore.h> |
7 | ||
8 | #if NR_CPUS <= 2 && defined(CONFIG_ARM_THUMB) | |
9 | #define PSTORE_CPU_IN_IP 0x1 | |
10 | #elif NR_CPUS <= 4 && defined(CONFIG_ARM) | |
11 | #define PSTORE_CPU_IN_IP 0x3 | |
12 | #endif | |
13 | ||
14 | struct pstore_ftrace_record { | |
15 | unsigned long ip; | |
16 | unsigned long parent_ip; | |
17 | #ifndef PSTORE_CPU_IN_IP | |
18 | unsigned int cpu; | |
19 | #endif | |
20 | }; | |
21 | ||
22 | static inline void | |
23 | pstore_ftrace_encode_cpu(struct pstore_ftrace_record *rec, unsigned int cpu) | |
24 | { | |
25 | #ifndef PSTORE_CPU_IN_IP | |
26 | rec->cpu = cpu; | |
27 | #else | |
28 | rec->ip |= cpu; | |
29 | #endif | |
30 | } | |
31 | ||
32 | static inline unsigned int | |
33 | pstore_ftrace_decode_cpu(struct pstore_ftrace_record *rec) | |
34 | { | |
35 | #ifndef PSTORE_CPU_IN_IP | |
36 | return rec->cpu; | |
37 | #else | |
38 | return rec->ip & PSTORE_CPU_IN_IP; | |
39 | #endif | |
40 | } | |
41 | ||
65f8c95e AV |
42 | #ifdef CONFIG_PSTORE_FTRACE |
43 | extern void pstore_register_ftrace(void); | |
44 | #else | |
45 | static inline void pstore_register_ftrace(void) {} | |
46 | #endif | |
47 | ||
060287b8 AV |
48 | extern struct pstore_info *psinfo; |
49 | ||
366f7e7a | 50 | extern void pstore_set_kmsg_bytes(int); |
6dda9266 | 51 | extern void pstore_get_records(int); |
ca01d6dd | 52 | extern int pstore_mkfile(enum pstore_type_id, char *psname, u64 id, |
755d4fe4 | 53 | int count, char *data, size_t size, |
638c1fd3 | 54 | struct timespec time, struct pstore_info *psi); |
ca01d6dd | 55 | extern int pstore_is_mounted(void); |
060287b8 AV |
56 | |
57 | #endif |