gpt4 book ai didi

linux-kernel - 在 IO 系统中保存信息

转载 作者:行者123 更新时间:2023-12-04 05:17:21 25 4
gpt4 key购买 nike

我需要使用/proc 文件系统编写一个模拟“多播”的内核模块。

基本上它需要支持以下场景:

1) 允许对/proc 文件进行一次写访问和对/proc 文件进行多次读访问。

2) 模块应该有最后一次成功写入内容的缓冲区。
每次写入都应与所有读取器的读取匹配。

考虑场景 2,写者写了一些东西,有两个读者(A 和 B),A 读取缓冲区的内容,然后 A 尝试再次读取,在这种情况下,它应该进入 wait_queue 并等待下一条消息,应该是不是 再次获得相同的缓冲区。

我需要保留所有已经读取当前缓冲区的 pid 的映射,以防他们再次尝试读取并且缓冲区没有更改,它们应该被阻止,直到有一个新的缓冲区。我试图弄清楚有一种方法可以在没有 map 的情况下保存该信息。
我听说 I/O 系统中有一些冗余字段,如果它已经读取了当前缓冲区,我可以使用它们来标记进程。

有人可以给我一个提示,我应该在哪里寻找那个领域?如何在不保留 pid 和缓冲区的“ map ”的情况下保存当前进程的信息?

谢谢!

最佳答案

不要尝试基于 PID 来保留它——这只是错误的抽象级别。

每次打开文件都会有一个新的struct file创建引用该打开文件的实例。将信息(给定的 struct file 读取的最新缓冲区)存储在 struct file 中本身。

您可以使用 private_data struct file 内的指针存储您需要的信息。这就是它的用途。

关于linux-kernel - 在 IO 系统中保存信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2861529/

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