Modprobe 内核模块的多个实例以防止竞争条件(设备树)

Modprobe mutiple instances of a kernel module to prevent race conditions (device tree)

我正在为嵌入式 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>;
        };
};

无法加载同一个模块两次。 加载具有不同 Major 和 Minor 编号的相同模块是可能的,而不是你可以在你的驱动程序中处理这种情况。