使用查询,休眠-唤醒方式,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怎么注册信号处理函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/982863.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Java篇】算术如诗,逻辑似梦:Java 编程中的运算符探寻

文章目录 Java 运算符:在计算与逻辑之中追寻编程的哲理1.前言2. 算术运算符2.1 基本四则运算符:加减乘除( - * / %)2.2 除法与取余2.3 增量运算符( --)2.4 自增/自减运算符 3. 关系运算符3.1 关系运算符 4.…

Ae 效果详解:VR 转换器

Ae菜单:效果/沉浸式视频/VR 转换器 Immersive Video/VR Converter VR 转换器 VR Converter效果能够在 2D、球面投影、立方图、球形图等格式之间转换,并支持调整摄像机视角,适用于 VR 视频格式适配、画面校正和动画视角调整等,确保…

无显示器安装访问树莓派3B+

一、硬件准备 树莓派3B,适配器(供电),读卡器和SD卡 二、软件下载及安装 安装过程都是默认选项,一直点击下一步即可,在选择安装路径时可以改到你自己想装的盘里。 1.树莓派系统镜像 官网地址&#xff1…

Vue3路由组件和一般组件 切换路由时组件挂载和卸载 路由的工作模式

路由组件和一般组件 路由组件 一般放到pages或view目录 一般组件 一般放到component目录 切换路由 切换路由时,组件和执行挂载和卸载 路由的工作模式 Hash模式 缺点 1.不美观,路径带#号 优点 1.兼容性好 一般适用于管理系统 History模式 缺点…

多线程初阶(一)

文章目录 1.线程和进程的区别2.创建线程2.1Thread类2.2Runnable接口2.3匿名类创建Thread子类对象创建后台线程 3.Thread常⻅⽅法4.中断线程4.1中断标记(Interrupt Flag)4.2调⽤ interrupt() ⽅法 5.线程状态 1.线程和进程的区别 1.进程中包含线程&#…

1.3 Spring Boot原理解析

Spring Boot通过起步依赖(如spring-boot-starter-parent和spring-boot-starter-web)简化项目配置,减少版本冲突和依赖配置代码量。它采用“约定大于配置”的设计思想,通过SpringBootApplication注解(包含SpringBootCon…

⭐算法OJ⭐N-皇后问题 II【回溯剪枝】(C++实现)N-Queens II

⭐算法OJ⭐N-皇后问题【回溯剪枝】(C实现)N-Queens 问题描述 The n-queens puzzle is the problem of placing n n n queens on an n n n \times n nn chessboard such that no two queens attack each other. Given an integer n, return the num…

第6章 定时器计数器

目录 6.1 定时计数器的结构框图 6.2 定时器的控制字 6.2.1 TMOD:工作方式控制寄存器 6.2.2 定时/计数器控制寄存器TCON 6.3 定时/计数器的4种工作方式 6.3.1 方式0、方式1(13位、16位定时计数方式) 6.3.2 方式2(常数自动重装入) 6.3.3 方…

JavaWeb基础一(Tomcat、Maven)

前言 web开发 web开发:Web开发是指在万维网或私有网络上创建和维护网站的工作。它包括网页设计、网页编程、数据库管理等多方面的技术。Web开发可以分为前端开发和后端开发,前端主要关注用户界面和用户体验,而后端则处理服务器、应用程序和…

写一写idea中使用tomcat启动activiti过程

一 环境 tomcat 9.0.62 activiti的war包版本 7.1.0.M6 二 操作 官网下载:https://www.activiti.org/get-started 2.1 先在idea中编辑配置 2.2 点击加号然后选择tomcat本地进行确认 2.3 点击部署之后下边小加号 选择第二个之后就是选择自己想要使用tomcat启动的…

基于开源库编写MQTT通讯

目录 1. MQTT是什么?2. 开发交互UI3. 服务器核心代码4. 客户端核心代码5. 消息订阅与发布6. 通讯测试7. MQTT与PLC通讯最后. 核心总结 1. MQTT是什么? MQTT(Message Queuing Terlemetry Transport)消息队列遥测协议;是…

MAVEN手动配置(阿里云)全教程

介于网上各种各样的MAVEN配置过程中方法大致相同却细节参差不齐,我总结了我遇见的一些问题,来完全的解决MAVEN手动配置的全过程,以及分享解决小毛病的经验。 所需材料: MAVEN3.9.9(下载适合自己的版本即可&#xff09…

从0到1入门Linux

一、常用命令 ls 列出目录内容 cd切换目录mkdir创建新目录rm删除文件或目录cp复制文件或目录mv移动或重命名文件和目录cat查看文件内容grep在文件中查找指定字符串ps查看当前进程状态top查看内存kill终止进程df -h查看磁盘空间存储情况iotop -o直接查看比较高的磁盘读写程序up…

pytest结合allure

Allure 一、文档二、指令三、装饰器3.1 allure.step装饰器3.2 allure.description装饰器3.3 allure.title装饰器3.4 allure.link、allure.issue 和 allure.testcase装饰器3.5 allure.epic、allure.feature 和 allure.story装饰器3.6 allure.severity装饰器 一、文档 allure文档…

Dockerfile 深入浅出:从基础到进阶全解析

Dockerfile 深入浅出:从基础到进阶全解析 各位同学,大家好!欢迎来到今天的 Dockerfile 课程。Docker 技术在当今的软件开发和部署领域可以说是非常热门,而 Dockerfile 作为构建 Docker 镜像的关键文件,掌握它对于我们…

大模型巅峰对决:DeepSeek vs GPT-4/Claude/PaLM-2 全面对比与核心差异揭秘

文章目录 一、架构设计深度解剖1.1 核心架构对比图谱1.2 动态MoE架构实现架构差异分析表 二、训练策略全面对比2.1 训练数据工程对比2.2 分布式训练代码对比DeepSeek混合并行实现GPT-4 Megatron实现对比 2.3 关键训练参数对比 三、性能表现多维评测3.1 基准测试全景对比3.2 推理…

贪心算法二

> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:了解什么是贪心算法,并且掌握贪心算法。 > 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安! >…

【Mac】MacOS系统下常用的开发环境配置2025版

早期版本的一个环境搭建参考 1、brew Mac自带终端运行: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" Installation successful!成功后运行三行命令后更新环境(xxx是mac的username&a…

【JavaEE】SpringMVC简单练习

目录 一、计算器1.1 接口定义1.2 前端代码1.3 后端代码1.4 运行结果 二、⽤⼾登录2.1 需求2.2 接口定义2.3 前端页面2.4 后端代码2.5 结果 三、留⾔板3.1 需求:3.2 接口3.3 前端代码3.4 后端代码3.5 运行结果 四、图书管理系统4.1 需求4.2 接口定义4.3 后端代码 一、计算器 1.…

go 分布式redis锁的实现方式

go 语言以高并发著称。那么在实际的项目中 经常会用到锁的情况。比如说秒杀抢购等等场景。下面主要介绍 redis 布式锁实现的两种高并发抢购场景。其实 高并发 和 分布式锁 是一个互斥的两个状态: 方式一 setNX: 使用 redis自带的API setNX 来实现。能解决…