Netlink用户空间和内核空间通信

时间:2010-06-12 01:20:58

标签: linux

我正在学习使用Linux作为主要平台的嵌入式系统编程。我想创建一个设备事件管理服务。此服务是一个用户空间应用程序/守护程序,它将检测连接的硬件模块是否触发了事件。但我的问题是我不知道我应该从哪里开始。

我阅读了有关用户空间 - 内核空间通信的Netlink实现,看起来这是一个好主意,但不确定它是否是最佳解决方案。但我读到UDEV设备管理器使用Netlink等待内核空间的“uevent”,但我不清楚如何做到这一点。

我读到了关于轮询sysfs的内容,但似乎轮询文件系统不是一个好主意。

您认为我应该在我的服务中使用哪些实现?我应该使用netlink(硬/不知道如何)或只是轮询sysfs(不确定它是否有效)?

由于

2 个答案:

答案 0 :(得分:1)

是的,民意调查是不明智的。这些资源:关于Netlink的LJ文章“使用Netlink套接字理解和编程”使得netlink看起来不那么难。这是python中netlink套接字的一个例子。

udevtrigger是一个很好的实用程序,用于对udev更改做出反应。

http://www.linuxjournal.com/article/7356

http://smacked.org/docs/netlink.pdf

http://guichaz.free.fr/misc/iotop.py

http://manpages.ubuntu.com/manpages/gutsy/man8/udevtrigger.8.html

答案 1 :(得分:1)

如果你所做的只是等待事件,你可以使用sysfs,这比netlink要简单得多。一个例子是GPIO系统的边缘文件。