Linux2.6.29设备模型分析-概述
1 设备模型概述
目的
II 设备模型用类的思想将具有相似功能的设备放到一起管理,并将相似部分萃取出来,使用一份代码实现。从而使结构更加清晰,简洁。
III 动态分配主从设备号,有效解决设备号的不足。设备模型实现了只有设备在位时才为其分配主从设备号,这与之前版本为每个设备分配一个主从设备号不同,使得有限的资源得到合理利用。
IV 设备模型提供sysfs文件系统,以文件的方式让本是抽象复杂而又无法捉摸的结构清晰可视起来。同时也给用户空间程序配置处于内核空间的设备驱动提供了一个友善的通道。
任务
sysfs的实现与设备模型密切相关,并且向外界展示了它所表述的结构。向用户空间所提供的系统信息,以及改变操作参数的接口,将越来越多地通过sysfs实现,也就是说,通过设备模型实现。
系统中的许多部分对设备如何连接的信息并不感兴趣,但是它们需要知道哪些类型的设备是可以使用的。设备模型包括了将设备分类的机制,它会在更高的功能层上描述这些设备,并使得这些设备对用户空间可见。
上述许多功能,包括热插拔支持和sysfs,使得内核中创建和管理对象的工作更为复杂。设备模型的实现需要创建一系列机制以处理对象的生命周期、对象之间的关系,以及这些对象在用户空间中的表示。
完成这些工作需要一些 对系统结构的理解。比如一个USB宿主适配器,在处理完所有与其连接的设备前是不能被关闭的。设备模型使得操作系统能够以正确的顺序遍历系统硬件。
图例
Linux2.6.29设备模型分析-概述相关推荐
- Linux设备模型分析之kobject(基于3.10.1内核)
一.kobject结构定义 kobject是Linux设备模型的最底层数据结构,它代表一个内核对象. kobject结构体定义在include/linux/kobject.h文件中: [cpp] vi ...
- Linux设备模型分析之kobject
一.kobject应用举例 Linux设备模型最基本的组成元素是kobject,我们先来看一个kobject的应用例子,该程序在Ubuntu 10.10, 2.6.32-38-generic-pae内 ...
- Linux设备模型分析之kset
上一篇博客我们分析了Linux设备模型中kobject的注册和使用,在这一篇文章中,我们来看一下kset的用法. 首先我们看一个使用kset的例子,代码如下: [cpp] view plaincopy ...
- linux kset subsystem 3.10内核,Linux设备模型分析之kset(基于3.10.1内核)
作者:刘昊昱 内核版本:3.10.1 一.kset结构定义 kset结构体定义在include/linux/kobject.h文件中,其内容如下: 142/** 143 * struct kset - ...
- Linux设备模型分析之kset(基于3.10.1内核)
一.kset结构定义 kset结构体定义在include/linux/kobject.h文件中,其内容如下: [cpp] view plaincopy 142/** 143 * struct kset ...
- linux设备模型之kset/kobj/ktype分析
1. 概述 今天来聊一下Linux设备模型的基石:kset/kobject/ktype. sysfs文件系统提供了一种用户与内核数据结构进行交互的方式,可以通过mount -t sysfs sysfs ...
- linux i2c adapter 增加设备_LINUX设备驱动模型分析之四 设备模块相关(DEVICE)接口分析...
本系列前几篇文章链接如下: <LINUX设备驱动模型分析之一 总体概念说明> <LINUX设备驱动模型分析之二 总线(BUS)接口分析> <LINUX设备驱动模型分析之三 ...
- clip许可证设备id与绑定设备不匹配_LINUX SPI通用字符设备模型介绍(SPI模块分析结束篇)...
在前面几篇文章我们分析了SPI驱动框架模型.SPI总线.SPI MASTER.SPI DEVICE.SPI通信接口等内容,本篇是SPI总线的最后一篇,主要介绍SPI通用字符设备. spi通用字符设备说 ...
- linux 内核模型,The Linux Kernel Device Model - Overview -- Linux 内核设备模型概述
--------------------------------------------------------------------------------------------------- ...
最新文章
- 【2020】清华大学《高级机器学习》课件和专家特邀报告(附pdf下载)
- 创建并运行HelloWorld Java项目和类
- java诡异的String.split()方法
- GDB调试——常用命令
- 挖矿病毒解决实例(隐藏进程,文章较好)(入侵)
- 支付宝也跟上了!免费办理ETC 还提供设备包邮服务
- VC++使用ADO开发ACCESS数据库
- eclipse svn 忽略 target/.project /.classpath /.settings等 目录
- 我的MYSQL学习心得(九) 索引
- 绘制grib2格式大气数据(windows下 GrADS wgrib2 g2ctl perl)
- 官网下载storage manager方法
- docker搭建linux集群,搭建mpi环境,并使用MTT benchmark测试集群性能
- u盘数据丢失了怎么恢复?u盘数据恢复,2个方案完成
- 一个 将一个无效参数传递给了将无效参数视为严重错误的函数 及写入位置时发生访问冲突的问题的解决
- Android系统的VTS测试套件介绍
- Mask RCNN -- Mask Scoring R-CNN
- 独上高楼望尽天涯路——以博客记录分享学习成长
- 微信小程序未读消息右上角红点数字显示
- 伊能静晒姐姐旧照 五官精致获赞基因好(图)
- Mac分屏小技巧让你使用更加便捷