Kobject & Kset

本文介绍了Linux内核中的Sysfs文件系统,它将设备和总线组织为文件结构以便用户空间访问。核心结构Kobject实现了对象管理,与文件系统紧密相关,Kobject的操作包括注册、注销等。Kset是相同类型Kobject的集合,用于管理对象的集合。此外,文章还涉及到热插拔事件的处理以及Kobject相关操作集合的功能。
摘要由CSDN通过智能技术生成

Sysfs文件系统

  Linux 2.6内核引入了sysfs文件系统。sysfs被看成是与proc同类别的文件系统。sysfs把连接在系统上的设备和总线组织成分级的文件,使其从用户空间可以访问到。Sysfs被加载在/sys目录下,它的子目录包括:

  • Block:在系统中发现的每个块设备在该目录下对应一个子目录。每个子目录中又包含一些属性文件,它们描述了这个块设备的各方面属性,如设备大小(loop块设备是使用文件来模拟的)。
  • Bus:在内核中注册的每条总线在该目录下对应一个子目录,如idepciscsiusbpcmcia,其中每个总线目录内又包含两个子目录:devicesdriversdevices目录包含了在整个系统中发现的属于该总线类型的设备,drivers目录包含了注册到该总线的所有驱动。
  • Class:将设备按照功能进行的分类,如/sys/class/net目录下包含了所有网络接口。
  • Devices:包含系统所有的设备。
  • Kernel:内核中的配置参数。
  • Module:系统中所有模块的信息。
  • Firmware:系统中的固件。
  • Fs:描述系统中的文件系统。
  • Power:系统中电源选项。

Kobject

  Kobject实现了基本的面向对象管理机制,是构成Linux 2.6设备模型的核心结构。它与sysfs文件系统紧密相连,在内核中注册的每个kobject对象对应sysfs文件系统中的一个目录。kobject/sys目录下创建目录,kobject充当父类角色。
  类似于C++中的基类,Kobject常被嵌入于其他类型(即容器)中,如busdevicesdrivers都是典型的容器。这些容器通过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 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值