在编写内核模块时,我尝试使用系统调用,例如sys_sendto。但编译器警告我,符号'sys_sendto'未定义。我确定我已经插入了头文件syscalls.h,所以请帮助我,谢谢你。 P.S:我的linux版本是2.6.32
答案 0 :(得分:0)
http://www.ibm.com/developerworks/linux/library/l-system-calls/ 这是关于编写和使用它们的完整解释。直接方法调用不使用它们,因为它们必须在内核模式下执行。处理器将系统调用号加载到寄存器中,然后发出内核处理和处理的硬件中断,以执行系统调用。
答案 1 :(得分:0)
对于链接到内核中符号的模块,如sys_sendto(),它必须由内核导出。并非所有系统调用都会导出。见here