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

Linux设备驱动模型(一)

一、sysfs文件系统

sysfs是一个虚拟文件系统,将内核总的设备对象的链接关系,以文件目录的方式表示出来,并提对设备提供读写接口。

二、kobject

kobject是内核中对象表示的基类,可以认为所有的内核对象都是一个kobject
kobject单独存在的意义不大,通常是更高级的对象通过kobject加入到设备模型中
sysfs中的一个目录或文件,都对应于一个kobject,名字就是name字段

2个元素构成kobject在内核的层次结构,parent和kset
parent指向父对象(父节点)
一个kset是嵌入相同类型结构的kobject的集合(ldd3)
在这里插入图片描述
1、创建kobject
在这里插入图片描述
2、清零,memset
3、初始化
在这里插入图片描述
在这里插入图片描述

4、设置名字
在这里插入图片描述
5、引用计数操作
在这里插入图片描述

三、kset

kset是kobject的一个子类
kset是一类kobject的容器,
单独的kobject不一定在sysfs中显示,但是一个kset必然在sysfs中显示

在这里插入图片描述
1、kset API
在这里插入图片描述
引用计数操作
在这里插入图片描述
在这里插入图片描述

四、kset和kobject的关系

2个元素构成kobject在内核的层次结构,parent和kset
个人理解:
kobject是内核对象的基本单位,parent可以表示父对象的关系,子对象可以找到父对象,而父对象找不到子对象;
kset的引入解决了这个 问题,kset首先是一个kobject,list字段是一个双向循环链表,下面串了n个属于他的子类对象(kobject);
子对象的parent和kset分别指向父对象的kobject和kset

下图是一个最简单的kset和kobject的关系(来自ldd3)
在这里插入图片描述

五、ktype

release,和内核对象的销毁有关,
对象应用计数为0后会调用这个函数,但具体的release应该是与具体的子类对象有关(kobject的扩展类型,比如字符设备结构体,,自己猜测,先这么理解吧)
sys_ops,sysfs的操作函数集
default_attrs,kobject下面包含的文件属性集,这是一个二级指针,指向的是一个指针数组。
在这里插入图片描述

1、怎么添加的属性文件,以及读写操作
创建attribute数组,数组个数代表文件个数
实现sysfs_ops的show(读取)和store(写)回调函数实现读写操作
如果每个attribute读写有差别,可以根据第二个参数区分分别操作

在这里插入图片描述
在这里插入图片描述
2、调用接口,添加文件属性
??不知道会不会把默认的属性覆盖
在这里插入图片描述

在这里插入图片描述

其他sysfs的接口去linux/sysfs.h查询使用
二进制属性
符号链接
等等…

六、热插拔

当驱动程序将kobject注册到设备驱动模型时, 会产生这些事件。也就是当内核调用kobject_add()和kobject_del()丽数时,会产生热插拔事件。
产生热插拔事件后,内核会找到该kobject的kset(父对象的kset实例,如果父对象没有kset,那么会一直网上找,知道找到),执行其kset_uevent_ops

filter回调,过滤热插拔事件,实现回调如果返回0,则不产生热插拔事件

在这里插入图片描述


转载:Linux设备驱动之Kobject、Kset
添加链接描述

相关文章:

Linux设备驱动模型(一)

一、sysfs文件系统 sysfs是一个虚拟文件系统,将内核总的设备对象的链接关系,以文件目录的方式表示出来,并提对设备提供读写接口。 二、kobject kobject是内核中对象表示的基类,可以认为所有的内核对象都是一个kobject kobject单…...

【Python入门篇】——Python基础语法(标识符与运算符)

作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: Python入门,本专栏主要内容为Python的基础语法,Python中的选择循环语句…...

扩展 VirtualBox 已分配磁盘的方法

扩展 VirtualBox 已分配磁盘的方法 第一步:用VirtualBox命令行调整已分配磁盘的大小第二步:用windows磁盘管理工具扩展磁盘空间其他无关配置如何选择虚拟机的芯片组 注意:扩展操作只支持 vdi 格式的磁盘,就是VirtualBox自己的磁盘…...

【LeetCode】646. 最长数对链

646. 最长数对链(中等) 思路 这道题和 300. 最长递增子序列 类似,我们可以定义 dp 数组,其中 dp[i] 表示以 i 结尾的子序列的性质。在处理好每个位置后,统计一遍各个位置的结果即可得到题目要求的结果。 但是题目中强…...

Makefile教程(Makefile的结构)

文章目录 前言一、Makefile的结构二、深入案例三、Makefile中的一些技巧总结 前言 一、Makefile的结构 Makefile 通常由一系列规则组成,每条规则定义了如何从源文件生成目标文件。每个规则又由目标、依赖和命令三部分组成。 下面是 Makefile 规则的基本结构&…...

SpringMVC(后)SSM整合

10、文件上传和下载 10.1、文件下载 ResponseEntity用于控制器方法的返回值类型&#xff0c;该控制器方法的返回值就是响应到浏览器的响应报文 使用ResponseEntity实现下载文件的功能 RequestMapping("/testDown") public ResponseEntity<byte[]> testResp…...

【博弈论】【第一章】博弈论导论

博弈论导论 【例题】选择数字【例题】巴什博弈【例题】射手博弈博弈论的基本概念&#xff1a;参与人战略行动信息支付函数【例题】分100元 课程概述&#xff1a; 【例题】选择数字 两个参与人A和B&#xff0c;轮流选择[3,4,5,6,7,8,9]中的一个整数&#xff08;可重复)。当累计…...

keil移植linux(makefile)

文章目录 运行环境&#xff1a;1.1 freeRTOS_LED工程移植1)修改cubeMX配置2)setting设置3)launch设置4)修改makefile5)修改代码6)实验效果 运行环境&#xff1a; ubuntu18.04.melodic 宏基暗影骑士笔记本 stm32f427IIH6 stlink 9-24v可调电源 robomaster A 板 1.1 freeRTOS_L…...

C++——类和对象(3)

作者&#xff1a;几冬雪来 时间&#xff1a;2023年5月6日 内容&#xff1a;C类和对象内容讲解 目录 前言&#xff1a; 1.运算符重载&#xff08;续&#xff09;&#xff1a; 2.赋值重载&#xff1a; 结尾&#xff1a; 前言&#xff1a; 在上一篇博客中我们再一次讲解了…...

itop-3568开发板驱动学习笔记(24)设备树(三)时钟实例分析

《【北京迅为】itop-3568开发板驱动开发指南.pdf》 学习笔记 文章目录 生产者属性#clock-cells 属性clock-output-namesclock-frequencyassigned-clockclock-indicesassigned-clock-parents 消费者属性 设备树中的时钟信息以时钟树形式体现&#xff0c;时钟树包括时钟的属性和结…...

linux中使用docker部署微服务

目录 一、制作jar包&#xff08;如果看一眼很简单&#xff0c;可以直接使用结尾的jar&#xff09; 1.首先创建一个微服务 demo2 2.启动微服务&#xff08;在DemoApplication上右键执行启动就行&#xff09; 注意&#xff1a;其他操作导致的 可能遇到的报错 3.修改端口 4.新…...

操作系统考试复习—第三章 优先级倒置 死锁问题

当前OS广泛采用优先级调度算法和抢占方式&#xff0c;然而在系统中存在着影响进程运行的资源从而可能产生"优先级倒置"现象 具体解释为&#xff1a;在原本的调度算法设计中&#xff0c;高优先级进程可以抢占低优先级的CPU资源&#xff0c;先执行高优先级任务。但是存…...

OpenHarmony送显流程分析

OpenHarmony送显流程分析 引言 本文档主要记录OpenHarmony在渲染完成之后如何进行合成和送显流程的。这个过程牵涉的代码很多&#xff0c;而且流程也是比较繁琐的。所以我一定要坚持下来。千万不能半途而废&#xff0c;也不要想着一口气吃出一个胖子&#xff0c;路漫漫其修远兮…...

Java面试题字节流字符流

String 编码UTF-8 和GBK的区别 GBK编码&#xff1a;是指中国的中文字符&#xff0c;其实它包含了简体中文与繁体中文字符&#xff0c;另外还有一种字符 “gb2312”&#xff0c;这种字符仅能存储简体中文字符。 UTF-8编码&#xff1a;它是一种全国家通过的一种编码&#x…...

Self-Attention结构细节及计算过程

一、结构 上面那个图其实不是那么重要&#xff0c;只要知道将输入的x矩阵转换成三个矩阵进行计算即可。自注意力结构的输入为 输入矩阵的三个变形 Q&#xff08;query矩阵&#xff09;、K&#xff08;key矩阵&#xff09;、V&#xff08;value矩阵&#xff09;构成&#xff0c;…...

在Ubuntu18.04中安装uWebSockets库

目录 1.下载uWebSockets库2.下载uSockets3.安装openssl开发包4.编译首先说明这里使用的Ubuntu版本为18.04。 1.下载uWebSockets库 下载uWebSockets库有两种方式,一是终端,从Github中克隆uWebSockets库到Ubuntu本地文件夹,二是打开uWebSockets库下载链接自己下载到Windows,然…...

【Fluent】接着上一次计算的结果继续计算,利用计算过程中得到的物理场(温度、速度、压力等)插值Interpolate文件初始化模型的方法

一、问题背景 因为fluent中支持的初始化无非三种类型。 1、Standard initialization 标准初始化 2、Hybridinitialization 混合初始化 3、FMG initialization FMG初始化 另外&#xff0c;还可以用UDF通过坐标判断的方式予以初始化。 但是这些初始化方法都没办法利用以前计算过…...

第二十九章 使用消息订阅发布实现组件通信

PubSubJS库介绍 如果你想在React中使用第三方库来实现Pub/Sub机制&#xff0c;PubSubJS是一个不错的选择。它是一个轻量级的库&#xff0c;可以在浏览器和Node.js环境中使用。 PubSubJS提供了一个简单的API&#xff0c;可以让你在应用程序中订阅和发布消息。你可以使用npm来安…...

Transformer的位置编码

1. 什么是位置编码&#xff0c;为什么要使用位置编码 简单来说位置编码就是给一个句子中的每个token一个位置信息&#xff0c;通过位置编码可以明确token的前后顺序关系。 对任何语言来说&#xff0c;句子中词汇的顺序和位置都是非常重要的。它们定义了语法&#xff0c;从而定…...

Python学习简记

做题时遇到的不知道的知识点会更新在此&#xff1a; python中的int()函数可以用于进制转换 该函数最为常见的使用是用于强制类型转换&#xff0c;实际上&#xff0c;它可以有两个参数 值得强调的是当传入两个参数时第一个参数一定要是字符串类型 字符串方法&#xff1a; lower(…...

能耗效率比拼:百川2-13B量化版在OpenClaw长时间任务中的表现

能耗效率比拼&#xff1a;百川2-13B量化版在OpenClaw长时间任务中的表现 1. 测试背景与目标 最近在探索如何用OpenClaw实现个人工作流的自动化时&#xff0c;遇到一个现实问题&#xff1a;当需要长时间运行自动化任务时&#xff0c;本地设备的能耗和稳定性会成为瓶颈。我决定…...

告别DDA!用Python手撸Bresenham画线算法,从原理到实现(附完整源码)

告别DDA&#xff01;用Python手撸Bresenham画线算法&#xff0c;从原理到实现&#xff08;附完整源码&#xff09; 在计算机图形学领域&#xff0c;直线绘制是最基础却至关重要的操作。当你需要开发一个2D图形引擎、像素画工具或是任何需要精确控制像素显示的应用程序时&#x…...

ViGEmBus虚拟手柄驱动:如何让任何设备变身Xbox 360或PS4控制器

ViGEmBus虚拟手柄驱动&#xff1a;如何让任何设备变身Xbox 360或PS4控制器 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 在Windows游戏生态中&#xff0c;…...

SEO_2024年最新SEO趋势分析与实战策略解读

<h1 id"2024seo">2024年最新SEO趋势分析与实战策略解读</h1> <p>在数字营销的快速发展中&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;作为提升网站流量的重要手段&#xff0c;一直备受关注。2024年&#xff0c;SEO领域再度发生了一些重要…...

2026-3-26、可变字符串类型StringBuilder

*为什么使用StringBuiler&#xff1a; string是不可变字符串类型&#xff0c;意味着一旦修改就无法修改&#xff1a; string s "Hello"; s s " World"; // 看起来是修改&#xff0c;实际上是创建了新对象// 原来的"Hello"对象还在内存中stri…...

百川2-13B量化模型+OpenClaw:3种低成本个人AI助手应用方案

百川2-13B量化模型OpenClaw&#xff1a;3种低成本个人AI助手应用方案 1. 为什么选择量化模型OpenClaw组合 去年冬天&#xff0c;当我第一次尝试在本地部署大模型时&#xff0c;被显存不足的报错狠狠教育了一顿——我的RTX 3060显卡根本无法承载常规13B参数的模型。直到发现百…...

Ostrakon-VL-8B模型剪枝与量化入门:降低部署资源消耗

Ostrakon-VL-8B模型剪枝与量化入门&#xff1a;降低部署资源消耗 想让大模型在普通电脑上跑起来&#xff1f;这听起来像是个遥不可及的梦想&#xff0c;尤其是对于Ostrakon-VL-8B这种参数规模不小的视觉语言模型。它功能强大&#xff0c;但随之而来的就是对GPU显存和算力的高要…...

第4章 编码规范-4.2 注释规范

注释规范包括文件注释、文档注释、代码注释和TODO注释。这里需要强调一点&#xff0c;即在程序代码中&#xff0c;对容易引起误解的代码进行注释是必要的&#xff0c;但应避免对已经清晰表达信息的代码进行再次注释&#xff0c;因为频繁的注释有时恰恰反映了代码的低质量&#…...

SWF逆向工程工作流优化:JPEXS Free Flash Decompiler效率提升技巧

SWF逆向工程工作流优化&#xff1a;JPEXS Free Flash Decompiler效率提升技巧 【免费下载链接】jpexs-decompiler JPEXS Free Flash Decompiler 项目地址: https://gitcode.com/gh_mirrors/jp/jpexs-decompiler JPEXS Free Flash Decompiler&#xff08;简称FFDec&#…...

Wan2.1-umt5能力展示:模拟计算机组成原理教学问答

Wan2.1-umt5能力展示&#xff1a;模拟计算机组成原理教学问答 最近在尝试用大模型辅助教学&#xff0c;发现了一个挺有意思的镜像——Wan2.1-umt5。它不像常见的聊天模型&#xff0c;更像是一个专门为理解和生成专业内容设计的“专家”。我突发奇想&#xff0c;让它扮演了一回…...