我必须实现虚拟设备驱动程序,它将计算指定角度的正弦值。
我找到了 article如何编写 hello-world 驱动程序,当我在其上调用 cat
时,它运行良好。
但是为了计算 sin,我需要将一些数据传输到我的驱动程序。哪种解决方案最无痛?
我是否应该首先以单独的方法读取所有输入数据,将其记住某处然后计算并输出?
最佳答案
最轻松的解决方案可能是实现 ioctl
。
链接示例中的 cat
使用 read()
,这在您的设备生成数据(例如鼠标或摄像机)时非常有用,但是当设备对命令的回复 ioctl
更合适:您发送一个带有角度作为参数的命令 GET_SIN
并获得包含答案的回复。
另一种方法是 write()
角度,然后 read()
解决方案:要复杂得多,因为可能有多个进程在读取和写入同时,这将是一团糟!
顺便说一句,小心! AFAIK,内核不允许使用浮点算术,也不允许链接到 -lm
,因此您必须将正弦实现为定点整数函数,也许使用表...
关于c - 我如何在我的 Linux 虚拟设备驱动程序中检索数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30476144/