【发布时间】:2013-06-20 16:46:33
【问题描述】:
Linux 手册页的第 2 部分包含 system calls。
找到这个链接后,我说“OK!我用这个参考来开发每个模块,它是完整的”。
但是我好像不能使用这部分的一些功能(比如bind(2))。包含所需的标头(如<sys/socket.h>)后,模块编译失败。
像printk这样的一些函数/宏没有在第2节中列出。很多人使用Linux API,我找不到任何官方参考(就像printk)。我不知道他们是如何找到这些功能的? (可能是通过阅读内核的整个源代码而不是阅读任何参考)
memset 等一些函数在第 3 节(用户空间库)中进行了描述,但内核模块开发人员可以毫无错误地使用它!
在开发可加载内核模块时,我在哪里可以找到可用标头和函数的COMPLETE参考? (类似于 MSDN 和 WINDDK 的参考)
#include <linux/init.h>
#include <linux/module.h>
/* A complete list of availabe headers and functions is missing! */
static int my_init(void)
{
return 0;
}
static void my_exit(void)
{
return;
}
module_init(my_init);
module_exit(my_exit);
【问题讨论】:
-
这很简单,只需查看内核源代码树根目录下的 include 目录即可;)
-
Linux 没有对所有可用头文件和函数的完整参考。您的函数参考几乎是在读取内核包含目录中的标头。即使存在引用,它也会很快过时,因为 Linux 内核不关心向后兼容性(在内核接口中)。
标签: c linux-kernel kernel-module