[英]export functions in linux kernel to linux modules
我试图在linux模块中分配很大的内存,而kalloc
无法做到。
我知道这样做的唯一方法是使用alloc_bootmem(unsigned long size)
但是我只能从linux内核而不是从模块分配它。 所以我想出了这个解决方案:
我将向分配内存的内核添加函数并返回指向它的指针。 然后,我将在模块中使用此功能。
这是针对我的情况的最佳解决方案吗? 就像我说的,我需要处理大量的内存...
另外,如何从内核导出函数并在模块中使用它? 如何使指向数据块的指针可用于模块?
这是你做的:
在带有符号的内核文件中,在符号之前添加以下标头
#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);
完成!
在模块中时,您将无法使用alloc_bootmem。 当您不需要连续空间时,请尝试alloc_pages
或vmalloc
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.