2010-06-12 91 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系統的邊緣文件。

相關問題