如何在Linux中的用户空间库中捕获系统调用?

时间:2015-09-28 22:00:18

标签: linux linux-kernel linux-device-driver

我需要在用户空间中编写linux设备驱动程序。

如何编写一个库,当链接到应用程序时,可以处理对特定设备的系统调用。

应用程序应该能够在open()等设备上使用read()write()ioctl()/dev/mydev0,但这些调用应该终止于用户空间库而不是内核模块。

请告知是否可行,以及如何实现这一目标。

1 个答案:

答案 0 :(得分:1)

Linux是单片内核,这意味着一般来说,你所要求的是不可能的;你无法在用户模式下编写任意驱动程序。

可能(正如你的标题所暗示),在系统调用中使用ptrace(2) 陷阱,并基本上将它们重定向到库中的函数。然而,这不是一个简单,直接的解决方案。

另见:

FUSE(USErspace中的文件系统)可能就是你要找的东西。它是一种允许文件系统驱动程序专门通过用户空间进程实现的机制。这就是sshfs的实现方式。

资源: