2014-01-09 42 views
0

我目前正在看sound/soc/imx中的機器驅動程序。 在初始化函數中,按此順序;平臺設備;爲什麼'alloc'和'add'?

platform_driver_register(...); 
... 
platform_device_alloc(..., ...); 
platform_set_drvdata(..., ...); 
platform_device_add(...); 
... 

對於平臺設備,爲什麼需要'alloc'然後'add'?
platform_device_alloc()表示「創建平臺設備」;和platform_device_add()意味着「添加平臺設備到設備層次」,所以我只是好奇知道,你爲什麼需要這兩個?

回答

3

platform_device_alloc函數僅爲platform_device結構執行內存分配,並使用外部參數初始化它的變量。

http://lxr.free-electrons.com/source/drivers/base/platform.c#L197

的platform_device_add功能執行所有要註冊的設備驅動程序層次結構中所使用的設備所需的任務。

http://lxr.free-electrons.com/source/drivers/base/platform.c#L277

的兩個功能分離的目的,以允許駕駛員顯影劑顆粒級配置如果需要的話。

這兩個操作結合在platform_device_register_simple和其他相關函數中,這些函數既執行內存分配,也執行內部的設備註冊。