export_symbol 变量
时间: 2023-09-20 14:10:50 浏览: 47
`export_symbol` 是一个在 Linux/Unix 操作系统中的内核开发中使用的宏,用于将一个符号(函数、变量等)导出到内核模块以外,以便其他模块或内核能够使用该符号。在 Linux 内核中,只有被导出的符号才能被其他模块和内核访问和使用。
例如,在一个内核模块中定义了一个全局变量 `my_variable`,但是该符号默认是不可见的,其他模块无法使用它。如果要使该变量可见并被其他模块使用,则需要使用 `export_symbol` 宏将其导出,如下所示:
```
int my_variable = 42;
EXPORT_SYMBOL(my_variable);
```
在该示例中,`EXPORT_SYMBOL` 宏将 `my_variable` 导出,使其可被其他模块使用。注意,该宏必须在定义符号的源文件中使用,而不是在头文件中使用。
相关问题
export_symbol 全局变量
`export_symbol` 是一个 Linux 内核模块的编程宏,用于将全局变量导出为符号,使得其他模块可以使用该变量。在 Linux 内核中,模块之间的符号访问是有限制的,只有导出的符号才能被其他模块使用。因此,在编写模块时,如果需要让其他模块使用该模块中的某个全局变量,就需要使用 `export_symbol` 宏将其导出。举个例子,如果我们在一个内核模块中有一个全局变量 `my_var`,我们可以使用以下代码将其导出:
```
#include <linux/module.h>
#include <linux/export.h>
int my_var = 0;
EXPORT_SYMBOL(my_var);
```
这样,其他模块就可以通过 `extern int my_var;` 来访问该变量了。需要注意的是,在使用导出的符号时,需要在代码中包含相应的头文件,并且需要确保被访问的符号已经正确导出。
EXPORT_SYMBOL_GPL和EXPORT_SYMBOL有什么区别
在Linux内核开发中,EXPORT_SYMBOL和EXPORT_SYMBOL_GPL是用于导出符号(函数或变量)的宏。
- EXPORT_SYMBOL是用于将符号导出为公共符号,可以被内核模块和其他驱动程序使用。这意味着,无论内核模块的许可证类型是什么,都可以使用这个导出的符号。
- EXPORT_SYMBOL_GPL则将符号导出为GPL许可证的符号。它只能被使用GPL许可证的内核模块和驱动程序使用。如果一个内核模块或驱动程序使用了EXPORT_SYMBOL_GPL导出的符号,那么它自身也必须使用GPL许可证。
因此,EXPORT_SYMBOL可以被任何类型的内核模块和驱动程序使用,而EXPORT_SYMBOL_GPL只能被使用GPL许可证的内核模块和驱动程序使用。选择使用哪种导出符号的宏取决于符号的许可证要求和对代码的开放程度要求。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)