Linux设备模型学习笔记——结构体描述
来源:互联网 发布:php 图片上传 编辑:程序博客网 时间:2024/05/18 11:00
l kobject是用来管理设备的。包括设备组成的层次结构,引用计数,属性管理。作为一个底层设备模型数据结构,它有自己的操作函数。比如初始化,引用计数,删除,注册等。不光是kobject,它的上层结构,kset,subsystem,bus_type,device,device_driver,class,class_driver,class_interface都有类似的操作函数。当然了,如果你不是特意想知道它们是怎么一回事,不需要去刻意研究的。每个在内核中注册的kobject,在sysfs中呈现的是一个目录,它的属性则呈现为一个文件。
l kset,它是具有相同类型kobject的集合。kset数据结构中内嵌入了一个kobject,所有属于这个kset的kobject对象的parent均指向这个内嵌的对象。这是一个层次管理的概念。相当于把树叶(kobject)长在树枝(kset)上。kobject能报告自己的状态:增加,删除。kset有一个成员,kset_uevent_ops事件操作集指针,可以过滤事件,或给用户空间设置一些事件变量。用户空间程序据此产生相应的响应。这些应该udev密切相关。
l subsystem是一系列kset的集合,它描述系统中某一类设备子系统。还是一个层次管理的概念。koject是通过指定父对象来找到自己所属的树支(kset),kset就是通过指定自己的subsys域找到自己的上一级树支(subsystem)。
l linux设备模型的组件:包括 device,device_driver,bus_type,class,calss_device,class_interface
n device,系统中的任一设备在设备模型中都有一个device对象描述,它关联的是一个物理设备。想要描述清楚一个device结构,要指明这位的家庭环境(兄弟姐妹,孩子,父母啊),总线,使用的驱动等。它也内嵌入了一个kobject,试想,如果你要删除一个设备,那么其内嵌的kobject就会报告uevent事件,其所属的kset就会设置相应的事件变量,此时用户空间程序就可以做相应的处理。
n device_driver,系统中每一个驱动程序都有一个devive_driver对象描述。它的结构体描述中,指明了要挂载的总线,以及用于处理设备探测,移除和电源管理的函数。这些函数在bus_type中也有描述,但内核会优先调用bus_type中的方法。需要指出的是device_driver内嵌有kobject以实现自己的计算和层次管理。
n bus_type,系统总线由struct bus_type描述。每个bus_type都内嵌一个subsystem对象。它用来管理所有总线类型的subsystem对象。因为bus_type的每个对象对应/sys/bus内的一个子目录,子目录中又有devices和drivers目录,它们对应于bus_type的drivers和devices域,所以最终,前面所说的每个实际的device和device_driver在/sys目录下,仅仅体现为它们内嵌的kobject所创建的一个目录和目录内相应的属性与其它文件。
n class,系统中的设备类用struct class描述,表示某一类设备。它也有一个subsystem对象,所有的class对象都属于class_subsys子系统,依次推理,bus_type中的对象应都属于bus_subsys子系统。class与class_device,class_interface的关系类似于bus_type与device,device_driver的关系。因为在class对象中要指明它的class_device和class_interface。class_device表示一个逻辑设备,并通过struct class_device的dev成员关联一个物理设备。这样,一个逻辑设备总是对应于一个物理设备,但是一个物理设备可能对应多个逻辑设备。当设备加入或离开类时,class_interface中的成员函数被调用。
- Linux设备模型学习笔记——结构体描述
- linux设备模型学习笔记——理论篇
- 学习笔记——《LINUX设备驱动程序(第三版)》Linux设备模型:内核添加、删除设备
- LINUX学习笔记(设备模型)
- 学习《Linux设备模型浅析之设备篇》笔记(一)
- 学习《Linux设备模型浅析之设备篇》笔记(二)
- 学习《Linux设备模型浅析之设备篇》笔记(三)
- linux驱动模型学笔记——字符设备号
- Linux设备驱动模型——设备
- 驱动学习回顾——Linux下bus设备模型
- linux设备驱动程序学习笔记——主次设备号
- LDD3学习笔记Linux设备模型之由来
- LDD3学习笔记(17):linux设备模型
- linux学习笔记2--diver初始化及设备模型
- 学习《Linux设备模型浅析之驱动篇》笔记(一)
- 《深入理解linux内核》学习笔记4 --- 设备驱动程序模型
- Linux Kernel 学习笔记13:混杂设备模型
- Linux Kernel 学习笔记16:总线设备驱动模型
- SQL Server 2005 Analysis Services性能指南 Part 4 - 使用分区提升查询性
- linux 打包zip
- static和const的比较和解释
- Updating the UI from a Timer
- android Home键 屏蔽,捕获,修改
- Linux设备模型学习笔记——结构体描述
- 经典makefile例子
- JavaScript的document
- 识别中英文
- 使用extJs时能常用的正则表达式
- Sizeof 与 Strlen 的区别
- 献给在大学里面想做点东西的信息人
- 利用link标签rel="alternate stylesheet"属性实现界面动态换肤
- WebService大讲堂之Axis2(2):复合类型数据的传递 (转载)