1

我的问题是关于 linux 设备型号。我在源代码中进行了一些挖掘,发现设备模型适用于许多结构,其中一些是:

  1. 结构设备
  2. 结构设备驱动程序
  3. 结构总线类型
  4. 还有更多与电源管理相关的内容。

但是当我查看在 linux 内核中实现的 char 驱动程序(或者如果我实现自己的 char 驱动程序)时,linux 内核只实现了“struct device”,所有其他结构都只是 NULL。我已经通过一些调试和友好的邻域 API printk() 对此进行了检查。

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

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

4

1 回答 1

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()你会得到你的答案。

我建议您阅读这篇文章并再次深入了解 LDM 代码。

于 2013-12-12T04:34:21.483 回答