如何在内核2.6.26中实现简单的系统调用?

时间:2012-10-25 16:00:01

标签: linux-kernel system-calls

我在这里遇到了很多问题,在其他网站上我仍然有以下问题。

我正在实现一个简单的系统调用,为此我已更改的文件如下

 1. /arch/x86/kernel/syscal_table_32_S
 2. /include/asm-x86/unistd_32.h
 3. /include/linux/syscalls.h

我在第二个文件中有疑问因为这个,我不确定这个文件(/include/asm-x86/unistd_32.h)要修改还是任何其他文件,因为我知道包含系统调用号的文件,我们必须添加我们的sys调用和最后一个数字+ 1,这里的疑问是这个文件(/include/asm-x86/unistd_32.h)不包含限制行(#define NR_syscalls <last syscall no + 1>)但是还有另一个文件({{1} }),其中包含系统调用号和限制行。

所以,请通过一个简单的例子告诉我要修改哪些文件。

1 个答案:

答案 0 :(得分:2)

我在linux-kernel 3.2上实现了新的系统调用并修改了以下文件:

1. /arch/x86/kernel/syscal_table_32.S
2. /arch/x86/kernel/syscal_table_64.S
3. /arch/x86/include/asm/unistd_32.h - contains NR_syscalls for ia32
4. /arch/x86/include/asm/unistd_64.h
5. /arch/x86/include/asm/<new_file_with_syscall>
6. /arch/x86/include/asm/Makefile

我用syscall(NUMBER_OF_SYSCALL)函数调用的系统调用本身。