深入解析Linux设备驱动:从字符设备到块设备
1. 设备多开与模式选择
在Linux系统中, echo 和 cat 等测试操作会各自打开一个设备实例,完成操作后关闭。后续命令使用不同的设备实例和数据副本,这体现了设备多开的特性。例如,运行 sudo ./pmopen 后,能看到不同数据的准备和读取情况。
然而,并非所有情况下多开模式(如 mode=2 )都优于其他模式( mode=0 或 mode=1 )。很多物理设备需要独占使用,此时多并行访问模式就不合适。而且,多访问模式需要动态内存管理,在对可靠性和耐久性要求高的系统中,这种方式存在一定风险。因此,设备的打开方式应根据具体任务逻辑选择合适的算法。
2. 模块引用计数器
模块引用计数器是控制模块加载安全和系统内核完整性的重要元素。我们通过 simple.c 这个简单的测试程序进一步理解。
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "mopen.h"
int main(int argc, char *argv[]) {
char dev[ 80 ] = "/dev/";
strcat(dev, DEVNAM);
in
Linux块设备驱动开发详解
超级会员免费看
订阅专栏 解锁全文
1858

被折叠的 条评论
为什么被折叠?



