gpt4 book ai didi

linux - 当同一驱动程序的多个实例同时运行时,内核如何处理对 proc 文件的读取操作

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:14:46 25 4
gpt4 key购买 nike

当同一驱动程序的多个实例同时运行时,我对 proc 文件的处理方式有疑问。让我们假设我的系统同时运行同一个驱动程序的几个实例,但其中只有一个(根据一些内部决策)创建了一个 proc 文件并维护在读取文件时应该写入的信息。由于所有实例都属于同一个驱动程序,因此它们都包含读取 proc 文件时将调用的函数(尽管该函数实际上仅由其中一个实例注册)。我的问题是:当内核调用 read 函数时,它会总是从创建 proc 文件的模块的地址空间调用该函数,还是可以从另一个实例的地址空间调用它?

最佳答案

您不能加载同一驱动程序的多个实例。第二次加载同一个驱动会因为驱动名称冲突而被拒绝。

无法访问您的情况的另一个原因:使用与现有文件相对应的名称创建 proc 文件将失败。

更新(随着问题变得更加具体)

内核不检查从模块传递给它的地址。它只是使用这些地址,例如调用函数。

对于不同模块的地址空间,所有模块与内核共享相同的地址空间。因此,任何地址(例如“proc”文件的读取函数的地址)最多只能属于一个模块(或内核核心)。当模块加载到内核时,内核为其代码和静态数据分配内存。当模块被卸载时,内存及其代码和数据被释放。

关于linux - 当同一驱动程序的多个实例同时运行时,内核如何处理对 proc 文件的读取操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31925281/

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