LDD之input子系统 总结与流程图

input输入子系统-大致流程 1、分配一个设备结构体 input_dev = input_allocate_device(); input_allocate_device()函数在内存中为输入设备结构体分配一个空间,并对其主要的成员进行了初始化 2、定义设备所支持的动作和键值 _set_bit(EV_SYN, input_dev->evbit);    //动作 EV_KEY, EV_ABS __set_bit 阅读详情
-----------------------------------------------------------------------
本文系本站原创,欢迎转载!
转载请注明出处:http://blog.youkuaiyun.com/android_huber
交流邮箱:dp.shao@gmail.com

-----------------------------------------------------------------------


1.input.c中input_init

注册input类,初始化proc,注册设备register_chrdev(INPUT_MAJOR,"input", &input_fops)

2.evdev.c中 evdev_init

input_register_handler(&evdev_handler)注册handler:将evdev_handler加入到input_handler_list链表中,然后遍历每一个挂在Input_dev_list上的设备调用input_attach_handler

3.inp[ut.c中 input_register_device

device_Add(&dev->dev)→

Kobject_get_path创建sys接口→

list_add_tail(&dev->node.&input_dev_list)将设备加入全局链表中→

然后遍历input_handler_list中的每一个handler,调用input_attach_handler进行attach

4.input.c中 input_attach_handler

调用input_match_device检测id匹配情况,然后调用handler中的connect函数:

在connect中封装了handle和evdev->dev结构体

input_register_handle注册handle,handle可看作handler和device的结合

最终调用device_Add(&evdev->dev)

5.input_event

Input_event-->input_handler_event:对type进行switch查找,对不同事件执行不同处理。对于按键和触摸屏,交由handler->event处理。-->

Input_pass_event→

handler->event-->即evdev_event函数

在evdev_event中封装了input_event,并将该结构体保存在client->buffer[client->head++]数组中。client中的buffer会处理成环形缓冲区,

处理方式:client->head &= EVDEV_BUFFER_SIZE-1

6.evdev.c中 evdev_read

将client中的input_event结构体提取出来,然后将该结构体copy_to_user到应用层。


下面是我刚画好的一个流程图


大家可以参照 下面这篇分析代码的文章一起看

http://blog.youkuaiyun.com/android_huber/article/details/7407103

图看不全的话,大家可以保存到本地,然后方便放大了看。

需要清晰大图的请到下面网址去下载

http://download.youkuaiyun.com/detail/android_huber/8537241


OpenVINO模型编译异常ov::Exception的深度排查与解决指南 在深度学习模型部署中,模型编译是将训练好的神经网络转换为特定硬件可执行代码的关键步骤,其核心原理涉及中间表示(IR)优化、算子融合与硬件指令集映射。这一过程的技术价值在于显著提升推理性能,降低延迟,是边缘计算与服务器端AI应用的基础支撑。然而,在实际工程实践中,开发者常因环境配置、模型转换或设备兼容性问题,在编译阶段遭遇运行时异常,导致应用崩溃。本文聚焦OpenVINO推理框架中典型的`core.compile_model`方法引发的`ov::Exception`未处理异常问题,通过系统性的**环境验证** 阅读详情

相关推荐

CTF逆向实战:从SimpleRev解析大小端存储与IDA分析技巧

在计算机底层数据存储中,字节序是理解内存布局的关键概念,它定义了多字节数据在内存中的排列顺序。小端序将低位字节存储在低地址,而大端序则相反,这一设计差异源于不同的硬件架构与数据访问优化需求。理解字节序对于二进制安全、逆向工程和网络协议分析至关重要,尤其是在处理跨平台数据解析和加密算法时。在CTF逆向题目和实际漏洞分析中,许多错误源于对内存真实数据形态的误解。IDA Pro等反汇编工具为提升可读性,常将小端序数据转换显示,若忽略这一机制,会导致后续解密逻辑全盘错误。本文以BUUCTF平台上的SimpleRev

weixin_34267123的博客 376

linux input输入子系统分析《四》:input子系统整体流程全面分析

主要讲述本人在学习Linux内核input子系统的全部过程,如有分析不当,多谢指正。以下方式均可联系,文章欢迎转载,保留联系信息,以便交流。 邮箱:eabi010@gmail.com 主页:www.ielife.cn(爱嵌论坛——嵌入式技术学习交流) 博客:blog.youkuaiyun.com/ielife 1      input输入子系统整体流程 本节分析input子系统在内核中的

比特人生的专栏 1万+

从可运行二进制文件入门逆向工程:基于ProgramBench的系统化实战指南

逆向工程是软件安全、漏洞分析和遗留系统维护中的一项核心技术,其核心目标是从编译后的可执行文件中还原程序逻辑与数据结构。其基本原理是通过静态分析(如反汇编、反编译)和动态调试(如运行时内存监控)相结合,解析机器码并推导出高级语义。这项技术的核心价值在于,它使工程师能够在不依赖源代码的情况下,深入理解软件的内部工作机制、识别潜在安全风险或实现兼容性开发。在恶意软件分析、软件兼容性测试、漏洞挖掘等应用场景中,逆向工程都是不可或缺的手段。本文以备受关注的ProgramBench基准所倡导的严谨、系统化方法论为指导,

weixin_34220179的博客 379

Android 5.0 双卡信息管理分析

    首先,如前面的博文所讲的,Android5.0开始支持双卡了。另外,对于双卡的卡信息的管理,也有了实现,尽管还不是完全彻底完整,如卡的slot id, display name,iccid,color等,其设计思路竟然跟之前接触到的一个平台是一样的,都是同不同颜色来标识不同的卡,让用户一目了然,只是5.0的实现目前还局限在FW框架里,应用层的实现还没有,相信,等到5.1或者再之后的版本中,...

weixin_33762321的博客 283

ZCode:面向开发者的CLI可视化编排工具

命令行接口(CLI)是现代软件开发与运维的核心交互方式,但其文本化、状态隐式、参数耦合等特性长期制约效率与协作。CLI可视化管理并非简单套壳或终端美化,而是通过模块化抽象、结构化参数建模、执行上下文持久化与标准化能力契约,实现CLI工具的可见、可管、可控。其技术价值在于降低使用门槛、提升调试精度、保障执行安全,并支撑跨团队能力复用。典型应用场景包括多环境切换、AI模型调用(如智谱GLM)、K8s部署编排及自动化报告生成。ZCode正是这一理念的工程落地代表,专为CLI而生,由智谱研发,聚焦开发者工作流最后一

cumo3681的博客 664

Canoe主要功能的详细介绍

CANoe是德国Vetor公司推出的一款用于总线开发的设备,全程为CAN open environment。后来随着总线技术的发展,CANoe不仅限于CAN类型的总线开发,还包含LIN、FlexRay、MOST和以太网等开发。在车载网络和ECU开发、测试和分析方面,CANoe几乎长期占据着垄断地位,当然是因为其强大的功能性了。目前用这个工具的主要是整车厂和供应商的网络设计工程是、开发工程师和测试工程师。小编当时安装CANoe的时候也是花了一定的时间和精力,好在没有崩溃。

车载测试 3723

input 上报流程图

input 上报流程图 http://blog.chinaunix.net/uid-28320320-id-3389196.html 转载于:https://www.cnblogs.com/sky-heaven/p/10779391.html

weixin_34088598的博客 314

用R语言实现“中断时间序列分析” --- R code for ITS

ITS方法可用于评估一项干预措施的效果,从水平改变和斜率改变两个角度来描述干预引起的变化。

franksui的博客 4030

Android4.1 Framwork层Input子系统分发InputEvent流程图

今天整理了一下Android4.1的代码流程,将Input事件分发这部分画成了流程图,流程图里面清晰的描述了Input事件从中间层到应用层的分发过程。过程有些繁琐,流程图如下:

撒哈拉的绿洲 2766

域控制器迁移后NETLOGON共享丢失的修复指南

本文详细解析了在Windows域控制器迁移后NETLOGON共享丢失的故障现象与修复方法。通过使用Dcdiag工具诊断,定位注册表键值SysVolReady异常及SCRIPTS目录缺失等核心原因,并提供了修改注册表、创建目录、重启Netlogon服务等逐步修复指南,帮助管理员快速恢复域用户登录功能,确保业务连续性。

weixin_29245767的博客 88

使用 MATLAB/Simulink 构建一个 压水堆核电机组的反应堆控制与功率调节系统 仿真模型

本文通过Simulink构建压水堆核电机组的反应堆控制与功率调节模型,详细介绍了建模流程:从中子点动力学核心方程、反应性反馈模型(控制棒、多普勒和慢化剂效应)、一回路热工模型到完整的闭环控制系统。教程包含系统结构设计、参数设置、模块连接方法,以及典型负荷变化场景的仿真分析,帮助读者理解核反应堆动态特性和控制原理。同时提供了进阶建模建议,如分布参数模型和先进控制策略的应用。该模型为教学简化版,强调核能系统的机理建模与Simulink实现方法,适合核工程与控制领域的学习者参考实践。

amy_mhd的博客 188

CTF逆向工程入门:从零掌握二进制程序分析与动态调试

逆向工程是软件安全领域的核心技术,其本质是通过分析程序的二进制代码,理解其内部逻辑与工作原理。这一过程通常涉及静态分析与动态调试两大方法:静态分析侧重于在不运行程序的情况下,通过反汇编和反编译工具(如IDA Pro、Ghidra)解析代码结构;动态调试则借助调试器(如GDB、x64dbg)在程序运行时监控其行为,观察内存与寄存器状态。掌握逆向工程对于漏洞挖掘、恶意软件分析、软件保护评估具有重要价值,广泛应用于CTF竞赛、安全审计等场景。本文以CTF逆向题目为切入点,系统讲解如何从信息收集、关键代码定位到实战

weixin_30836759的博客 382

LVGL 实战:倒计时翻页钟

环境:LVGL 9.x + PC 模拟器。每个数字做成上下两半的卡片,秒变时用绕中缝翻页:上半旧页折叠下去、下半新页展开上来,配合阴影遮罩做出立体感。从 02:00 倒计时到 0,闪一下再重置。界面文案用英文(默认字体无中文)。

摸鱼专家 213

逆向工程与加密算法实战:从CTF到真实攻防的破解之道

逆向工程与加密算法是网络安全领域的核心技术,其核心在于理解程序或协议的设计逻辑,并寻找其实现上的薄弱点进行对抗。从原理上看,无论是静态分析、动态调试,还是对AES、RSA等常见加密算法的识别与手工推导,都遵循着“观察-分析-验证”的方法论。这些技术的价值在于,它们不仅是CTF竞赛中的解题利器,更是真实世界安全评估、漏洞挖掘和软件分析中不可或缺的技能。在实际应用场景中,安全研究人员常需面对代码混淆、反调试等高级对抗技术,此时结合符号执行、污点分析等自动化工具,能有效提升分析效率。本文以实战经验为基础,系统梳理

weixin_30522183的博客 303

RAP 通用搜索实战:用 CDS 注解打造 Fiori Elements 的一体化检索体验

RAP应用中的通用搜索优化实践:通过CDS注解实现高效模糊匹配 摘要:本文介绍了在SAP RAP应用中优化列表搜索体验的方法。通过CDS注解配置通用搜索功能,用户无需指定字段即可在多字段中模糊匹配数据。关键实现包括:1)使用@Search.searchable启用全局搜索;2)通过@Search.defaultSearchElement标记核心搜索字段;3)利用@Search.fuzzinessThreshold设置容错阈值(0.7-1.0)处理拼写错误;4)使用@Search.ranking优化结果排序。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1398

MATLAB应用实战系列(四十三)-基于MATLAB的光伏并网系统仿真设计

在Matlab中建立光伏电站接入系统模型,包括光伏发电逆变器及负荷模型等,仿真分析接入点处的电能质量,实现高品质并网运行。 壹 构建太阳能电池模型。 初始化参数如下图所示。 贰 构建MPPT控制模型。 具体封装如下所示: 通过PWM算法实现DC-DC稳步输出最大点。 叁 三、构建直流短距离输电线路。 仿真模型如下图: 通过电容来均衡线路电压,使得线路电压保持可靠性。 肆 通过逆变器变换,使得直流线路转换成...

wenyusuran的专栏 3170

达梦DM8 8.1.1.84 银河麒麟V10安装:3种权限配置方案与图形化界面报错解决

本文详细解析了达梦DM8 8.1.1.84在银河麒麟V10系统上的安装过程,重点介绍了三种权限配置方案及图形化界面报错的解决方法。内容涵盖权限架构设计、sudoers配置技巧、DISPLAY环境变量解析以及典型报错场景的实战处理,为国产化替代项目提供全面的技术指导。

weixin_30268071的博客 402

【即插即用模块】注意力篇 | MICCAI 2023 | MFE:多尺度特征提取,告别固定感受野,猛涨2个点!

本文提出一种用于低分辨率乳腺癌病理图像超分辨率与分类的网络SHISRCNet。针对现有方法处理低分辨率图像效果差、感受野固定等问题,设计了多特征提取模块(MFE),通过多速率空洞卷积覆盖全尺度感受野(局部到全局),结合递进残差连接和动态权重融合机制,实现自适应多尺度特征增强。实验表明,该模块在超分辨率任务中PSNR提升近2个点,分类准确率显著提高。代码提供详细注释,支持即插即用,适用于各类多尺度视觉任务。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 207

Handy离线语音转文字终极指南:深度解析10大技术挑战与实战解决方案

开源项目在开发环境配置和编译运行过程中常常会遇到各种技术问题,这些问题往往让开发者感到困扰。作为一款完全离线运行的跨平台语音转文字应用,Handy结合了React前端和Rust后端技术栈,在安装部署时会面临多个技术挑战。本指南将深入剖析这些常见问题,提供专业级的解决方案。 ## 1. 环境依赖缺失:Bun包管理器安装失败 **故障现象**:执行`bun install`时系统提示"Bun: c

gitblog_00631的博客 992

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Umi-OCR引擎插件故障诊断与修复:从原理到实践的技术指南

当你满怀期待地双击Umi-OCR.exe,准备享受离线OCR带来的便利时,却发现程序毫无反应——这种场景对许多技术爱好者来说并不陌生。作为一款依赖独立OCR引擎插件的开源工具,Umi-OCR的核心识别能力完全建立在正确的插件配置之上。本文将带你深入探索OCR引擎插件的工作原理,并提供一套从诊断到修复的完整技术方案。 ## 场景引入:当OCR引擎"罢工"时 想象一下这样的场景:你正在处理一份重要

gitblog_00716的博客 400

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

数据血缘三层穿透:物理、逻辑与语义的全栈可追溯体系

数据血缘是支撑现代数据治理与可信分析的基础能力,其本质并非静态图表,而是覆盖物理层(字节级流转路径)、逻辑层(可解析/可逆/可测试的转换规则)和语义层(业务定义、时效契约与合规标签)的动态结构化认知体系。它解决的核心问题是数据的‘来源可信性’与‘影响可评估性’,为故障定位、口径对齐、PII管控及SLA保障提供确定性依据。在实时数仓、跨系统订单履约、风控与推荐等强依赖数据一致性的场景中,缺失任一层血缘都将导致分析失真、审计失败或业务中断。本文聚焦可落地的三层穿透实践,融合OpenLineage、SQL AST

chulilang8944的博客 284

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Pull Request实战指南:从开源贡献到职业跃迁

Pull Request(PR)是开源协作的核心交付单元,其本质远超代码提交——它是技术能力、工程素养、跨文化沟通与个人品牌的一体化体现。理解PR背后的系统性逻辑(如构建流程、CI/CD验证、维护者决策树),掌握从环境配置、分支管理、漏洞复现到测试编写的全链路实践方法,已成为现代开发者的关键生存技能。尤其在Nginx、STM32等高频场景中,正确应对`error: #5`类编译错误、CVE安全修复及跨平台构建问题,直接决定贡献有效性。本文聚焦真实项目中的PR闭环实践,融合Open Source协作规范与工程

soyo的专栏 548

程序员的自我修养:链接、装载与库(链接)

步骤名称核心任务关键数据结构1符号解析确定哪些符号需要重定位全局符号表2重定位表确定在哪里修正、如何修正.rel.text.rel.data3重定位过程根据公式计算并写入正确地址重定位类型、计算公式。

weixin_44446626的博客 462

高通嵌入式 Linux 开发实战(9):容器化部署:Docker 在骁龙嵌入式平台的裁剪方案——边缘应用轻量化打包

场景推荐方案单板、≤5 容器单板、频繁更新、需声明式管理K3s 单节点多板协同(边缘集群)混合云边协同K3s agent + 云端 K8s control plane精简运行时:用 containerd + crun 替代完整 Docker Engine,内存从 150MB 降至 45MB最小镜像:多阶段构建 + 平台定制基础镜像,典型推理容器从 1.8GB 压缩至 180MB设备直通:通过 CDI 规范标准化 GPU/NPU/DSP 挂载,实现容器内硬件加速零损耗增量更新。

weixin_38498942的博客 341

Linux V4L2驱动

对于v4l2_subdev_core_ops、v4l2_subdev_video_ops、v4l2_subdev_sensor_ops、 v4l2_subdev_pad_ops更多的做法是开ioctl出来给用户态去调用。

2301_79302469的博客 220

SIM卡卡号ICCID号的含义

SIM卡卡号ICCID号的含义ICCID:Integrate circuit card identity集成电路卡识别码(固化在手机SIM卡中)ICCID为IC卡的唯一识别号码,共有20位数字组成.前面6位为网络代号:898600是中国移动的代号;898601是中国联通的代号;898603是中国电信的代号;第7位是业务接入号:在133,135,136,137,138,139中分别为1,5,6,7,

ce123的技术博客 4万+
上一篇: LDD之input子系统--代码分析
下一篇: 嵌入式系统Linux内核开发工程师必须掌握的三十道题
huber
博客等级 码龄15年 79粉丝 24原创
评论 13
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值