2010-06-12 93 views
6

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

我读了关于Netlink实现用户空间 - kernelspace通信,这似乎是一个好主意,但不知道它是否是最好的解决方案。但是我读到UDEV设备管理器使用Netlink从内核空间等待“uevent”,但我不清楚该怎么做。

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

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

谢谢

+0

你也可以在sysfs中的目录改变而不是轮询时通知我们。 – MikeK 2011-03-02 01:52:57

回答

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

如果你要做的就是等待一个事件,您可以使用sysfs的,这将是比网络链路简单得多。一个例子是GPIO系统的边缘文件。

相关问题