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 * search_module_extables(unsigned long addr)30search_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 * search_bpf_extables(unsigned long addr)40search_bpf_extables(unsigned long addr) 41 { 42 return NULL; 43 } 44 #endif 45 46 #endif /* _LINUX_EXTABLE_H */ 47