1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * /proc/kcore definitions
4 */
5#ifndef _LINUX_KCORE_H
6#define _LINUX_KCORE_H
7
8enum kcore_type {
9	KCORE_TEXT,
10	KCORE_VMALLOC,
11	KCORE_RAM,
12	KCORE_VMEMMAP,
13	KCORE_USER,
14};
15
16struct kcore_list {
17	struct list_head list;
18	unsigned long addr;
19	size_t size;
20	int type;
21};
22
23struct vmcore {
24	struct list_head list;
25	unsigned long long paddr;
26	unsigned long long size;
27	loff_t offset;
28};
29
30struct vmcoredd_node {
31	struct list_head list;	/* List of dumps */
32	void *buf;		/* Buffer containing device's dump */
33	unsigned int size;	/* Size of the buffer */
34};
35
36#ifdef CONFIG_PROC_KCORE
37void __init kclist_add(struct kcore_list *, void *, size_t, int type);
38
39extern int __init register_mem_pfn_is_ram(int (*fn)(unsigned long pfn));
40#else
41static inline
42void kclist_add(struct kcore_list *new, void *addr, size_t size, int type)
43{
44}
45#endif
46
47#endif /* _LINUX_KCORE_H */
48