错误1:
# insmod memdev.koinsmod: cannot insert 'memdev.ko': Device or resource busy原因分析:由于字符设备驱动申请的设备号采用静态申请,主设备号为254,和系统的设备号发生了冲突,所以得改设备号。这就是静态分配设备号的缺点!!!!!!!!!!
错误2:
编写驱动时,即文件操作结构体指针定义放在open、read、write、llseek等函数之后,如果放在开头定义,则编译出错
/*文件操作结构体*/static const struct file_operations mem_fops ={.owner = THIS_MODULE,.llseek = mem_llseek,.read = mem_read,.write = mem_write,.open = mem_open,.release = mem_release,};
1,加载的时候提示:insmod:cannot insert 'memdev.ko':Device or Resource busy.出现这种情况是因为静态分配的主设备号已经被别的设备使用了。这里可以修改memdev.h中的memdev_major 这个宏定义,我改为203后,再重新加载就OK了。
2,cat /proc/devices查看设备名,设备号。本实验的设备号为203,设备名为memdev.
2,cat /proc/devices查看设备名,设备号。本实验的设备号为203,设备名为memdev.