我一直在编写一个简单的scull_dev设备驱动程序,以了解如何编写内核模块,我认为我有一个完全编码。
我可以成功完成,我可以毫无问题地调用sudo insmod scull.ko
,但驱动程序永远不会出现在linux /dev/
文件夹中。
我现在正在尝试实施.ioctl
,但我没有要打开的文件。使用来自用户空间程序的ioctl以使用设备驱动程序的“文件”的open fd调用它是不正确的方法? (甚至不知道这意味着什么......)
设备驱动程序的整个主题对我来说极其混乱,我一直在使用的书在我看来完全是垃圾,所以我知道我可能在这里有一些重大的误解......
答案 0 :(得分:1)
我正在使用alloc_chrdev_region方法。所以我假设它有254 ......
你不应该无理由地假设。打印*dev
返回的alloc_chrdev_region()
,或改为使用register_chrdev(254, ...)
。
我的用户空间程序调用open只返回-1
不,它不只是返回-1,open()
还将errno
设置为适当的错误编号,您可以使用perror()
方便地生成邮件。