【发布时间】: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