glibc 中的系统调用实现
Syscall implementation in glibc
我目前正在尝试通过 C 中的内联汇编程序在我的 Linux X64 上进行系统调用。由于我的 none 方法有效,我想弄清楚这是如何完成的在 glibc 中。我在 /misc/syscall.c
中找到了以下内容
long int
syscall (callno)
long int callno;
{
__set_errno (ENOSYS);
return -1;
}
我不得不说我是 C 的新手(我是 Java 开发人员)所以我不明白这里的语法。
我的问题如下:
我在括号中的参数列表后面写函数参数声明是否正确:
void foo(bar)
长整数栏;
{
//函数代码
}
如何在 glibc 中的系统调用汇编程序中找到实际实现? (不需要是正确的位置,任何提示表示赞赏)
系统调用不仅仅由 glibc 在源代码中定义。 Glibc 通过这个 shell 脚本动态创建系统调用的语法:/sysdeps/unix/make-syscalls.sh. The script uses the syscalls.list files appropiate for the relevant operating system. In addition there are some files regarding the architecture to determine the correct opcode for trapping to the kernel. E.g. X86_64 defines "syscall" as the opcode to jump to the kernel (See the sysdep.h for X86_64).
我目前正在尝试通过 C 中的内联汇编程序在我的 Linux X64 上进行系统调用。由于我的 none 方法有效,我想弄清楚这是如何完成的在 glibc 中。我在 /misc/syscall.c
中找到了以下内容long int
syscall (callno)
long int callno;
{
__set_errno (ENOSYS);
return -1;
}
我不得不说我是 C 的新手(我是 Java 开发人员)所以我不明白这里的语法。
我的问题如下:
我在括号中的参数列表后面写函数参数声明是否正确:
void foo(bar) 长整数栏; { //函数代码 }
如何在 glibc 中的系统调用汇编程序中找到实际实现? (不需要是正确的位置,任何提示表示赞赏)
系统调用不仅仅由 glibc 在源代码中定义。 Glibc 通过这个 shell 脚本动态创建系统调用的语法:/sysdeps/unix/make-syscalls.sh. The script uses the syscalls.list files appropiate for the relevant operating system. In addition there are some files regarding the architecture to determine the correct opcode for trapping to the kernel. E.g. X86_64 defines "syscall" as the opcode to jump to the kernel (See the sysdep.h for X86_64).