作者vtr198172 (43米的深海)
看板LinuxDev
標題[問題] 關於driver的一段程式
時間Tue Jun 30 11:08:50 2009
第一個問題是:
最近在看kernel下的程式,有一行不甚了解,就是下列紅色註記if(drv->probe)這裡,
想請教大家一下,它這段code的意思是:
drv是platform_driver的結構,如果它去存取probe指標函式時,
成功就執行 drv->driver.probe = platform_drv_probe; 這段code 嗎?
那成功是代表什麼意思?
第二個問題是: 下面這個struct裡包含有probe和remove的函式指標,
為什麼它們前面都要加一點呢?
static struct platform_driver davincifb_driver = {
.probe = davincifb_probe,
.remove = davincifb_remove,
.driver = {
.name = MODULE_NAME,
.owner = THIS_MODULE,
},
};
struct platform_driver {
int (*probe)(struct platform_device *);
........以下省略
};
static int platform_drv_probe(struct device *_dev){
struct platform_driver *drv = to_platform_driver(_dev->driver);
struct platform_device *dev = to_platform_device(_dev);
return drv->probe(dev);
}
int platform_driver_register(struct platform_driver *drv)
{
drv->driver.bus = &platform_bus_type;
if (drv->probe)
drv->driver.probe = platform_drv_probe;
.......以下省略
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.22.20.210
推 askacis:加那一點的寫法是gcc的擴充語法...應該啦XD 06/30 13:07
→ james732:在C++板的#1A9osaTI有回覆 那是C99的標準語法 06/30 15:37
→ vtr198172:沒錯 07/03 17:36
→ nicot:pointer function 07/10 09:43