Greg Kroah-Hartman | b244131 | 2017-11-01 15:07:57 +0100 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
David Howells | 2f96b8c | 2013-04-12 00:10:25 +0100 | [diff] [blame] | 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, |
Jia Zhang | 595dd46 | 2018-02-12 22:44:53 +0800 | [diff] [blame] | 13 | KCORE_USER, |
David Howells | 2f96b8c | 2013-04-12 00:10:25 +0100 | [diff] [blame] | 14 | KCORE_OTHER, |
Adrian Hunter | 6855dc4 | 2018-06-06 15:54:11 +0300 | [diff] [blame] | 15 | KCORE_REMAP, |
David Howells | 2f96b8c | 2013-04-12 00:10:25 +0100 | [diff] [blame] | 16 | }; |
| 17 | |
| 18 | struct kcore_list { |
| 19 | struct list_head list; |
| 20 | unsigned long addr; |
Adrian Hunter | 6855dc4 | 2018-06-06 15:54:11 +0300 | [diff] [blame] | 21 | unsigned long vaddr; |
David Howells | 2f96b8c | 2013-04-12 00:10:25 +0100 | [diff] [blame] | 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 | |
Rahul Lakkireddy | 2724273 | 2018-05-02 15:17:17 +0530 | [diff] [blame] | 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 | |
David Howells | 2f96b8c | 2013-04-12 00:10:25 +0100 | [diff] [blame] | 39 | #ifdef CONFIG_PROC_KCORE |
Omar Sandoval | a8dd9c4 | 2018-08-21 21:54:51 -0700 | [diff] [blame] | 40 | void __init kclist_add(struct kcore_list *, void *, size_t, int type); |
Adrian Hunter | 6855dc4 | 2018-06-06 15:54:11 +0300 | [diff] [blame] | 41 | static inline |
| 42 | void kclist_add_remap(struct kcore_list *m, void *addr, void *vaddr, size_t sz) |
| 43 | { |
| 44 | m->vaddr = (unsigned long)vaddr; |
| 45 | kclist_add(m, addr, sz, KCORE_REMAP); |
| 46 | } |
Kairui Song | 83e3e89 | 2019-03-08 11:05:08 +0800 | [diff] [blame] | 47 | |
| 48 | extern int __init register_mem_pfn_is_ram(int (*fn)(unsigned long pfn)); |
David Howells | 2f96b8c | 2013-04-12 00:10:25 +0100 | [diff] [blame] | 49 | #else |
| 50 | static inline |
| 51 | void kclist_add(struct kcore_list *new, void *addr, size_t size, int type) |
| 52 | { |
| 53 | } |
Adrian Hunter | 6855dc4 | 2018-06-06 15:54:11 +0300 | [diff] [blame] | 54 | |
| 55 | static inline |
| 56 | void kclist_add_remap(struct kcore_list *m, void *addr, void *vaddr, size_t sz) |
| 57 | { |
| 58 | } |
David Howells | 2f96b8c | 2013-04-12 00:10:25 +0100 | [diff] [blame] | 59 | #endif |
| 60 | |
| 61 | #endif /* _LINUX_KCORE_H */ |