1. sysyfs展示了linux设备模型,sysfs中显示的每一个对象都对应一个kobject,但反过来不成立,每一个kobject并不一定出现在sysfs中,但kset会。使用了kobject_add函数添加某个kset中的kobject会在sysfs中显示为一个目录,其属性为目录中的文件。
2. kobject的作用为嵌入其他对象(如设备等)的结构体中,将其链接到设备模型中,并维护其生命周期(通过引用计数)。
3. kobject的存在需要创建它的模块的存在,因此:
4. kobject的release函数:
5.
6.
7.
8.
9.
10.
11.
12.
13. 总线:
14.
对于总线这个特殊的设备来说,除了要注册总线,还要注册它自己这个设备本身:
lddbus导出的注册接口如下?
sculld.h:
57 struct sculld_dev {
58 void **data;
59 struct sculld_dev *next; /* next listitem */
60 int vmas; /* active mappings */
61 int order; /* the current allocation order */
62 int qset; /* the current array size */
63 size_t size; /* 32-bit will suffice */
64 struct semaphore sem; /* Mutual exclusion */
65 struct cdev cdev;
66 char devname[20];
67 struct ldd_device ldev;
68 };
15. 驱动程序