【问题标题】:Does signal sent from kernel to user space real time?从内核发送到用户空间的信号是实时的吗?
【发布时间】:2017-02-16 06:29:19
【问题描述】:

我正在编写一个驱动程序并尝试从内核向用户空间发送一些东西,我要做的(这是我知道的唯一方法)是将信号从内核发送到用户空间,然后调用 signal(... ) 在用户空间的某个地方,它会捕获它并使用 ioctl(...),现在是内核向用户空间发送东西的时候了。

我的问题是,当信号发送时,它必须等待util用户空间调用信号(),然后做点什么?

还有其他方法可以在内核和用户空间之间进行通信吗?

【问题讨论】:

  • 我相信发送信号是异步的。内核和用户之间最简单的交互方式之一是其他字符设备上的 ioctl/读/写操作。
  • 你在编写什么驱动程序,你需要从内核发送什么确切的东西到用户空间,什么时候?请编辑您的问题以提供更多详细信息

标签: c embedded-linux


【解决方案1】:

您是否考虑过让您的驱动程序只在文件描述符上发送一些字节(例如一些 socket(7)pipe(7) 或字符设备..)?还是使用 netlink(7) ?或与systemd 互动?

一种常见的方法是在用户区(在启动时启动)中使用一些帮助程序来处理该文件描述符。该程序可能会使用一些多路复用系统调用,例如poll(2)

请注意,当您的驱动程序正在运行时(并且您尝试发送一些信号),当前任务可能不是使用您的驱动程序的进程。所以从内核空间发送信号可能会很棘手。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 2021-03-02
    • 1970-01-01
    • 2021-08-03
    • 2020-02-26
    • 1970-01-01
    相关资源
    最近更新 更多