1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun #ifndef _LINUX_COREDUMP_H
3*4882a593Smuzhiyun #define _LINUX_COREDUMP_H
4*4882a593Smuzhiyun
5*4882a593Smuzhiyun #include <linux/types.h>
6*4882a593Smuzhiyun #include <linux/mm.h>
7*4882a593Smuzhiyun #include <linux/fs.h>
8*4882a593Smuzhiyun #include <asm/siginfo.h>
9*4882a593Smuzhiyun
10*4882a593Smuzhiyun struct core_vma_metadata {
11*4882a593Smuzhiyun unsigned long start, end;
12*4882a593Smuzhiyun unsigned long flags;
13*4882a593Smuzhiyun unsigned long dump_size;
14*4882a593Smuzhiyun };
15*4882a593Smuzhiyun
16*4882a593Smuzhiyun /*
17*4882a593Smuzhiyun * These are the only things you should do on a core-file: use only these
18*4882a593Smuzhiyun * functions to write out all the necessary info.
19*4882a593Smuzhiyun */
20*4882a593Smuzhiyun struct coredump_params;
21*4882a593Smuzhiyun extern int dump_skip(struct coredump_params *cprm, size_t nr);
22*4882a593Smuzhiyun extern int dump_emit(struct coredump_params *cprm, const void *addr, int nr);
23*4882a593Smuzhiyun extern int dump_align(struct coredump_params *cprm, int align);
24*4882a593Smuzhiyun extern void dump_truncate(struct coredump_params *cprm);
25*4882a593Smuzhiyun int dump_user_range(struct coredump_params *cprm, unsigned long start,
26*4882a593Smuzhiyun unsigned long len);
27*4882a593Smuzhiyun int dump_vma_snapshot(struct coredump_params *cprm, int *vma_count,
28*4882a593Smuzhiyun struct core_vma_metadata **vma_meta,
29*4882a593Smuzhiyun size_t *vma_data_size_ptr);
30*4882a593Smuzhiyun #ifdef CONFIG_COREDUMP
31*4882a593Smuzhiyun extern void do_coredump(const kernel_siginfo_t *siginfo);
32*4882a593Smuzhiyun #else
do_coredump(const kernel_siginfo_t * siginfo)33*4882a593Smuzhiyun static inline void do_coredump(const kernel_siginfo_t *siginfo) {}
34*4882a593Smuzhiyun #endif
35*4882a593Smuzhiyun
36*4882a593Smuzhiyun extern int core_uses_pid;
37*4882a593Smuzhiyun extern char core_pattern[];
38*4882a593Smuzhiyun extern unsigned int core_pipe_limit;
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun #endif /* _LINUX_COREDUMP_H */
41