0

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

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

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

这是我的情况的最佳解决方案吗?正如我所说,我需要处理一大块内存......

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

4

2 回答 2

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);

完毕!

于 2015-07-03T17:41:07.810 回答
0

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

于 2013-08-29T18:09:09.510 回答