Linux设备驱动模型一 sysfs

Linux设备模型


Linux 2.5的内核引入了一种新的设备模型,目的是对计算机上的所有设备进行统一的管理。

 

它包含以下基础结构:

 

类型

说明

设备Devices

 

设备是此模型中最基本的类型,以设备本身的连接按层次组织

设备驱动Device Drivers

 

在一个系统中安装多个相同设备,只需要一份驱动程序的支持

总线类型Bus Types

 

在整个总线级别对此总线上连接的所有设备进行管理

设备类别Device Classes

 

这是按照功能进行分类组织的设备层次树;如 USB 接口和 PS/2 接口的鼠标都是输入设备,都会出现在 /sys/class/input/ 

Linux通过以上模型把实现设备的统一管理,使驱动和设备自动的匹配。

2 sysfs文件系统


sysfs是一种基于内存的虚拟文件系统,它提供目录、属性文件、链接文件等,让用户空间能便捷地访问kernel的设备信息。

在内部实现上,sysfskobject数据结构为最小的粒度,进而封装成ksetsubsystembus_typeclass等模型来组织设备间的拓扑关系。

2.1sysfs顶层目录


/sys的顶层目录结构如下:

 

/sys 下的子目录

所包含的内容

/sys/devices

这是内核对系统中所有设备的分层次表达模型,也是 /sys 文件系统管理设备的最重要的目录结构,下文会对它的内部结构作进一步分析;

/sys/dev

这个目录下维护一个按字符设备和块设备的主次号码(major:minor)链接到真实的设备(/sys/devices)的符号链接文件,它是在内核 2.6.26 首次引入;

/sys/bus

这是内核设备按总线类型分层放置的目录结构, devices 中的所有设备都是连接于某种总线之下,在这里的每一种具体总线之下可以找到每一个具体设备的符号链接,它也是构成 Linux 统一设备模型的一部分;

/sys/class

这是按照设备功能分类的设备模型,如系统所有输入设备都会出现在 /sys/class/input 之下,而不论它们是以何种总线连接到系统。它也是构成 Linux 统一设备模型的一部分;

/sys/block

这里是系统中当前所有的块设备所在,按照功能来说放置在 /sys/class 之下会更合适,但只是由于历史遗留因素而一直存在于 /sys/block, 但从 2.6.22 开始就已标记为过时,只有在打开了 CONFIG_SYSFS_DEPRECATED 配置下编译才会有这个目录的存在,并且在 2.6.26 内核中已正式移到 /sys/class

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值