1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun #ifndef __PSTORE_INTERNAL_H__
3*4882a593Smuzhiyun #define __PSTORE_INTERNAL_H__
4*4882a593Smuzhiyun
5*4882a593Smuzhiyun #include <linux/types.h>
6*4882a593Smuzhiyun #include <linux/time.h>
7*4882a593Smuzhiyun #include <linux/pstore.h>
8*4882a593Smuzhiyun
9*4882a593Smuzhiyun #define PSTORE_DEFAULT_KMSG_BYTES 10240
10*4882a593Smuzhiyun extern unsigned long kmsg_bytes;
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun #ifdef CONFIG_PSTORE_FTRACE
13*4882a593Smuzhiyun extern void pstore_register_ftrace(void);
14*4882a593Smuzhiyun extern void pstore_unregister_ftrace(void);
15*4882a593Smuzhiyun ssize_t pstore_ftrace_combine_log(char **dest_log, size_t *dest_log_size,
16*4882a593Smuzhiyun const char *src_log, size_t src_log_size);
17*4882a593Smuzhiyun #else
pstore_register_ftrace(void)18*4882a593Smuzhiyun static inline void pstore_register_ftrace(void) {}
pstore_unregister_ftrace(void)19*4882a593Smuzhiyun static inline void pstore_unregister_ftrace(void) {}
20*4882a593Smuzhiyun static inline ssize_t
pstore_ftrace_combine_log(char ** dest_log,size_t * dest_log_size,const char * src_log,size_t src_log_size)21*4882a593Smuzhiyun pstore_ftrace_combine_log(char **dest_log, size_t *dest_log_size,
22*4882a593Smuzhiyun const char *src_log, size_t src_log_size)
23*4882a593Smuzhiyun {
24*4882a593Smuzhiyun *dest_log_size = 0;
25*4882a593Smuzhiyun return 0;
26*4882a593Smuzhiyun }
27*4882a593Smuzhiyun #endif
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun #ifdef CONFIG_PSTORE_PMSG
30*4882a593Smuzhiyun extern void pstore_register_pmsg(void);
31*4882a593Smuzhiyun extern void pstore_unregister_pmsg(void);
32*4882a593Smuzhiyun #else
pstore_register_pmsg(void)33*4882a593Smuzhiyun static inline void pstore_register_pmsg(void) {}
pstore_unregister_pmsg(void)34*4882a593Smuzhiyun static inline void pstore_unregister_pmsg(void) {}
35*4882a593Smuzhiyun #endif
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun extern struct pstore_info *psinfo;
38*4882a593Smuzhiyun
39*4882a593Smuzhiyun extern void pstore_set_kmsg_bytes(int);
40*4882a593Smuzhiyun extern void pstore_get_records(int);
41*4882a593Smuzhiyun extern void pstore_get_backend_records(struct pstore_info *psi,
42*4882a593Smuzhiyun struct dentry *root, int quiet);
43*4882a593Smuzhiyun extern int pstore_put_backend_records(struct pstore_info *psi);
44*4882a593Smuzhiyun extern int pstore_mkfile(struct dentry *root,
45*4882a593Smuzhiyun struct pstore_record *record);
46*4882a593Smuzhiyun extern void pstore_record_init(struct pstore_record *record,
47*4882a593Smuzhiyun struct pstore_info *psi);
48*4882a593Smuzhiyun
49*4882a593Smuzhiyun /* Called during pstore init/exit. */
50*4882a593Smuzhiyun int __init pstore_init_fs(void);
51*4882a593Smuzhiyun void __exit pstore_exit_fs(void);
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun #endif
54