当前位置: 首页 > news >正文

使用查询,休眠-唤醒方式,POLL方式,异步通知方式,读取输入设备信息

查询方式:
APP调用open函数时,传入“O_NONBLOCK”表示非阻塞,就可以以非阻塞方式,也就是查询方式用read函数去读取,如果没有数据的话,就会立刻返回一个错误。

如果我们打开这个文件时没有传入“NONBLOCK”参数,APP去调用read函数,如果驱动程序中有数据,那么APP的read函数会返回数据,否则APP就会在内核态休眠,当有数据时,驱动会把APP唤醒,read函数恢复执行并返回数据给APP.

POLL/SELECT 方式(API是不一样是那个的,其他都是一样的)

POLL函数:
需要包含的头文件和POLL函数的使用方法

struct *fds 是一个指针数组,指针数组有多少项由nfds决定,POLL函数可以检测多个函数,最后一个参数是超时时间
struct pollfd 结构体

fd是指要检测的文件
events 表示要求的,它期望的它期望的事件

比如说,我们想去读取输入事件时,想到读到数据,那么我们期望的是有数据可供应用程序来读,这时候就可以去设置这个event等于POLLIN,但有时候应用程序是想把数据发给硬件,发给驱动程序,这个时候应该把event设置为POLLOUT,表明它期望这个驱动程序有空间给应用程序来写数据,当这个POLL函数返回时,这个驱动程序会设置returned event 的值,把这个returned event设置成POLLIN ,POLLOUT 或者其他值,当这个POLL函数正常返回时,你需要去判断里面的每一个结构体,来看看returned event是不是你期望的event,如果是你期望的event,就表明有数据或者有空间。
那么这个POLL函数的返回值是怎么样的呢?
一个是正整数,表明有多少个文件就绪了(也就是有多少个文件有数据可读,或者有空间可写),如果返回一个零的话,就表明是超时,如果是-1的话,就表明发生了某些错误。
异步通信

异步通信时,驱动程序会给应用程序发信号SIGIO,应用程序把自己的进程号事先告诉驱动程序,这样驱动程序才能够应用程序发信号,应用程序接收到信号后,执行信号处理函数,信号处理函数和信号怎么挂钩,APP事先注册信号处理函数
APP怎么注册信号处理函数

相关文章:

  • 代码随想录算法训练营第22天 | 组合总和 分割回文串
  • PyTorch 中的混合精度训练方法,从 autocast 到 GradScalar
  • Windows编程----进程:命令行参数
  • 如何根据应用需求选择光谱相机
  • OpenCV计算摄影学(18)平滑图像中的纹理区域同时保留边缘信息函数textureFlattening()
  • 第五章 起航16 申请一个外包资源
  • 【Linux 22.4 ubuntu 安装cuda12.1 完整方案】
  • OFA:通过简单的序列到序列学习框架统一架构、任务和模态
  • 数学建模:MATLAB强化学习
  • 通过 Docker openssl 容器生成生成Nginx证书文件
  • 2025-03-07 :详细介绍一下 Databricks 的 Lakehouse
  • 【华为OD机试真题29.9¥】(E卷,100分) - 运维日志排序(Java Python JS C++ C )
  • OpenHarmony子系统开发编译构建指导
  • dart中实现子isolate的管理类,特适用于针对数据库的处理
  • 【js逆向】iwencai国内某金融网站实战
  • 心智模式—系统思考
  • 小白学Agent技术[1]
  • 初阶数据结构(C语言实现)——3.4带头双向循环链表详解(定义、增、删、查、改)
  • Android AudioFlinger(四)—— 揭开PlaybackThread面纱
  • ollama 安装方式
  • 昆明市城乡建设局网站/学网络营销好就业吗
  • 哪些网站做品牌特卖/东营网站推广公司
  • 网站的友情连接怎么做/google ads
  • 购物网站首页界面设计/免费论坛建站系统
  • 12306网站谁做的/百度网站官网入口网址
  • 在相亲网站做红娘/如何建网站不花钱