首页 理论教育 Linux驱动开发sysfs

Linux驱动开发sysfs

时间:2023-10-19 理论教育 版权反馈
【摘要】:sysfs是一个特殊的文件系统,类似于/proc。sysfs不仅像/proc一样允许用户空间访问内核的数据,而且以更结构化的方式向用户提供内核数据信息。系统中的每一个kobject对应着sysfs中的一个目录,而每一个sysfs中的目录代表一个kobject对象,每个sysfs文件代表对应的kobject的属性。sysfs文件系统非常清晰地展示了设备驱动程序模型中各组件的层次关系。

Linux驱动开发sysfs

sysfs是一个特殊的文件系统,类似于/proc。sysfs不仅像/proc一样允许用户空间访问内核的数据,而且以更结构化的方式向用户提供内核数据信息。sysfs是一种内存文件系统,它与kobject关系非常密切。系统中的每一个kobject对应着sysfs中的一个目录,而每一个sysfs中的目录代表一个kobject对象,每个sysfs文件代表对应的kobject的属性。

sysfs文件系统非常清晰地展示了设备驱动程序模型中各组件的层次关系。其顶级目录包括block、device、bus、drivers、class、power、firmware等。

[root@urbetter sys]#ls

block class devices fs module

bus dev firmware kernel power

/sys的根目录见表2-1。

sysfs文件系统最基本的函数包括:

2-1 sysfs文件系统的目录

978-7-111-56706-6-Chapter02-17.jpg

978-7-111-56706-6-Chapter02-18.jpg

sysfs文件系统一般是自动加载到/sys下的,也可以通过下面的命令手工加载:(www.xing528.com)

mount-t sysfs sysfs/sys

device_create函数用于在/sysfs文件系统中创建一个指定设备号的设备:

978-7-111-56706-6-Chapter02-19.jpg

例2.1 自动创建设备节点

本例演示如何在驱动中创建/sys类节点与/dev设备节点。先要在/sys/class目录中创建节点,发出内核事件,才能触发udev或者mdev等设备事件处理程序来增删设备节点。

本例代码见\samples\2model\2-1module_devicecreate。核心代码如下:

978-7-111-56706-6-Chapter02-20.jpg

本例运行结果如下:

978-7-111-56706-6-Chapter02-21.jpg

可见/sys/class以及/dev下面均创建了设备文件。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈