c - 我如何在我的 Linux 虚拟设备驱动程序中检索数据?

标签 c linux driver

我必须实现虚拟设备驱动程序,它将计算指定角度的正弦值。

我找到了 article如何编写 hello-world 驱动程序,当我在其上调用 cat 时,它运行良好。

但是为了计算 sin,我需要将一些数据传输到我的驱动程序。哪种解决方案最无痛?

我是否应该首先以单独的方法读取所有输入数据,将其记住某处然后计算并输出?

最佳答案

最轻松的解决方案可能是实现 ioctl

链接示例中的 cat 使用 read(),这在您的设备生成数据(例如鼠标或摄像机)时非常有用,但是当设备对命令的回复 ioctl 更合适:您发送一个带有角度作为参数的命令 GET_SIN 并获得包含答案的回复。

另一种方法是 write() 角度,然后 read() 解决方案:要复杂得多,因为可能有多个进程在读取和写入同时,这将是一团糟!

顺便说一句,小心! AFAIK,内核不允许使用浮点算术,也不允许链接到 -lm,因此您必须将正弦实现为定点整数函数,也许使用表...

关于c - 我如何在我的 Linux 虚拟设备驱动程序中检索数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30476144/

相关文章:

c - 我的 Enigma 模拟有问题

c - 在循环中将字符串写入文件会在文件末尾放置额外的字符

c++ - 我需要做什么才能将我的桌面应用程序提交到 Windows 应用商店?

linux - Python3 没有那个文件或目录

c - C 中的 tcgetpgrp 函数

linux - 库存专业下的自定义字符设备 linux 模块(如 "tty")

c++ - 如何优化高斯 pdf 的计算?

创建 Linux 设备驱动程序。无法让驱动程序检测设备并调用探测功能

python - 一个设备可以有两个 UMDF 驱动程序吗?

linux - 如何获取包含连接到域的所有主机的列表? (CentOS 6.5)