从这里开始
48 struct snd_card *snd_cards[SNDRV_CARDS];
49 EXPORT_SYMBOL(snd_cards);
Run Code Online (Sandbox Code Playgroud)
我不知道它的含义以及为什么使用它.我试图搜索它,但没有理解它的含义.
我正在开发一个Linux驱动程序可加载模块,我必须在我的驱动程序中使用另一个设备.(堆叠在另一个驱动程序上的驱动程序的种类)
如何在我的驱动程序中调用/使用其他驱动程序?我认为它们都在内核中,所以可能有一种方法可以直接使用另一个驱动程序.
我为内核开发了两个简单的模块.现在我想在一个模块中定义一个函数,然后在另一个模块中使用它.
我怎么能这样做?
只需在其他模块中定义函数和调用程序而不会出现问题?
当我收到此错误时,我将一些驱动程序嵌入到Linux内核中(我在板文件中添加设备并注册它):
error: 'kxtf9_get_slave_descr' undeclared here (not in a function)
Run Code Online (Sandbox Code Playgroud)
我将上面的函数放在驱动程序文件中
struct ext_slave_descr *kxtf9_get_slave_descr(void)
{
return &kxtf9_descr;
}
EXPORT_SYMBOL(kxtf9_get_slave_descr);
Run Code Online (Sandbox Code Playgroud)
它不应该由EXPORT_SYMBOL"可见"吗?包含上面代码的C文件没有头文件(我没有写它,我只是在这里找到它并且我正在实现.他们说它已经过测试所以我假设不需要头文件?
其余代码编译完美(因此它"看到"文件夹中的代码),包含上面代码的文件也编译完成!
我正在编写一个依赖于一个现有内核模块的内核模块.我正在从树中构建我的模块(作为外部模块).
如何声明依赖项,以便depmod识别它?
我从a.ko(内核模块)导出函数foo()和foo1(),foo1()接受输入参数,一个函数指针.我从b.ko调用foo1(),并传递foo()作为输入参数.
我看到b.ko(未知符号foo)的insmod失败,即使a.ko已经在b.ko之前被破坏了.
任何解释/解决方案?
谢谢,幸运
在 Linux 内核中,我想探测内核函数effective_prio()。它定义为static。当我去搜索它的符号时,kallsyms我找不到它。是否kallsyms具有内核函数的所有符号?如果没有,哪些符号不包括在内?