diff options
Diffstat (limited to 'include/linux/extable.h')
-rw-r--r-- | include/linux/extable.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/include/linux/extable.h b/include/linux/extable.h new file mode 100644 index 000000000..4ab9e78f3 --- /dev/null +++ b/include/linux/extable.h @@ -0,0 +1,46 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _LINUX_EXTABLE_H +#define _LINUX_EXTABLE_H + +#include <linux/stddef.h> /* for NULL */ +#include <linux/types.h> + +struct module; +struct exception_table_entry; + +const struct exception_table_entry * +search_extable(const struct exception_table_entry *base, + const size_t num, + unsigned long value); +void sort_extable(struct exception_table_entry *start, + struct exception_table_entry *finish); +void sort_main_extable(void); +void trim_init_extable(struct module *m); + +/* Given an address, look for it in the exception tables */ +const struct exception_table_entry *search_exception_tables(unsigned long add); +const struct exception_table_entry * +search_kernel_exception_table(unsigned long addr); + +#ifdef CONFIG_MODULES +/* For extable.c to search modules' exception tables. */ +const struct exception_table_entry *search_module_extables(unsigned long addr); +#else +static inline const struct exception_table_entry * +search_module_extables(unsigned long addr) +{ + return NULL; +} +#endif /*CONFIG_MODULES*/ + +#ifdef CONFIG_BPF_JIT +const struct exception_table_entry *search_bpf_extables(unsigned long addr); +#else +static inline const struct exception_table_entry * +search_bpf_extables(unsigned long addr) +{ + return NULL; +} +#endif + +#endif /* _LINUX_EXTABLE_H */ |