自学内容网 自学内容网

【RK3588 Linux 5.x 内核编程】-内核IO复用与poll

内核IO复用与poll


让我们假设应用程序想要根据其状态读取/写入许多 IO(输入和输出)的情况。 在这种情况下我们该怎么办? 我们必须等待 IO 达到指定的状态(阻塞),然后再进行 IO 操作。 我们将对所有 IO 执行相同的流程。 所以在这种情况下我们可能会丢失数据或时序。 所以同步和阻塞不会每次都起作用。

我们可以通过为每个 IO(客户端)使用单独的线程来克服这个问题。 然后在他们的线程中处理。 但此变通办法会起作用,直到IO 数量减少一些为止。 如果有更多 IO 并希望监控所有 IO,该怎么办? 这就是异步和非阻塞调用的用武之地。Linux内核对IO复用提供了三种机制:

  • poll
  • select
  • epoll

本文将介绍如何在Linux驱动中实现IO复用的Poll方式。

1、IO复用

(Poll)轮询允许进程确定它是否可以在不阻塞的情况下读取或写入一个或多个打开的文件。 轮询用于必须使用多个输入或输出流而不阻塞其中任何一个的应用程序。

如果要在应用程序中使用轮询,驱动程序必须支持该轮询。 轮询将监视多个文件描述符或具有多个事件的单个文件描述符。

**有哪些可用的事件?**有如下可用事件:


原文地址:https://blog.csdn.net/wujuxKkoolerter/article/details/144697425

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!