C语言 从另一个内核模块调用内核模块的功能



我是内核驱动程序开发的新手。所以我只是被困在其中。如何从另一个内核模块调用内核模块的功能?这些都是我的.c文件。

模块1.c:

#include<linux/module.h>
#include<linux/kernel.h>
#include<linux/init.h>
int multiplication(int a, int b)
{
int ans=0;
ans = a * b;
printk(KERN_INFO"Returns the Multiplication to Module2!: %dn", ans);
return ans;
}

模块2.c:

#include<linux/module.h>
#include<linux/kernel.h>
#include<linux/init.h>
void calling()
{
int a=2,b=3;
int ans=0;
ans = multiplication(a,b) // function of module1.c.
printk(KERN_INFO"Multiplication recieved from Module1!: %dn", ans);
}

我想从module1.c调用module2.c中的multiplication函数。我该怎么做?

要调用另一个内核模块中定义的函数,您必须导出该函数。

EXPORT_SYMBOL

EXPORT_SYMBOL(( 可帮助您向其他模块/代码提供 API。

您导出的函数可用于其他模块/代码。

定义函数后,首先在module1.c中使用EXPORT_SYMBOL()函数:

EXPORT_SYMBOL(multiplication);

然后,您可以使用module2.c中的extern关键字将该函数声明为外部符号:

extern int multiplcation(int, int);

生成模块后,插入导出符号的模块,然后插入导入符号的模块。在这种情况下,您将插入module1.ko然后module2.ko

上面的"EXPORT_SYMBOL"超链接中提供了一些示例

最新更新