寻找可以从自定义内核模块调用的库列表。
<stdio.h>
我知道与用户空间和库相比存在一些限制<string.h>
不能使用。
哪些是最流行的可以使用的,或者更好的是有一个经验法则可以帮助我区分何时可以在内核模块内调用库。
我目前正在寻找使用 来映射内存mmap()
,这是库的一部分sys/mman.h
,但我很确定这不是我唯一需要的东西。
所以 :
linux/<MANY_DIFFERENT_NAME>
可用- 我已经看到包含
asm/uaccess.h
在内核代码中 - 也可
sys/<ANY>
用于内核模块吗? - 任何其他?
答案1
内核代码中没有任何标准用户空间库可用。内核中有一些函数的行为与相应的用户空间函数类似,但您应该始终验证是否存在差异。
关于mmap
函数,这个函数只是对内核的系统调用。在内核内部调用内核是没有意义的。相反,有一个实现mmap
.除非您想映射匿名内存(通过内存分配更容易实现),否则您需要一个文件描述符。进程有文件描述符,内核模块没有。
一般来说,内核模块编程与用户空间编程不同。一个好的方法是寻找内核模块执行与您想要的类似的操作,并将其作为起点。