glibc中系统调用的实现
我目前正试图通过C语言中的内联汇编程序在我的Linux X64上实现一个系统调用。由于我的方法都不起作用,我想弄清楚,这是如何在glibc中实现的。我在/misc/syscall.c中找到了以下内容glibc中系统调用的实现,c,linux,system-calls,glibc,libc,C,Linux,System Calls,Glibc,Libc,我目前正试图通过C语言中的内联汇编程序在我的Linux X64上实现一个系统调用。由于我的方法都不起作用,我想弄清楚,这是如何在glibc中实现的。我在/misc/syscall.c中找到了以下内容 long int syscall (callno) long int callno; { __set_errno (ENOSYS); return -1; } 我必须说我是C语言的新手(我是Java开发人员),所以我不理解这里的语法 我的问题如下: 我可以在括号中的参数列表之后写
long int
syscall (callno)
long int callno;
{
__set_errno (ENOSYS);
return -1;
}
我必须说我是C语言的新手(我是Java开发人员),所以我不理解这里的语法
我的问题如下:
系统调用不是glibc在源代码中单独定义的。Glibc通过以下shell脚本动态创建系统调用的语法:。该脚本使用适用于相关操作系统的syscalls.list文件。此外,还有一些关于体系结构的文件,用于确定捕获到内核的正确操作码。例如,X86_64将“syscall”定义为跳转到内核的操作码(请参阅)。您的第一个问题:1。是的,但这是不赞成的。它在K&R第一版中使用。请注意,使用了现代参数声明。对于Q.2,这可能有助于oyu