2013-03-12 82 views
1

我的问题是关于linux设备模型。我做了一些挖掘自己的源代码,发现设备示范工程各地的许多结构外面有些是:Linux内核设备型号 - 哪些设备正在关注它?

  1. 结构设备
  2. 结构的device_driver
  3. 结构bus_type
  4. 有更多与电源管理有关。

但是,当我看到在Linux内核中实现的字符驱动程序(或者如果我实现自己的字符驱动程序),Linux内核只实现“结构设备”,所有其他结构只是NULL。我通过一些调试和友好的邻居API printk()检查了这一点。

所以我的问题是为什么字符驱动程序不完全遵循设备模型?

另外哪些驱动程序完全遵循linux设备模型?

回答

0

Linux设备模型使用kobject作为它的基础,它起到粘合剂的作用,可以将它保持在一起。

您提到的结构来自kobject上方的图层。因此,我们可以说,kobject是你将(几乎)从来没有遇到但仍然嵌入到任何地方的东西。

和CHAR驱动程序是没有任何借口:

struct cdev { 
struct kobject kobj; 
struct module *owner; 
const struct file_operations *ops; 
struct list_head list; 
dev_t dev; 
unsigned int count; 
}; 

所有司机都下设备型号即使没有你知道的,因此字符驱动也不例外这里。

看看cdev_add()的执行情况,你会得到你的答案。

我建议你通过这个article并再次挖掘LDM代码。