[問題] 關於driver的一段程式
第一個問題是:
最近在看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);
}
device_driver
struct platform_driver {
int (*probe)(struct platform_device *);
.........以下省略
};
int platform_driver_register(struct platform_driver *drv)
{
drv->driver.bus = &platform_bus_type;
if (drv->probe)
drv->driver.probe = platform_drv_probe;
.......
主程式中有一段程式碼是呼叫上面這函式,如下
platform_driver_register( &davincifb_driver );
所以,以我的理解,這段if(drv->probe)應該會執行davincifb_probe 這隻程式.
不知道對不對....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.22.20.210
推
06/30 15:29, , 1F
06/30 15:29, 1F
→
06/30 15:30, , 2F
06/30 15:30, 2F
→
06/30 15:31, , 3F
06/30 15:31, 3F
→
06/30 15:31, , 4F
06/30 15:31, 4F
→
06/30 15:33, , 5F
06/30 15:33, 5F
→
06/30 15:33, , 6F
06/30 15:33, 6F
→
06/30 16:41, , 7F
06/30 16:41, 7F
→
06/30 16:43, , 8F
06/30 16:43, 8F
→
06/30 16:44, , 9F
06/30 16:44, 9F
→
06/30 17:06, , 10F
06/30 17:06, 10F
→
06/30 17:07, , 11F
06/30 17:07, 11F
→
06/30 17:07, , 12F
06/30 17:07, 12F
推
07/01 00:14, , 13F
07/01 00:14, 13F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章