将linux内核中的函数导出到linux模块

时间:2013-08-29 10:29:43

标签: linux module kernel

我试图在linux模块中分配一大块内存,kalloc无法做到。

我知道这样做的唯一方法是使用alloc_bootmem(unsigned long size),但我只能从linux内核而不是模块中分配它。 所以我提出了这个解决方案:

我将向内核添加函数来分配内存并返回指向它的指针。 然后我将在模块中使用此功能。

这对我的情况来说是最好的解决方案吗?正如我所说,我需要处理大量的记忆......

另外,如何从内核导出函数并在模块中使用它?如何使指向模块可用的数据块的指针?

2 个答案:

答案 0 :(得分:1)

这就是你要做的:

在具有符号的内核文件中,在符号

之前添加以下标题
#include <linux/module.h>

<here there should be the declaration of the symbol>

现在在符号

后添加
EXPORT_SYMBOL(<name of the symbol>);

例如:

#include <linux/module.h>
int (*foo)(void);

EXPORT_SYMBOL(foo);

完成!

答案 1 :(得分:0)

在模块中,您将无法使用alloc_bootmem。当您不需要连续空间时,请尝试alloc_pagesvmalloc