如何解决如何找到 Linux 内核读取系统调用的实现?
我试图从以下源代码中了解 Linux 内核中的读取系统调用:https://github.com/torvalds/linux/tree/35e43538af8fd2cb39d58caca1134a87db173f75/fs
开头:(我在https://github.com/torvalds/linux/blob/16f73eb02d7e1765ccab3d2018e0bd98eb93d973/fs/read_write.c#L542中找到了这个函数)
SYSCALL_DEFINE3(read,unsigned int,fd,char __user *,buf,size_t,count)
{
struct fd f = fdget_pos(fd);
ssize_t ret = -EBADF;
if (f.file) {
loff_t pos = file_pos_read(f.file);
ret = vfs_read(f.file,count,&pos);
if (ret >= 0)
file_pos_write(f.file,pos);
fdput_pos(f);
}
return ret;
}
在这一步之后,我试图追踪所有起诉链接的函数:https://www.programmersought.com/article/41274530299/
所以,现在我的问题是我无法找到数据块的定义位置。我需要找到包含要读取的 inode 的磁盘块。
一些参考:
- https://tldp.org/LDP/lki/lki-3.html(检查read_inode)
- https://linux-kernel-labs.github.io/refs/heads/master/so2/lec8-filesystems.html#opening-a-file(检查从文件中读取数据)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。