【发布时间】:2018-08-05 07:36:32
【问题描述】:
取一个串口。串口可以调用ioctl 和TIOCMIWAIT 等待信号变化。但是,如果串行端口以非阻塞方式打开,当像 CTS 这样的信号线发生变化时,如何使用 select、poll 或 epoll 之类的东西来打破事件循环?让我们假设串行端口也大量用于读取和写入。生成另一个线程似乎是一个糟糕的选择。
在 Windows 上,OVERLAPPED IO 完美解决了这个问题。
我对上面列出的具体情况很感兴趣,也对如何编写需要将中断传递给用户空间的设备驱动程序感兴趣。
【问题讨论】:
-
据我所知,这样的机制是不存在的。我花了很长时间寻找一个。我即将设计和记录一个
TIOCMNOTIFY调用,该调用注册了以后通过poll() et.al 通知的兴趣。虽然我不知道如何将其争论到 Linux 内核中......:/
标签: c++ c linux serial-port