[問題] 關於driver的一段程式

看板LinuxDev作者 (43米的深海)時間16年前 (2009/06/30 11:08), 編輯推噓1(103)
留言4則, 4人參與, 最新討論串1/1
第一個問題是: 最近在看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

06/30 13:07, , 1F
加那一點的寫法是gcc的擴充語法...應該啦XD
06/30 13:07, 1F

06/30 15:37, , 2F
在C++板的#1A9osaTI有回覆 那是C99的標準語法
06/30 15:37, 2F

07/03 17:36, , 3F
沒錯
07/03 17:36, 3F

07/10 09:43, , 4F
pointer function
07/10 09:43, 4F
文章代碼(AID): #1AIO73mQ (LinuxDev)
文章代碼(AID): #1AIO73mQ (LinuxDev)