C 库提供了 write()、read()、open() 等函数,我们可以在 C 程序中使用它们来进行系统调用。在哪里可以找到这些函数的源代码?
答案1
这些是系统调用,由内核实现。您可以在 中找到read
和。和所做的只是调用它们的版本,例如或,如下所示。write
fs/read_write.c
read
write
ksys
ksys_read
ksys_write
SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count)
{
return ksys_read(fd, buf, count);
}
ssize_t ksys_read(unsigned int fd, char __user *buf, size_t count)
{
struct fd f = fdget_pos(fd);
// ...
}
答案2
最近的 lwn 文章对内核端的系统调用有很好的深入和详细的描述:http://lwn.net/Articles/604287/。
答案3
如果您想要标准 C 库的源代码,请查看提供的链接 @goldilocks。
如果你想要linux系统调用的源代码,你必须搜索linux源代码。系统调用在 Linux 源代码的许多位置都定义了。您可以 grep 查找字符串宏SYSCALL_DEFINE
:
grep -r -n SYSCALL_DEFINE /path/to/linux_source
其中一些你可以看到这里。