在Linux内核3.3中添加新的系统调用

时间:2012-04-02 14:06:06

标签: linux linux-kernel system-calls

我对这个内核很新。我想要做的只是向内核添加一个新的系统调用。我遵循了这条准则:http://hekimian-williams.com/?p=20

问题是用于arch / x86 / kernel下的syscall_table_32.S文件,但我在内核版本3.3中找不到x86系统的文件。我是否仍需要编辑该文件并为新添加的系统调用添加一行?或者我是否需要做其他事情让内核知道我的新系统调用?任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:7)

如何在3.3版本中添加新的Linux内核API? - 对于64位OS

  • 从www.kernel.org获取内核代码。

wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.3.1.tar.bz2

  • 将命令'tar xvfj XXX'上传到文件夹 例如:/ root / kernel tar xvfj linux-3.3.1.tar.bz2

  • 编辑文件“/root/kernel/linux-3.3.1/arch/x86/syscalls/syscall_64.tbl” 添加新行

312 64 husky1 sys_husky1

  • Eidt文件“/root/kernel/linux-3.3.1/include/linux/syscalls.h” 添加新功能声明

asmlinkage long sys_husky1(int fd);

在“#endif”行之前

  • 在“/root/kernel/linux-3.3.1/arch/x86/kernel”下添加一个新的c文件(我使用的是x86 CPU) 示例:

  • 编辑“/root/kernel/linux-3.3.1/arch/x86/kernel/Makefile” 添加新行 “obj-y + = husky.o”

  • 转到/root/kernel/linux-3.3.1文件夹并运行命令“make -j8”

答案 1 :(得分:6)

我认为在内核3.3中它转移了

http://lxr.free-electrons.com/source/arch/x86/syscalls/