文章目录
Sysfs文件系统
Linux 2.6
内核引入了sysfs
文件系统。sysfs
被看成是与proc
同类别的文件系统。sysfs
把连接在系统上的设备和总线组织成分级的文件,使其从用户空间可以访问到。Sysfs
被加载在/sys
目录下,它的子目录包括:
Block
:在系统中发现的每个块设备在该目录下对应一个子目录。每个子目录中又包含一些属性文件,它们描述了这个块设备的各方面属性,如设备大小(loop
块设备是使用文件来模拟的)。Bus
:在内核中注册的每条总线在该目录下对应一个子目录,如ide
、pci
、scsi
、usb
和pcmcia
,其中每个总线目录内又包含两个子目录:devices
和drivers
。devices
目录包含了在整个系统中发现的属于该总线类型的设备,drivers
目录包含了注册到该总线的所有驱动。Class
:将设备按照功能进行的分类,如/sys/class/net
目录下包含了所有网络接口。Devices
:包含系统所有的设备。Kernel
:内核中的配置参数。Module
:系统中所有模块的信息。Firmware
:系统中的固件。Fs
:描述系统中的文件系统。Power
:系统中电源选项。
Kobject
Kobject
实现了基本的面向对象管理机制,是构成Linux 2.6
设备模型的核心结构。它与sysfs
文件系统紧密相连,在内核中注册的每个kobject
对象对应sysfs
文件系统中的一个目录。kobject
在/sys
目录下创建目录,kobject
充当父类角色。
类似于C++
中的基类,Kobject
常被嵌入于其他类型(即容器)中,如bus
、devices
和drivers
都是典型的容器。这些容器通过kobject
连接起来,形成了一个树状结构。kobject_init_and_add(&kobj, &type, NULL, "kobject_test")
,NULL
表明在/sys
下创建文件夹。
struct kobject {
const char *name;
struct list_head entry;
struct kobject *parent; /* 指向父对象 */
struct kset *kset;
struct kobj_type *ktype;
struct sysfs_dirent *sd;
struct