【发布时间】:2012-12-12 15:20:50
【问题描述】:
我正在尝试为嵌入式 Linux 系统构建自定义游戏杆/游戏手柄设备。我正在寻找允许我从用户空间代码在 /dev/input 中创建节点的库或系统 API。
我想要这个,因为:
自定义硬件可以使用现有的 SPI 或 I2C 驱动程序与系统通信(这是我的硬件设计,所以我可以做任何最符合技术意义的事情)
内核模块不能使用其他驱动,只能从其他模块导出符号
我知道制作内核模块的唯一方法是使用内核代码并将其编译为内核模块。我不是想用用户空间代码来实现内核模块。
我正在寻找允许我创建文件的 API,当读取或写入该文件时,函数会被调用。这是字符驱动程序的一般概念。我不需要内核提供或强加的特权或限制。
必须有某种方法来模拟文件 I/O,而无需编写全新的内核模块。
谢谢!
【问题讨论】:
-
你知道
udev吗? -
我知道 udev。我知道它会自动创建设备节点以响应内核事件。您是否建议该程序能够从 uinput 创建的设备文件中创建我需要的设备文件?如果是这种情况,您能否向我指出一个显示这种高级配置的指南?你读过我的整个问题吗?我已经使用 udev 守护进程来监视内核事件并检查 /proc 等。我不是这方面的专家,所以我不知道如何操作 /sys 和 /proc 条目。
-
我相信
udev可以配置成/dev/input/js0(可能是符号链接) -
这很有趣。这似乎是一条可行的途径,但你知道我是否可以从 uinput 创建的文件中实现这一点吗?我不知道 uinput 是否会生成 udev 需要获取的事件。如果没有掌握 udev 规则系统,我不知道我是否能弄清楚。尽管提到符号链接确实给了我一些想法。稍后我将不得不使用工作设备检查一下,看看 /dev/input/js0 是否是符号链接。
-
我只是相信你应该调查和学习
udev规则系统。如果可能,避免在内核中做事......
标签: linux input kernel drivers