| 1 | /* SPDX-License-Identifier: GPL-2.0 */ | 
|---|
| 2 | #ifndef _LINUX_EXTABLE_H | 
|---|
| 3 | #define _LINUX_EXTABLE_H | 
|---|
| 4 |  | 
|---|
| 5 | #include <linux/stddef.h>	/* for NULL */ | 
|---|
| 6 | #include <linux/types.h> | 
|---|
| 7 |  | 
|---|
| 8 | struct module; | 
|---|
| 9 | struct exception_table_entry; | 
|---|
| 10 |  | 
|---|
| 11 | const struct exception_table_entry * | 
|---|
| 12 | search_extable(const struct exception_table_entry *base, | 
|---|
| 13 | const size_t num, | 
|---|
| 14 | unsigned long value); | 
|---|
| 15 | void sort_extable(struct exception_table_entry *start, | 
|---|
| 16 | struct exception_table_entry *finish); | 
|---|
| 17 | void sort_main_extable(void); | 
|---|
| 18 | void trim_init_extable(struct module *m); | 
|---|
| 19 |  | 
|---|
| 20 | /* Given an address, look for it in the exception tables */ | 
|---|
| 21 | const struct exception_table_entry *search_exception_tables(unsigned long add); | 
|---|
| 22 | const struct exception_table_entry * | 
|---|
| 23 | search_kernel_exception_table(unsigned long addr); | 
|---|
| 24 |  | 
|---|
| 25 | #ifdef CONFIG_MODULES | 
|---|
| 26 | /* For extable.c to search modules' exception tables. */ | 
|---|
| 27 | const struct exception_table_entry *search_module_extables(unsigned long addr); | 
|---|
| 28 | #else | 
|---|
| 29 | static inline const struct exception_table_entry * | 
|---|
| 30 | search_module_extables(unsigned long addr) | 
|---|
| 31 | { | 
|---|
| 32 | return NULL; | 
|---|
| 33 | } | 
|---|
| 34 | #endif /*CONFIG_MODULES*/ | 
|---|
| 35 |  | 
|---|
| 36 | #ifdef CONFIG_BPF_JIT | 
|---|
| 37 | const struct exception_table_entry *search_bpf_extables(unsigned long addr); | 
|---|
| 38 | #else | 
|---|
| 39 | static inline const struct exception_table_entry * | 
|---|
| 40 | search_bpf_extables(unsigned long addr) | 
|---|
| 41 | { | 
|---|
| 42 | return NULL; | 
|---|
| 43 | } | 
|---|
| 44 | #endif | 
|---|
| 45 |  | 
|---|
| 46 | #endif /* _LINUX_EXTABLE_H */ | 
|---|
| 47 |  | 
|---|