linux内核源码分析之sysfs文件系统(一)

目录

sysfs概述

使用 sysfs

sysfs文件目录

实例


1、sysfs概述

sysfs是一个面向用户空间导出内核对象的文件系统,它不仅提供了察看内核内部数据结构的能力,还可以修改这些数据结构。即用于导出内核对象(kobject)的文件系统。

sysfs数据项来源于内核对象(kobject),而内核对象的层次化组织直接反应了sysfs的目录布局。

sysfs 始终与 kobject 的底层结构紧密相关

与proc区别,新设计的内核机制应该尽量使用 sysfs 机制,而将 proc 保留给纯净的“进程文件系统”

2、使用 sysfs

只要内核配置中定义了 CONFIG_SYSFS ,sysfs 总是被编译进内核。可通过以下命令挂载它:

    mount -t sysfs sysfs /sys

3、sysfs文件目录

总线、设备、驱动程序和类是使用kobject机制的主要内核对象,因而占据了sysfs中几乎所有的数据项。查看系统中sys目录

(base) root@ubuntu:/sys# ls -l
total 0
drwxr-xr-x   2 root root 0 Mar 20 02:18 block
drwxr-xr-x  45 root root 0 Mar 20 02:18 bus
drwxr-xr-x  70 root root 0 Mar 20 02:18 class
drwxr-xr-x   4 root root 0 Mar 20 02:18 dev
drwxr-xr-x  16 root root 0 Mar 20 02:18 devices
drwxr-xr-x   5 root root 0 Mar 20 02:18 firmware
drwxr-xr-x  10 root root 0 Mar 20 02:18 fs
drwxr-xr-x   2 root root 0 Mar 26 00:39 hypervisor
drwxr-xr-x  15 root root 0 Mar 20 02:18 kernel
drwxr-xr-x 178 root root 0 Mar 20 02:18 module
drwxr-xr-x   3 root root 0 Mar 20 02:18 power

  • devices/ 包含了一个设备树的文件系统表示。他直接映射了内部的内核设备树,反映了设备的层次结构。
  • bus/ 包含了内核中各种总线类型的平面目录布局。每个总线目录包含两个子目录:devices/与 drivers/

        devices/ 包含了系统中出现的每个设备的符号链接,他们指向 root/ 下的设备目录。

        drivers/ 包含了每个已为特定总线上的设备而挂载的驱动程序的目录(这里假定驱动没有跨越多个总线类型)。

  • fs/ 包含了一个为文件系统设立的目录。现在每个想要导出属性的文件系统必须在 fs/ 下创建自己的层次结构。
  • dev/ 包含两个子目录: char/ 和 block/。在这两个子目录中,有以<major>:<minor> 格式命名的符号链接。这些符号链接指向 sysfs 目录中相应的设备。/sys/dev 提供一个通过一个 stat(2) 操作结果,查找设备 sysfs 接口快捷的方法。

4、实例(GPIO)

内核驱动向用户提供的接口,以GPIO为例,在用户态直接操作gpio

#导出
echo 9 > /sys/class/gpio/export

#设置方向
echo out > /sys/class/gpio/gpio9/direction

#拉高拉低
echo 0 > /sys/class/gpio/gpio9/value


参考:

 内核源码

《深入理解linux内核》
《Linux内核深度解析》

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

为了维护世界和平_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值