静态分配设备号和系统设备号冲突导致的错误

错误1:
# insmod memdev.ko
insmod: 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.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值