struct cdev
有struct kobject
成员很奇怪,有没有人知道原因?
答案 0 :(得分:2)
当kobjects嵌入其他结构中时,结构会接收kobject提供的标准化功能。最重要的是,结构的嵌入式kobject现在使结构成为对象层次结构的一部分。例如,cdev
结构可通过父指针cdev->kobj.parent
和列表cdev->kobj.entry
答案 1 :(得分:2)
Sysfs
是一个虚拟文件系统,它以分层模式描述系统可用的设备。这是通过使用struct kobj
完成的。
struct kobject {
char *k_name;
char name[KOBJ_NAME_LEN];
struct kref kref;
struct list_head entry;
struct kobject *parent;
struct kset *kset;
struct kobj_type *ktype;
struct dentry *dentry;
};
对于任何驱动程序,需要将设备属性导出到sysfs
如果我们考虑像i2c_client
spi_device
(spi客户端)。我们在成员struct dev
中有kobj将驱动程序属性导出到用户空间虚拟文件系统(Sysfs
)。 Kobj
结构成员处理所有操作,包括引用设备编号(主要/次要)和涉及打开,读/写,关闭等设备的文件操作。
在您的情况下cdev_init
& cdev_add
将在内部使用kobj执行上述操作。