Linux源码阅读笔记-设备驱动程序

news2024/12/24 20:09:49

基础知识

  • Linux 内核输入子系统是对分散、多种不同类别的输入设备(鼠标、键盘、触摸屏、手写板等)进行统一的驱动程序。优势:统一物理形态各异相似输入设备处理功能;提供分发输入报告给用户应用程序的简单事件接口;抽取输入驱动程序并且引进一致性。输入子系统架构视图如下:

image.png

  • 设备驱动程序可以利用已存在的、合适的事件驱动程序通过输入核心和用户应用程序接口。设备驱动程序是指输入设备驱动程序,而不是输入事件驱动程序
  • 输入事件驱动程序分析:事件驱动程序提供一个硬件无关的抽象,方便与输入设备进行交互。将 GUI 和各种底层硬件隔离起来。

输入设备驱动程序分析

键盘(PC 键盘、USB 与蓝牙键盘)

键盘内部处理流程:键盘控制器扫描键盘矩阵,译码->键盘设备驱动程序在 serio 指引下,针对每个键按下与释放,从键盘控制器读取原始的扫描码->输入模式(键盘设备驱动程序转换接受到扫描码为键值->根据加载的键盘映射,键盘事件驱动程序进行键值翻译)

鼠标(PS/2 鼠标,Trackpoint, Touchpad, USB 与蓝牙鼠标)

输出事件(一些设备驱动程序也是处理输出事件)

image.png

image.png

数据结构(struct input_dev)

image.png

  • input_event 为事件传输的载体,输入子系统的事件封装 struct input_event 结构体,最后传输给我们用户空间。

image.png

  • input_handler 结构体类型为事件驱动的主体,相当于每一种处理方式对应一个 handler 结构体。

image.png

image.png

常用的内核编程接口

  • input 核心注册一个设备

image.png

  • input 核心删除一个设备

image.png

  • 产生按键或者按钮单击;在某个方向产生相对移动;在某个方向产生绝对移动

image.png

  • 注册一个用户事件驱动程序

image.png

image.png

资料参考:https://github.com/0voice

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DW-大模型生图安全疫苗注入作业记录

Task1.跑通baseline Task2.赛题评测方法 //------------------------------------------------------------------------- Task1-BaseLine 创建实例后与你运行代码,git clone model 太慢了 上modelspace 找到通义千问下载 模型下载慢问题 解决办法 modelscope do…

【数据分析】估算问题(费米估算问题)

1. 费米估算 费米估算问题是一种估算方法,它要求在没有足够信息的情况下,通过合理的假设和简化模型来计算一个复杂问题的大致答案。这种估算方法以意大利物理学家恩里科费米命名,他以能够在没有精确数据的情况下进行快速而准确的估算而闻名。…

ssm基于Web的老年公寓信息管理+jsp

系统包含:源码论文 所用技术:SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习,获取源码请私聊我 需要定制请私聊 目 录 目 录 III 第1章 绪论 1 1.1 课题背景 1 1.2 课题意义 1 1.3 研究内容 2 第2章 开发环境与技术 3 …

web3还未真正普及,网页已经漂亮的不像话了。

尽管 Web3 还未真正普及开来,但如今的网页已经呈现出令人惊叹的美丽景象。设计师们凭借着先进的技术和无限的创意,打造出一个个精美绝伦的网页界面。 色彩的搭配和谐而富有吸引力,布局合理且充满艺术感。动画效果生动活泼,为用户…

YOLOv8模型改进 第七讲 一种新颖的注意力机制 Outlook Attention

随着目标检测技术的不断发展,YOLOv8 作为最新一代的目标检测模型,已经在多个基准数据集上展现了其卓越的性能。然而,在复杂场景中,如何进一步提升模型的检测精度和鲁棒性依然是一个重要挑战。本文将探讨将 Outlook Attention 机制…

头戴式耳机300元预算选择有哪些?头戴式耳机300元左右五款推荐!

晚上下班或周末在家,想要沉浸式观影、游戏,肯定少不了一款头戴式耳机,它的两个大耳罩既不会像入耳式耳机那样对耳仓产生压迫不适感,也能全面包裹耳朵必要时尽可能的隔绝外界环境音,比那种把耳朵开放在外的骨传导耳机更…

FreeRtos到底是什么?

一,RTOS的全称是Real time operating system,中文就是实时操作系统 FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等&…

lua脚本使用cjson转换json时,空数组[]变成了空对象{}

一、前言 项目lua使用工具:cjson 问题:reids中部分数据的json key存在为[]的值,使用cjson进行解析的时候将原本空数组[]解析成了空对象{} 目标:原本[] 转 [] 二、解决方案 在使用cjson类库时,先配置json转换要求 -…

信息与计算科学:“数学 + 计算机”,奏响未来科技新乐章

在当今科技飞速发展的时代,有一个专业如同一颗闪耀的新星,散发着独特的魅力,那就是信息与计算科学专业。 一、专业全貌:追根溯源,领略交叉之美 (一)专业的诞生与发展 1998 年,教育…

线上代码调试,使用Chorme的请求mock

前端页面上展示的数据有问题,第一反应肯定是要验证是不是接口返回的数据的问题 可以直接利用谷歌浏览器更改接口返回的返回值 如何使用谷歌浏览器mock请求 mock一个请求,我们首先需要打开浏览器的Network面板,找到请求后,点击鼠标…

【Python异常处理】详解Python中的异常捕获和处理!

【Python异常处理】详解Python中的异常捕获和处理! 在编写 Python 程序时,异常是不可避免的。无论是输入错误、资源不可用,还是其他逻辑问题,都会导致程序中断。为了编写更健壮的代码,理解并使用 Python 中的异常捕获…

解密1688详情 API 接口:获取与运用指南

1688(阿里巴巴中国站)作为国内领先的B2B电子商务平台,为企业提供商品批发、采购等业务。随着电子商务的快速发展,企业对于数据的需求日益增长。为了帮助企业更高效地获取商品信息,1688提供了丰富的API接口,…

华为eNSP实验:交换机流量控制之流量抑制

一、交换机流量控制之流量抑制 流量抑制是一种网络管理技术,用于防止过量的数据流通过网络设备,从而避免网络拥塞和性能下降。具体如下: 基本原理: 流量抑制通过设置特定的阈值来限制网络中的数据流量。当某个端口或接口的入站流…

第三课:python学习之安装pygame

首先确定自己的python已经将环境变量配置完成 第二步:敲击python命令看环境变量是否配置成功 第三步:敲击命令pip可以查看pip下有很多的命令,都有提示 第四步:我们开始安装pygame,我们使用pip install pygame命令进行安装 第五步…

【MySQL基础刷题】总结题型(二)

最多10题,再多不消化了 1.至少有5名直接下属的经理2.销售员3.订单最多的客户4.计算布尔表达式的值5.查询球队积分6.苹果和桔子7.两人之间的通话次数8.确认率9.各赛事的用户注册率 1.至少有5名直接下属的经理 注意左连接的使用 select e1.name from Employee e1 lef…

静态路由、动态路由以及默认路由

默写: ARP协议作用: 1.将ip地址转换为mac地址 2.检测ip地址是否有冲突(无故ARP,免费ARP) icmp协议: 检测主机双向连通性 tcp与udp的区别: tcp:面向连接,慢&#xf…

【测试基础篇1】一文搞懂软件测试基础知识,开启测试之路,走向测试人生巅峰

简介:一文搞懂软件测试,开启测试之路,走向测试人生。 一、软件测试的定义 维基百科定义: 软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其…

TypeScript数据类型限定(基本数据类型,void,数组,元组,枚举,any,unknown,never,函数,自定义数据类型,联合类型和交叉类型)

一、安装解析ts的工具包 node.js只认识js代码,不认识ts代码。 需要将ts代码转化为js,然后就可以在node.js中运行了。 安装步骤:打开终端,输入命令npm i -g typescript回车 typescript是用来解析ts的工具包。提供了tsc命令&…

Python 如何处理大规模数据库表的迁移与数据迁移的高效执行

Python 如何处理大规模数据库表的迁移与数据迁移的高效执行 引言 在现代应用开发中,随着业务需求的增长,数据库表结构和数据往往需要进行迁移和更新。迁移(Migration)是指对数据库表的结构、数据类型、索引、约束等进行修改或更新…

<Linux> 线程安全

目录 文章目录 一、Linux线程互斥 1. 进程线程间的互斥相关背景概念 2. 互斥量mutex 3. 互斥量接口 初始化互斥量 动静态分配 销毁互斥量 互斥量加锁 互斥量解锁 4. 互斥量实现原理 5. 简单封装互斥量 二、可重入与线程安全 1. 概念 1.1 可重入 1.2 线程安全 2. 常见的线程不…