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 编号的相同模块是可能的,而不是你可以在你的驱动程序中处理这种情况。
我正在为嵌入式 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 编号的相同模块是可能的,而不是你可以在你的驱动程序中处理这种情况。