如何在linux模块中使用系统调用

时间:2011-07-20 05:15:28

标签: linux kernel-module

在编写内核模块时,我尝试使用系统调用,例如sys_sendto。但编译器警告我,符号'sys_sendto'未定义。我确定我已经插入了头文件syscalls.h,所以请帮助我,谢谢你。 P.S:我的linux版本是2.6.32

2 个答案:

答案 0 :(得分:0)

http://www.ibm.com/developerworks/linux/library/l-system-calls/ 这是关于编写和使用它们的完整解释。直接方法调用不使用它们,因为它们必须在内核模式下执行。处理器将系统调用号加载到寄存器中,然后发出内核处理和处理的硬件中断,以执行系统调用。

答案 1 :(得分:0)

对于链接到内核中符号的模块,如sys_sendto(),它必须由内核导出。并非所有系统调用都会导出。见here