1.scull_load中
major=$(awk "\$2==\"$module\" {print \$1}" /proc/devices)
就是 将 \\$2 变成 \$2 ,\\$1 变成 \$1
开始怀疑是没安装awk,所以
sudo apt-get install original-awk,后来没法卸载,也不知道是不是这个awk要求特殊些导致的。
2.不能将cdev包含在全局变量结构体中,因为这样,内核没法kfree包含cdev的结构体,这个结构体在data区(X86体系)。导致的结果就是,你在用户层调用close函数的时候,系统不会执行 file_operations中的 .release对应的函数!