设备模型2

本文详细介绍了Linux设备模型中的kobject和kset的概念及其作用。kobject作为设备模型的基础,用于对象的引用计数、系统表示、数据结构关联和热插拔处理。kset则是一个相同类型kobject的集合,用于组织对象的层次结构。内容涵盖了kobject的初始化、引用计数管理和sysfs文件系统的交互等核心要点。
摘要由CSDN通过智能技术生成

前言

在上一篇中,我们大致描述了LINUX设备模型,我们先来总结一下三要素的关系。

 

Linux设备模型 - 哥哥 - 哥哥

 

从图中可以看出,Linux设备模型就是"总线、设备、驱动、类"这四个概念之前的相互关系;这也是Linux2.6内核抽象出来的用于管理系统中所有设备的模型图;
简单地描述设备模型的层次关系如下:
1、驱动核心中可以注册多种类型的总线(bus_type);
2、每一种类型的总线下面可以挂载许多设备(device);
3、每一种类型的总线可以使用很多设备驱动(device_driver);
4、每一个驱动程序可以管理一组设备;
这种基本关系的建立源于实际系统中各种总线、设备、驱动、类结构的抽象;

 

设备模型之kobject、kset

 

kobject是设备模型中一个很基本的概念,最初支持为了支持引用计数,但是随着时间的转移,它承担了越来越多的任务:

1)对象的引用计数

2)SYS表述

3)数据结构关联

4)热插拔处理

 

 

它的定义如下:

struct kobject {

//名称
 constchar  *name;


 struct list_head entry;

//指向kobject的父对象,以此来在内核中构造一个对象层次结构,并且可以将多个对象之间的关系表现初来,这就是sysfs的真相:一个用户空间的文件系统,用来表示内核中kobject对象的层次结构。
 structkobject  *parent;


 structkset  *kset;
 struct kobj_type *ktype;
 struct sysfs_dirent *sd;


 structkref  kref;
 unsigned int state_initialized:1;
 unsigned int state_in_sysfs:1;
 unsigned int state_add_uevent_sent:1;
 unsigned int state_remove_uevent_sent:1;
 unsigned int uevent_suppress:1;
};

一个kobject存在的意义在于把高级对象连接到设备模型上。kobject正如最顶层的基类,而其他类则是派生物,它实现了一系列方法,对自

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值