sysfs: cannot create duplicate filename '/devices/virtual/misc/leds'问题处理

在mini2440平台下加载LED驱动模块出现以下错误:

[root@FriendlyARM 5-3-2]# insmod mini2440_leds_misc.ko

 WARNING: at fs/sysfs/dir.c:491 sysfs_add_one+0x88/0xb0()

sysfs: cannot create duplicate filename '/devices/virtual/misc/leds'

Modules linked in: mini2440_leds_misc(+)

Backtrace: ....

出错原因:

mini2440系统开机时已经加载名为les的混杂设备驱动

crw-rw----    1 root     root      10,  62 Dec  4  2005 leds

而本人修改的LED驱动模块使用了同样的设备名,在加载驱动系统建立设备文件时即出现以上错误。

解决方案:

第一步:修改驱动程序中此混杂设备名

static struct miscdevice misc = {
 .minor = MISC_DYNAMIC_MINOR,
 .name = "ledtest"
 .fops = &dev_fops,
};

第二步:修改应用程序打开的设备文件名

fd = open("/dev/ledtest", 0);

重新编译模块和应用程序测试就OK了。

小结:

在mini2440开机时已经加载了很多测试驱动(如下的混杂设备),与常用的测试文件名相同。

crw-rw----    1 root     root      10,  59 Dec  4  2005 adc                                 
crw-rw----    1 root     root      10,  63 Dec  4  2005 backlight              
crw-rw----    1 root     root      10,  61 Dec  4  2005 buttons                
crw-rw----    1 root     root      10,  58 Dec  4  2005 camera 

在测试驱动时可能会遇到同样的问题,以上方法处理即可。

遗留问题:

第一次重选的文件名是 led_test ,模块加载成功后,应用程序执行后没有调用驱动中的 ioctl 函数。LED没有任何反应。

第二次选选择文件名 ledtest,测试成功。

 

你可能感兴趣的:(驱动程序)