【问题标题】:Modprobe mutiple instances of a kernel module to prevent race conditions (device tree)Modprobe 内核模块的多个实例以防止竞争条件(设备树)
【发布时间】:2015-01-29 23:22:40
【问题描述】:

我正在为嵌入式 Linux 系统编写内核模块。该模块工作正常,并通过使用设备树中的compatible 条目自动加载。它在/dev/ 中创建了一个设备,我可以使用ioctl 按摩访问它。

该模块管理几个离散的内存区域。

由于设备应该由多个程序同时读取和写入,我知道可能存在竞争条件。

但是每个内存区域只有一个程序。

通过多次加载模块,竞争条件应该没有任何问题(也避免了其他困难)。

问:是否可以多次加载同一个模块(针对设备树中的每个条目)?

myDevs {
        compatible = "myDevs";
        #address-cells = <0x1>;
        #size-cells = <0x1>;


        myown0@0xff000000 {
            compatible = "myown";
            name = "myown0";
            reg = <0xff000000 0x27>;
        };

        myown1@0xff002000 {
            compatible = "myown";
            name = "myown1";
            reg = <0xff002000 0x27>;
        };
};

【问题讨论】:

  • 驱动程序只加载一次 (->init) 并且设备绑定任意多次 (->probe)。

标签: linux-device-driver kernel-module race-condition device-tree


【解决方案1】:

不可能两次加载相同的模块。 加载具有不同主要和次要编号的相同模块是可能的,而不是您可以在驱动程序中处理这种情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    • 2016-03-21
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    相关资源
    最近更新 更多