Something went wrong. Try again.
(I'm so sorry!) Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Something went wrong. Try again.
C
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384/* SPDX-License-Identifier: GPL-2.0 */#ifndef _LINUX_COREDUMP_H#define _LINUX_COREDUMP_H
#include <linux/types.h>#include <linux/mm.h>#include <linux/fs.h>#include <linux/sched/coredump.h>#include <asm/siginfo.h>
#ifdef CONFIG_COREDUMPstruct core_vma_metadata { unsigned long start, end; vm_flags_t flags; unsigned long dump_size; unsigned long pgoff; struct file *file;};
struct coredump_params { const kernel_siginfo_t *siginfo; struct file *file; unsigned long limit; /* MMF_DUMP_FILTER_* bits, snapshot of mm->flags at dump start. */ unsigned long mm_flags; /* Snapshot of dumpable at dump start. */ enum task_dumpable dumpable; int cpu; loff_t written; loff_t pos; loff_t to_skip; int vma_count; size_t vma_data_size; struct core_vma_metadata *vma_meta; struct pid *pid;};
extern unsigned int core_file_note_size_limit;
/* * These are the only things you should do on a core-file: use only these * functions to write out all the necessary info. */extern void dump_skip_to(struct coredump_params *cprm, unsigned long to);extern void dump_skip(struct coredump_params *cprm, size_t nr);extern int dump_emit(struct coredump_params *cprm, const void *addr, int nr);extern int dump_align(struct coredump_params *cprm, int align);int dump_user_range(struct coredump_params *cprm, unsigned long start, unsigned long len);extern void vfs_coredump(const kernel_siginfo_t *siginfo);
/* * Logging for the coredump code, ratelimited. * The TGID and comm fields are added to the message. */
#define __COREDUMP_PRINTK(Level, Format, ...) \ do { \ char comm[TASK_COMM_LEN]; \ /* This will always be NUL terminated. */ \ memcpy(comm, current->comm, sizeof(comm)); \ printk_ratelimited(Level "coredump: %d(%*pE): " Format "\n", \ task_tgid_vnr(current), (int)strlen(comm), comm, ##__VA_ARGS__); \ } while (0) \
#define coredump_report(fmt, ...) __COREDUMP_PRINTK(KERN_INFO, fmt, ##__VA_ARGS__)#define coredump_report_failure(fmt, ...) __COREDUMP_PRINTK(KERN_WARNING, fmt, ##__VA_ARGS__)
#elsestatic inline void vfs_coredump(const kernel_siginfo_t *siginfo) {}
#define coredump_report(...)#define coredump_report_failure(...)
#endif
#if defined(CONFIG_COREDUMP) && defined(CONFIG_SYSCTL)extern void validate_coredump_safety(void);#elsestatic inline void validate_coredump_safety(void) {}#endif
#endif /* _LINUX_COREDUMP_H */