Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #ifndef _LINUX_EXTABLE_H
0003 #define _LINUX_EXTABLE_H
0004 
0005 #include <linux/stddef.h>   /* for NULL */
0006 #include <linux/types.h>
0007 
0008 struct module;
0009 struct exception_table_entry;
0010 
0011 const struct exception_table_entry *
0012 search_extable(const struct exception_table_entry *base,
0013            const size_t num,
0014            unsigned long value);
0015 void sort_extable(struct exception_table_entry *start,
0016           struct exception_table_entry *finish);
0017 void sort_main_extable(void);
0018 void trim_init_extable(struct module *m);
0019 
0020 /* Given an address, look for it in the exception tables */
0021 const struct exception_table_entry *search_exception_tables(unsigned long add);
0022 const struct exception_table_entry *
0023 search_kernel_exception_table(unsigned long addr);
0024 
0025 #ifdef CONFIG_MODULES
0026 /* For extable.c to search modules' exception tables. */
0027 const struct exception_table_entry *search_module_extables(unsigned long addr);
0028 #else
0029 static inline const struct exception_table_entry *
0030 search_module_extables(unsigned long addr)
0031 {
0032     return NULL;
0033 }
0034 #endif /*CONFIG_MODULES*/
0035 
0036 #ifdef CONFIG_BPF_JIT
0037 const struct exception_table_entry *search_bpf_extables(unsigned long addr);
0038 #else
0039 static inline const struct exception_table_entry *
0040 search_bpf_extables(unsigned long addr)
0041 {
0042     return NULL;
0043 }
0044 #endif
0045 
0046 #endif /* _LINUX_EXTABLE_H */