linux/include/linux/coredump.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef _LINUX_COREDUMP_H
   3#define _LINUX_COREDUMP_H
   4
   5#include <linux/types.h>
   6#include <linux/mm.h>
   7#include <linux/fs.h>
   8#include <asm/siginfo.h>
   9
  10#ifdef CONFIG_COREDUMP
  11struct core_vma_metadata {
  12        unsigned long start, end;
  13        unsigned long flags;
  14        unsigned long dump_size;
  15        unsigned long pgoff;
  16        struct file   *file;
  17};
  18
  19struct coredump_params {
  20        const kernel_siginfo_t *siginfo;
  21        struct pt_regs *regs;
  22        struct file *file;
  23        unsigned long limit;
  24        unsigned long mm_flags;
  25        loff_t written;
  26        loff_t pos;
  27        loff_t to_skip;
  28        int vma_count;
  29        size_t vma_data_size;
  30        struct core_vma_metadata *vma_meta;
  31};
  32
  33/*
  34 * These are the only things you should do on a core-file: use only these
  35 * functions to write out all the necessary info.
  36 */
  37extern void dump_skip_to(struct coredump_params *cprm, unsigned long to);
  38extern void dump_skip(struct coredump_params *cprm, size_t nr);
  39extern int dump_emit(struct coredump_params *cprm, const void *addr, int nr);
  40extern int dump_align(struct coredump_params *cprm, int align);
  41int dump_user_range(struct coredump_params *cprm, unsigned long start,
  42                    unsigned long len);
  43extern void do_coredump(const kernel_siginfo_t *siginfo);
  44#else
  45static inline void do_coredump(const kernel_siginfo_t *siginfo) {}
  46#endif
  47
  48#if defined(CONFIG_COREDUMP) && defined(CONFIG_SYSCTL)
  49extern void validate_coredump_safety(void);
  50#else
  51static inline void validate_coredump_safety(void) {}
  52#endif
  53
  54#endif /* _LINUX_COREDUMP_H */
  55