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

标签 linux module kernel

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

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

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

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

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

最佳答案

这就是你要做的:

在带有符号的内核文件中,在符号前添加如下头文件

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

完成!

关于linux - 将 linux 内核中的函数导出到 linux 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18508487/

相关文章:

linux - bash pid 和 $$ 之间的区别

ruby - 在 Ruby 中按方法调用方法

python - 为什么我的模块不能工作,即使我可以导入它?

c - Linux 中的页表遍历

windows - "bcdedit/dbgsettings NET HOSTIP:123.123.123.123 PORT:50123"无效

c - 在 qemu 中测试系统调用

linux - 默认情况下,zipcloak 将临时文件放在哪里?

linux - 只删除文件而不删除 linux 中的目录

c++ - 在 dlsym 之后调用 dlclose 是否安全

perl - 如何在没有安装权限的情况下使用新的 Perl 模块?