2013-03-12 55 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代碼。