首页 > 系统相关 >【RK3588 Linux 5.x 内核编程】-内核IO复用与poll

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

时间:2024-12-24 16:56:44浏览次数:5  
标签:poll RK3588 轮询 复用 内核 IO Poll

内核IO复用与poll

文章目录


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

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

  • poll
  • select
  • epoll

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

1、IO复用

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

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

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

标签:poll,RK3588,轮询,复用,内核,IO,Poll
From: https://blog.csdn.net/wujuxKkoolerter/article/details/144697425

相关文章

  • 在 .NET Core 中使用 ActionBlock 实现高效率的多步骤数据处理
    目录一、引言二、ActionBlock介绍什么是ActionBlock?ActionBlock的特点ActionBlock的使用场景ActionBlock的基本用法三、假设场景四、解决方案一、引言上一篇博客分享了使用Channel来实现针对大量数据的多线程异步处理,感谢大哥们在评论中提出的宝贵的问题和建议!本篇将分享......
  • CrisisSense-LLM: Instruction Fine-Tuned Large Language Model for Multilabel Soci
    本文是LLM系列文章,针对《CrisisSense-LLM:InstructionFine-TunedLargeLanguageModelforMultilabelSocialMediaTextClassificationinDisasterInformatics》的翻译。CrisisSense-LLM:灾难信息学中多标签社交媒体文本分类的指令微调大语言模型摘要1引言2......
  • 自动化测试工具Ranorex Studio(六十九)-JAVA应用的测试
    JAVA应用的测试Ranorex的Java插件允许测试JavaSwing和JavaAWT应用程序。你可以通过JAVA安装向导手动的给应用程序安装Java插件。  图:Java调制向导 如果你使用的系统是WindowsXPSP2,请确保安装了WindowsUpdateKB884020更新包,这个更新文件是解决本地网络通信问题的......
  • 2024 新版Clion安装使用教程(附激活以及常见问题处理)
    Clion简介在同学向我吐槽codeblock多么难用于是我疯狂安利CLion的时候,他发出了灵魂的拷问——“CLion是啥?”CLion和codeblock一样都是可以编写C/CPP的IDE(集成开发环境),CLion的优点多多,尤其是CLion对小白非常友好。配置简单:只需要点几下鼠标就可以完成编译器配置。语法查错:很多......
  • 从 LLM 到 LAM :Large Action Models
    与主要专注于文本生成和回复的传统LLMs不同,LAMs旨在在物理和数字环境中执行动作。核心观点LAMs是AI发展的重要方向,能够将AI从被动语言理解转变为主动任务完成,在人工智能发展进程中具有重要意义。LAMs通过在物理和数字环境中执行动作,实现了从语言交互到实际行动的......
  • Solution - Luogu P11405 [RMI 2020] 秘鲁 / Peru
    考虑到区间可能会有交,这个时候肯定会贪心的让这部分的权值为偏大的一部分。于是考虑把条件转化为由若干个长度\(\lek\)的不交区间覆盖。那么如果对应的区间是\([l,r]\),那么贪心的,这个区间选出来的权值就会是\(\max\limits_{i=l}^rs_i\)。那么就可以设出dp。定义\(f......
  • 【C++boost::asio网络编程】有关服务端退出方法的笔记
    有关服务端退出方法的笔记C风格的信号关闭boost::asio中的关闭方式原来服务端的main函数如下intmain(){ try { boost::asio::io_contextioc; Servers(ioc,8888); ioc.run(); } catch(conststd::exception&) { } return0;}  上面弊端在......
  • 虚拟机VMware Workstation15无法安装win11
    安装win11时,总是因为硬件配置不够,所以不让安装。让我来解决这个问题吧。首先新建一个虚拟机,选择win10即可,配置随意。下面是关键的配置:1.虚拟机设置中,【选项】-【高级】-【固件类型】中,UEFI下的【启用安全引导】,打上对勾。 2.【选项】-【访问控制】中,加上密。 3.【硬件】-......
  • Mission Planner 二次开发之界面(二)
    源码下载官方源码地址点击此处。点击如下按钮下载。 启动界面改装 此模块位于missionplanner项目下splash.cs模块。1.打开模块后发现有个空白无用的picturebox1,直接删掉。删掉后运行报错,找到报错代码,把picturebox1有关的都删掉。2.标题栏无用且与画面不协调,直接隐藏。选中......
  • 最新Stable Diffusion整合包安装,全新加速、解压即用、防爆显存三分钟入门
    StableDiffusion出来已经很长一段时间了,网上其实已经有很多很多教程教如何安装了,但是由于网上太多的教程,也不知道哪个更好,且有的伙伴可能也是没找到合适的,也有的伙伴暂时还没找到。在StableDiffusion刚出来不久,我也尝试了多种安装方式,也有试过google、腾讯云一键安装脚本......