【问题标题】:Netlink user-space and kernel-space communicationNetlink 用户空间和内核空间通信
【发布时间】:2011-03-02 21:51:55
【问题描述】:

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

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

我阅读了有关轮询 sysfs 的信息,但轮询文件系统似乎不是一个好主意。

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

谢谢

【问题讨论】:

  • 您也可以让我们在 sysfs 中的相关目录发生更改而不是轮询时通知我们。

标签: linux


【解决方案1】:

是的,投票是不明智的。这些资源:LJ 关于 Netlink 的文章,“使用 Netlink Sockets 理解和编程”使得做 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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-05
      • 1970-01-01
      • 2013-09-27
      相关资源
      最近更新 更多