看板 LinuxDev 關於我們 聯絡資訊
第一個問題是: 最近在看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