gpt4 book ai didi

c - glibc 中的系统调用实现

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:49:34 25 4
gpt4 key购买 nike

我目前正在尝试通过 C 中的内联汇编器在我的 Linux X64 上完成系统调用。由于我的方法都不起作用,我想弄清楚,这是如何在 glibc 中完成的。我在/misc/syscall.c 中发现了以下内容

long int
syscall (callno)
long int callno;
{
__set_errno (ENOSYS);
return -1;
}

我不得不说我是 C 的新手(我是一名 Java 开发人员),所以我不明白这里的语法。

我的问题如下:

  1. 在括号中的参数列表后面写函数参数声明是否正确:

    无效富(酒吧)长整数栏;{//函数代码

  2. 如何在 glibc 中的系统调用的汇编程序中找到实际实现? (不需要是正确的位置,任何提示表示赞赏)

最佳答案

系统调用不仅仅由 glibc 在源代码中定义。 Glibc 通过此 shell 脚本动态创建系统调用的语法:/sysdeps/unix/make-syscalls.sh .该脚本使用适用于相关操作系统的 syscalls.list 文件。此外,还有一些关于体系结构的文件可以确定用于捕获到内核的正确操作码。例如。 X86_64 将“系统调用”定义为跳转到内核的操作码(参见 the sysdep.h for X86_64)。

关于c - glibc 中的系统调用实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33220702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com