内核的哪一部分可以帮助系统调用在运行时绑定到其所需的驱动程序函数

时间:2016-03-24 12:16:04

标签: linux-kernel kernel linux-device-driver system-calls kernel-module

我经历了很多文档和问题,例如how system call implementeddisassemble a system call以及幻灯片共享Linux kernel tour我自己的幻灯片 但我想知道我们何时打开任何文件,可以是设备,常规,管道或套接字,这部分代码绑定系统调用,如打开,读取,写入其相关的驱动程序file_operation函数。

此外,我能够在SYSCALL_DEFINEx中找到函数及其定义的一些流程,然后是sys_calls等,但由于无法连接点直到fops结构的驱动程序和绑定,所以有点困惑,是否由udev完成,探测驱动程序时,任何其他内核恶魔,任何其他函数或所有函数都是单独定义的。

希望能够将这些点连接起来。

2 个答案:

答案 0 :(得分:1)

系统调用通常调用虚拟fs层功能。因此,写入系统调用将调用vfs_open,它将调用file->f_op->open。根据文件类型,这将是不同的功能。如果它是常规文件,则它将与文件系统相关,如ext4_file_open。在这种情况下,需要在file_operations ext4结构中查找实际的函数名称。类似的机制用于从文件系统层更改为驱动程序层。

答案 1 :(得分:0)

进行逆向工程,将了解这些文件操作是如何注册的。从那里你将知道在系统调用期间如何使用正确的驱动程序。跟踪register_chrdev