内核sys文件系统学习

学习Linux那些事儿之我是Sysfs笔记


sys文件系统的作用:用于将系统中的设备组织成层次结构,并向用户模式程序提供详细的内核数据结构信息。


sysfs的挂载过程:mount -t sysfs sysfs /sys,sysfs是个特殊文件系统,它没有实际存放文件的介质,断电就没有了。sysfs信息来源是
kobject层次结构,读一个sysfs文件,就是动态从kobject结构提取信息,生成文件。


Kobject:
(1)内核中用struct kobject表示,该结构体使设备在底层都具有统一的接口,kobject提供基本对象的管理。
(2)每个在内核中注册的kobject对象都对应于sysfs文件系统的一个目录。
(3)kobject是组成设备模型的基本结构,通过kobject将所有设备连接起来,形成一个树状结构,该结构就与/sys/对应。

kobject为一些大的数据结构和子系统提供基本的对象管理:
(1)对象引用计数
(2)维护对象链表(集合)
(3)对象上锁
(4)在用户空间表示

kobject的结构表示:


操作该结构体的接口:
(1)增减对象引用计数的,kobject_get()、kobject_put()。
(2)对kobject初始化,kobject_init()。
(3)设置kobject的名称,kobject_set_name()。
(4)释放kobject对象,kobject_release()。
(5)将kobject添加到linux设备层次,kobject_add()。
(6)kobject注册函数,kobject_register,先调用kobject_init(),在调用kobject_add。


成员kobj_type

(1)release方法用于释放kobject占用的资源。
(2)sysfs_ops指向sysfs操作表和一个sysfs文件系统默认属性列表。操作表包括的函数store()和show(),
当用户读取属性时,show被调用,该函数将属性值存入buffer返回给用户态。store用于存储用户态传入的属性值。

成员attribute

它以文件的形式输出到sysfs的目录中,kobject对应的目录下面,文件名就是name。


kset的作用:建立上层(sub_system)和下层(kobject)的关联性,kobject利用它分别自己属于哪个类型,然后在/sys/下建立正确的目录位置。



(1)包含在kset中的所有kobject被组织成一个双向循环链表,list域正式改链表的头。
(2)ktype 指向一个kobj type结构,被该kset中的所有kobject共享,表示这些对象的类型。
(3)kobject,所有属于该kset的kobject对象的parent域都指向这个内嵌的对象。
(4)kset还依赖kobj维护的引用计数。该实际计数就是内嵌kobject对象的引用计数。



kset操作的相关函数:
(1)kset_init(),完成指定kset的初始化。
(2)kset_get和kset_put分别是增加和减少kset对象的引用计数。
(3)kset_add和kset_del分别实现指定kset对象加入设备层次和从其中删除。
(4)kset_register和kset_unregister分别完成kset的注册和注销。


subsystem
kset是管理kobject的集合,subsystem是管理kset的集合,它描述系统中某一类设备子系统,若block subsys表示所有的块设备
,对应于sysfs文件系统的block目录。



该结构体的描述
(1)subsystem与kset的区别是多了一个信号量,每个kset属于某个subsystem。
(2)通过设置kset结构的subsys域指向指定的subsystem,可以将一个kset加入该subsystem。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值