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