kobject对象被关联到一种特殊的类型,即ktype。ktype由kobj_type结构体表示,定义于 <linux/kobject.h>中:
struct kobj_type {
void (*release)(struct kobject *kobj);
struct sysfs_ops *sysfs_ops;
struct attribute **default_attrs;
};
- release指针 指向在kobject引用计数减至0时要被调用的析构函数。该函数负责释放 所有kobject使用的内存和其它相关清理工作。
- ktype
是为了描述一族kobject所具有的普遍特性。因此,不再需要每个kobject都分别定 义自己的特性,而是将这些普遍的特性在ktype结构体中一次定义,然后所有“同类”的 kobject都能共享一样的特性。
指向sysfs操作表和一个sysfs文件系统缺省属性列表。Sysfs操作表包括两 个函数store()和show()。当用户态读取属性时,show()函数被调用,该函数编码指定属 性值存入buffer中返回给用户态;而store()函数用于存储用户态传入的属性值。
指向一个attribute结构体数组。这些结构体定义了该kobject相关的默认 属性。属性给定了对象的特征,如果该kobject被导出到sysfs中,那么这些属性都将相应 的作为文件而导出。其定义如下:
struct attribute {
const char *name;
struct module *owner;
mode_t mode;
};
它以文件的形式输出到sysfs的目录当中。在kobject对应的目录下面。文件 名就是name。文件读写的方法对应于kobj_type中的sysfs_ops。
相关推荐
kobject & kset实验 从/sys目录的构成可知整个sysfs文件系统盘根错节,此处补充一个向系统添加kobject & kset对象的实验,帮助理解该过程(但不会过分深入细节)
关于kset_create_and_add和kobject_init_and_add的流程图解释及关系总结。
LDD3学习笔记设备模型之底层实现(kobject,kset)[汇编].pdf
一个kobject结构如下图的kobject 类型部分,而一个kset结构如下图的kset 类型部分,一个kobject加入一个kset,主要是kobject结
Linux设备模型kobject与kset之间的关系汇总
linux kobject kset测试代码,以及根据kobject,kset写了符合linux设备驱动模型的ymj总线
linux 中 设备模型 中bus device driver kobject kset 集合
sysfs那些事设备模型,详细介绍设备模型之间关系包括device、driver、class、kobject、kset、subsystem等
解析kobject、kobj_type和kset.jpg
解析kobject、kobj_type和kset.drawio
Linux 设备模型详细分析,包含多个文档,对kobject、kset等进行了分析,并有实例分析。
最近看到linux的设备驱动模型,关于Kobject、Kset等还不是很清淅。看到了struct device_driver这个结构时,想到一个问题:它的初始化函数到底在哪里调用呢?以前搞PCI驱动时用pci驱动注册函数就可以调用它,搞s3c...
kset:驱动的骨架kobject的容器,体现设备驱动的层次关系kset_create_and_add()函数kset_create()函数/*注册消息发送接口
kobject、kset和子系统 低层sysfs操作 热插拔事件的产生 总线、设备和驱动程序 类 各环节的整合 热插拔 处理固件 快速索引 第十五章 内存映射和DMA Linux的内存管理 mmap设备操作 执行直接I/O访问 直接...
linux设备驱动模型 1、kobject原理与实例分析 2、kset原理与实例分析 3、bus(总线)原理与实例分析 4、device(设备)原理与实例分析 5、driver(驱动)原理与实例分析
kobject、kset和子系统 361 低层sysfs操作 368 热插拔事件的产生 372 总线、设备和驱动程序 374 类 384 各环节的整合 388 热插拔 394 处理固件 401 快速索引 403 第十五章 内存映射和DMA 408 Linux的内存...
里面包含了三个文件件,分别是 bus:实现了自己的一个最简单的总线, kset和kobject:通过调用内核提供的接口,了解bus的内部机制
linux内核4.7版本设备驱动介绍,包含如下模块:class、pci、platform、pinctrl、kset、kobject、bus、device、device_driver、i2c、tty、regmap、misc、spin_lock、inode、mutex、cdev、gpio_keys、usb