发布网友 发布时间:2024-03-09 13:39
共3个回答
热心网友 时间:2024-03-12 02:50
去编程吧提问吧,热心网友 时间:2024-03-12 02:46
kobject 在 字符设备中的作用,这里有参考网页链接
cdev为何在lookup时不直接返回cdev而却是kobject
我猜,大概是因为 这是内核中惯用的手段.
返回了该层认为的最核心成员部分.然后根据 container_of 来得到外围结构体变量的地址.
我查到内核(4.14.8)用到 kobj_lookup 这个函数的 只有两处
1处 在 字符设备(fs/char_dev.c),2处在块设备(block/genhd.c).
你的问题是为什么不能返回 一个 类型为 struct cdev *的指针.在1处当然可以,在2处就不行了,在2处需要返回一个 struct gendisk * 的指针.
那么你或许说,干脆返回一个void * 好了,当然可以.
但是内核更希望返回更核心的东西,比如比 struct cdev更核心的结构体就是struct kobject.
3.kmap函数时kobj设置名字有何意义?
kobj_map中 没有 设置 name 之类的.
热心网友 时间:2024-03-12 02:46
cobject是基本单元,这部分你可以不管,因为都相当于是封装好的,你只要知道cdev是字符类的设备就可以,如果你要深究可以看更原始的代码和内核一步步找