linux kernel 在drm_of.c中定义了EXPORT_SYMBOL_GPL(drm_of_lvds_get_dual_link_pixel_order);那其他符合GPL协议的驱动文件怎么调用drm_of_lvds_get_dual_link_pixel_order吗?
时间: 2023-07-22 15:06:51 浏览: 100
其他符合GPL协议的驱动文件可以通过在自己的驱动代码中包含头文件`<drm/drm_of.h>`来调用`drm_of_lvds_get_dual_link_pixel_order`函数。
使用方法如下:
1. 在驱动代码中包含头文件`<drm/drm_of.h>`:
```c
#include <drm/drm_of.h>
```
2. 在需要使用`drm_of_lvds_get_dual_link_pixel_order`函数的地方调用该函数即可。
```c
u32 order = drm_of_lvds_get_dual_link_pixel_order(dev->of_node);
```
相关问题
linux kernel 在drm_of.c中定义了EXPORT_SYMBOL_GPL(drm_of_lvds_get_dual_link_pixel_order);那其他驱动文件可以调用drm_of_lvds_get_dual_link_pixel_order吗?
其他的驱动文件可以调用`drm_of_lvds_get_dual_link_pixel_order`函数,但只有在使用了GPL协议的内核模块才能使用该函数。因为该函数被定义为`EXPORT_SYMBOL_GPL`,这意味着只有在GPL协议下编译的内核模块才能访问该函数。如果使用了其他协议,则无法使用该函数。
已经在defcong里配置了编译drm_of.c,并且drm_of.c里已经配置了EXPORT_SYMBOL_GPL(drm_of_lvds_get_dual_link_pixel_order)但是vmlinux.symvers并没更新drm_of_lvds_get_dual_link_pixel_order
如果你已经在drm_of.c中正确地使用了EXPORT_SYMBOL_GPL()宏来导出drm_of_lvds_get_dual_link_pixel_order函数,并且在Kconfig文件中启用了相关的选项,但是vmlinux.symvers文件仍然没有包含该符号,可能是因为编译内核时没有正确地生成symvers文件。
你可以尝试以下方法:
1. 确认你在编译内核时使用了CONFIG_MODVERSIONS选项。如果没有启用该选项,编译器将不会生成vmlinux.symvers文件。
2. 确认你的内核配置文件中启用了CONFIG_MODVERSIONS选项。你可以通过执行命令"grep CONFIG_MODVERSIONS .config"来检查。
3. 如果你已经确认启用了CONFIG_MODVERSIONS选项,但是vmlinux.symvers文件仍然没有包含drm_of_lvds_get_dual_link_pixel_order符号,那么可以尝试手动生成vmlinux.symvers文件。你可以执行以下命令:
```
make -C /lib/modules/$(uname -r)/build/ modules_prepare
make -C /lib/modules/$(uname -r)/build/ M=/path/to/your/kernel/module/directory/ modules
```
这将在你的内核模块目录中生成Module.symvers文件,它包含了所有导出的符号及其版本信息。你可以将该文件重命名为vmlinux.symvers并将其复制到你的内核源代码目录中。
请注意,如果你的内核版本发生了变化,你需要重新执行上述命令以更新vmlinux.symvers文件。
阅读全文