在insmod 一个驱动时候遇到了下面这个问题,从dmesg出来的日志中可以看到提示:
sysfs: cannot create duplicate filename '/devices/virtual/char_driver_test'
在系统的/sys/devices/virtual 目录下看到有 char_driver_test 目录, 这个目录是之前
加载过一次这个驱动的时候创建的,但不知道怎么回事在rmmod 的时候没有将这个目录
回收,所以造成这个错误。如是想删掉这个目录应该在下次加载的时候就不会出现这个
错误了,但执行 sudo rm char_driver_test 提示 rm: cannot remove `char_driver_test': Permission denied
怎么也删不掉,重启系统后此文件消失。之后多次进行insmod 和rmmod都没有问题。
这才想到之前加载这个驱动时候遇到的问题,系统提示[ 442.727032] sysfs: cannot create duplicate filename '/dev/char/253:1' 进入 /dev/char目录发现
lrwxrwxrwx 1 root root 14 2011-08-03 01:47 253:1 -> ../bsg/2:0:0:0 主设备号为253、次设备号为1 已经被这个
设备所占用了,所以会产生这个错误。 然后修改主设备号后再次注册时就出现了sysfs: cannot create duplicate filename '/devices/virtual/char_driver_test' 的错误。
[ 442.727022] ------------[ cut here ]------------
[ 442.727029] WARNING: at /build/buildd/linux-2.6.38/fs/sysfs/dir.c:455 sysfs_add_one+0xc8/0xf0()
[ 442.727032] Hardware name: VMware Virtual Platform
[ 442.727032] sysfs: cannot create duplicate filename '/