为啥Linux内核对驱动调用要绕这么多弯?

news2024/11/22 21:01:48

为啥Linux内核对驱动调用要绕这么多弯?


需要去写驱动的,基本是芯片原厂的人。其他的linux驱动从业者,只是调试、改设备树、封装库差不多了。需要“不满足照搬框架去写驱动”的人,应该都是通过芯片原厂面试的人,不会来问这问题。当然要搞清里面的流程还是很有必要的,不能只做api boy,这是值得赞扬和学习的。

简单说说我自己粗浅的理解,就是关于造成现在你看到的认为的绕那么多弯的,我理解原因主要因为四点:最近很多小伙伴找我,说想要一些Linux内核学习资料,然后我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「Linux内核入门到高级教程+工具包」,点个关注,全部无偿共享给大家!!!

评论区回复“888”,关注我之后私信回复“666”,即可拿走。

1.需要面向对象;

2.需要分层管理

3.需要安全;

4.需要考虑现实中可能会出现的各种“如果”。

面向对象:就是把实体、虚体都抽象出一个归类,求同存异。设备有字符设备块设备网络设备,就字符设备都有各种不同的成千上万种实体设备,每个字符设备有除了有字符设备的共性,还有自己的特性,特性包括传输时序、工作方式等等,这些又决定你采用的总线(IIC?UART?CAN?)是不同的。这些就造就了需要不同的驱动去配合,而匹配的方式也各有不同,设备、驱动、总线、数据、内存等等都需要采用面向对象以好去管理,而每个对象,都有不同各自的需要定义和操作方式,这管理起来会很乱,就需要分层管理;

分层管理:分层管理其实说白了就是把做一件事情涉及到的所有对象按照功能、目的去划分步骤,这样管理起来就不会乱,思路会更清晰。例如一个“设备来了,你要去接应它”,看似简单的一句话,可是作为一个好的操作系统内核,你要考虑的是:它是什么设备、从哪里来的、怎么来的、为什么要来、允不允许来、来了要怎么做、它来找谁、它有找那个谁的权限吗、那个谁有空吗、它要来多久、它还带来了什么、它会留下什么、它会改变什么、它可以离开吗、它要怎么离开、它离开了我还要干什么。以上这么多事情,怎么安排内核或者CPU做呢?

710207d5face14865a44f44b0d3cd0d3.jpeg

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

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

相关文章

Harmony跨进程通信—IPC与RPC通信开发指导

一、IPC与RPC通信概述 基本概念 IPC(Inter-Process Communication)与RPC(Remote Procedure Call)用于实现跨进程通信,不同的是前者使用Binder驱动,用于设备内的跨进程通信,后者使用软总线驱动&a…

【大虾送书第十二期】MLOps快速成为机器学习生产落地中不可或缺的关键能力

目录 🌟写在前面 🌟内容简介 🌟读者对象 🌟专家推荐 🌟图书目录 🌟直播预告 🌟文末福利 🦐博客主页:大虾好吃吗的博客 🦐专栏地址:免费送书活动专…

【排序算法】冒泡排序

文章目录 一:排序算法1.1 介绍1.2 分类 二:冒泡排序2.1 基本介绍2.2 图解冒泡排序算法2.3 代码实现 三:算法性能分析3.1 时间复杂度3.2 空间复杂度 一:排序算法 1.1 介绍 排序也称排序算法(Sort Algorithm),排序是将…

Spring源码分析(五) 事务全流程分析

Spring事务的基础知识 1、注解相关属性 Transactional 注解的属性信息 name 当在配置文件中有多个 TransactionManager , 可以用该属性指定选择哪个事务管理器 propagation 事务的传播行为,默认值为 REQUIRED。 isolation 事务的隔离度,默认值采用 DEF…

AI:11-基于深度学习的鱼类识别

当今,人工智能和深度学习已经成为许多领域的关键技术。在生态学和环境保护领域,鱼类识别是一项重要的任务,因为准确识别和监测鱼类种群对于保护水生生物多样性和可持续渔业管理至关重要。基于深度学习的鱼类识别系统能够自动识别和分类不同种类的鱼类,为生态学研究和渔业管…

ChatGPT Vision初体验

本周,OpenAI为其广受欢迎的 ChatGPT 平台发布了一项突破性的补充。除了处理文本之外,ChatGPT 现在还可以处理图像并聊天。 很难夸大这件事的重要性。目前多达70% 的内容是视觉内容而不是书面内容。人们每年会生成数千张照片,而当今许多最大的…

设计模式 - 结构型模式考点篇:代理模式(静态代理、JDK 动态代理、CGLIB 动态代理)

目录 一、代理模式 一句话概括 1.1、代理模式概述 1.2、静态代理 1.3、JDK 动态代理 1.4、CGLIB 动态代理 1.5、对比三种代理 1.5.1、jdk 代理 VS CGLIB 代理 1.5.2、动态代理 VS 静态代理 1.6、优缺点 1.7、使用场景 一、代理模式 一句话概括 教你将类和对象结合再…

Mac mov转mp4,详细转换步骤

Mac mov转mp4怎么转?视频文件格式为.mov是由Apple公司所开发的特殊格式。因其只能在苹果设备上播放,与他人分享时就会变得困难。为此,我们通常会选择使用MP4这种最受欢迎的视频格式。在日常使用中,MP4成为了大家首选的视频格式。而…

【Docker】 docker中apt-get update过慢,这样配置瞬间提速!

docker中apt-get update过慢,这样配置瞬间提速! 源官网全球镜像站 源 今天办公地点的网络出奇的差,看电影看小说打游戏完全没影响,只要更新就蜗速前进,只能从网上翻下,看看有没有网速快的下载源。 碰巧看到…

模范思路,单基因泛癌+实验轻松拿捏sci8+。

今天给同学们分享一篇单基因泛癌单细胞实验的生信文章“Pan-cancer analysis of Krppel-like factor 3 and its carcinogenesis in pancreatic cancer”,这篇文章于2023年8月3日发表在Front Immunol期刊上,影响因子为8.786。 Krppel-like factor 3&#…

vue.js处理数组对象中某个字段是否变为两个字段

一、场景: 产品要求做一个时间步骤条,使用目前后端已返回的数据进行操作实现。时间步骤条要求日期和时间分开显示且相同日期只显示第一个日期。 图左边为实现效果,右边为后台返回的接口。接口中current字段表示当前到达第几步,从…

2023年软件测试工具总结 —— 接口测试工具

接口测试的全称是应用程序编程接口(API)测试,从原理上来说,接口测试是模拟客户端向服务器端发送请求,然后检查能否获得正确的返回信息。接口测试用于测试RESTful API、SOAP Web服务,这些服务可以通过HTTP、…

Java基础知识总结(2023版)

目录 一、Java基础1、Java 基础2、Java 进阶3、Java8新特性4、Java集合5、Java高并发6、Java代码实例 二、MySQL数据库三、Spring Boot框架(35天)四、Redis中间件五、MongoDB数据库六、Netty网络编程七、23种设计模式八、微服务九、JavaScript零基础入门…

Aurora中的策略模式和模板模式

Aurora中的策略模式和模板模式 在aurora中为了方便以后的扩展使用了策略模式和模板模式实现图片上传和搜索功能,能够在配置类中设置使用Oss或者minio上传图片,es或者mysql文章搜索。后续有新的上传方式或者搜索方式只需要编写对应的实现类即可&#xff…

批量对比文件夹下文件

软件 产品 | Beyond Compare 中文官方网站 软解破解 Beyond Compare 4密钥过期,解决办法,超实用 批量文件对比 最后显示红色的文件,即为文件两者内容不同的

面了10家却收不到1个offer,自我介绍你踩雷了吗?

每一次离职,都是为了重新开始;每一次寻找新的工作,都面临着巨大的竞争。找工作就像找对象,除了需要一定的缘分外,也需要掌握一定的技巧。 有的人爱恋TA的人排到长城,有的人却一直母胎单身;有的人…

Spring源码解析(十一):spring事务配置类源码

Spring源码系列文章 Spring源码解析(一):环境搭建 Spring源码解析(二):bean容器的创建、默认后置处理器、扫描包路径bean Spring源码解析(三):bean容器的刷新 Spring源码解析(四):单例bean的创建流程 Spring源码解析(五)&…

vue3使用echarts实现地图撒点、飞线等功能

echarts地图配置参考链接 链接2 vue3使用echarts map.vue <template><div class"echart-demo" id"demo"></div> </template><script setup lang"ts"> //引入echart和json数据 import * as echarts from echarts…

ffmpeg ts 关于av_seek_frame

1 ffmpeg命令行 一般对视频文件的裁剪 我们通过一行 ffmpeg命令行即可实现&#xff0c;比如 ffmpeg -ss 0.5 - t 3 - i a.mp4 vcodec copy b.mp4 其中 -ss 放置较前 开启精准seek定位 对于mp4而言 seek将从moov中相关索引表查找 0.5s时刻附近最近的关键帧 &#xff08;此描述…

systemd服务日志重定向到文件

方式一&#xff08;centos7&#xff09; [Service] ExecStart"/usr/bin/sh test.sh >> info.log 2>&1"方式二&#xff08;centos8&#xff09; StandardOutput 和 StandardError&#xff0c;用于重定向标准输出和标准错误输出 [Service] StandardOut…