标签: linux linux-kernel linux-device-driver
我需要在用户空间中编写linux设备驱动程序。
如何编写一个库,当链接到应用程序时,可以处理对特定设备的系统调用。
应用程序应该能够在open()等设备上使用read(),write(),ioctl(),/dev/mydev0,但这些调用应该终止于用户空间库而不是内核模块。
open()
read()
write()
ioctl()
/dev/mydev0
请告知是否可行,以及如何实现这一目标。
答案 0 :(得分:1)
Linux是单片内核,这意味着一般来说,你所要求的是不可能的;你无法在用户模式下编写任意驱动程序。
你可能(正如你的标题所暗示),在系统调用中使用ptrace(2) 陷阱,并基本上将它们重定向到库中的函数。然而,这不是一个简单,直接的解决方案。
ptrace(2)
另见:
FUSE(USErspace中的文件系统)可能就是你要找的东西。它是一种允许文件系统驱动程序专门通过用户空间进程实现的机制。这就是sshfs的实现方式。
sshfs
资源: