在学习LDD3的时候,学习到字符设备驱动scull
使用scull驱动的设备有三类设备文件,分别是scull、scullp、sculla,使用scul.init start加载驱动,创建设备文件后,cat /proc/devices如下:
203 cpu/cpuid
249 scull
249 scullp
249 sculla
250 hidraw
设备文件如下:
crw-r--r--. 1 root root 249, 0 Jul 26 11:17 scull0
crw-r--r--. 1 root root 249, 1 Jul 26 11:17 scull1
crw-r--r--. 1 root root 249, 2 Jul 26 11:17 scull2
crw-r--r--. 1 root root 249, 3 Jul 26 11:17 scull3
crw-r--r--. 1 root root 249, 32 Jul 26 11:17 scullpipe0
crw-r--r--. 1 root root 249, 33 Jul 26 11:17 scullpipe1
crw-r--r--. 1 root root 249, 34 Jul 26 11:17 scullpipe2
crw-r--r--. 1 root root 249, 35 Jul 26 11:17 scullpipe3
crw-r--r--. 1 root root 249, 16 Jul 26 11:17 scullpriv
crw-r--r--. 1 root root

在学习LDD3的字符设备驱动scull时,遇到在尝试cat /dev/scullpipe0时提示'No such device or address'的问题。经过调试和研究,发现错误可能源于在查找设备对应的open函数时失败。通过对cdev_add函数中devno的修正,将devno由firstdev + index改为MKDEV(major, 32+index),解决了问题。调整后,cat /dev/scullpipe0不再报错,并能在dmesg中看到scull_p_open的正确打印。"
122005566,10640137,Java分布式限流实践:Redis与Lua实现令牌桶,"['java', '后端', '限流策略']
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



