Linux 源代码中普通磁盘文件的"轮询"功能在哪里实现?



Linux 的磁盘文件在内核中使用"file"结构表示。文件结构中有一个"file_operations",它是一个指针数组,其中一个是"poll"函数指针。如下:

struct file {
...
Const struct file_operations * f_op;
...
}
struct file_operations {
...
Ssize_t (* read) (struct file *, char __user *, size_t, loff_t *);
...
Ssize_t (* write) (struct file *, const char __user *, size_t, loff_t *);
...
Unsigned int (* poll) (struct file *, struct poll_table_struct *);
...
}

我也知道磁盘文件的读取和写入将通过一层虚拟文件系统(VFS(。

我想问的是:

虚拟文件系统是否实现了"轮询"功能?

Linux 源代码中普通磁盘文件的"轮询"功能在哪里实现?

Linux 源代码中普通磁盘文件的"轮询"功能在哪里实现?

poll函数不为">普通"文件实现

对于此类文件,readwrite操作永远不会被阻止,因此轮询它们将始终立即返回。

轮询对于特殊文件(如管道或套接字(很有用。只有这些文件实现了poll功能。

相关内容

  • 没有找到相关文章

最新更新