hc
2024-03-22 f63cd4c03ea42695d5f9b0e1798edd196923aae6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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 */