当前位置: 技术问答>linux和unix
probe函数何时被调用,大家指教
来源: 互联网 发布时间:2016-05-09
本文导语: 看了oss驱动,里面涉及到probe函数,看probe函数里完成了很多初始化的工作,但是并没有在module_init(audio_aic33_init);的audio_aic33_init这个初始化函数里被调用,请问这个probe函数什么时候执行,驱动加载的过程是怎么样的...
看了oss驱动,里面涉及到probe函数,看probe函数里完成了很多初始化的工作,但是并没有在module_init(audio_aic33_init);的audio_aic33_init这个初始化函数里被调用,请问这个probe函数什么时候执行,驱动加载的过程是怎么样的?
|
我来大概说说,不过还是要结合你自己的代码来看(你应该先熟悉下内核的驱动架构模型,然后看这些就相对容易点):
路径1:
audio_aic33_init()->audio_register_codec()->driver_register()->driver_attach()->driver_probe_device()->drv->probe()
依据这条调用路径,最终调到了struct device_driver * drv的成员函数drv->probe();此probe函数是什么呢? 接着看:
路径2:
audio_aic33_init()->audio_register_codec()->driver_register()中,driver_register()的参数是一个struct device_driver结构类型!通常会在文件中定义一个以该结构为类型的全局变量,并对它的每个filed赋值,类似如下:
static struct device_driver xxx_audio_driver = {
.name = XXX_AUDIO_NAME,
.bus = &platform_bus_type,
.probe = audio_probe,
.remove = audio_remove,
.suspend = audio_suspend,
.resume = audio_resume,
.shutdown = audio_shutdown,
};
所以路径1中的drv->probe()其实就是这里赋给probe的函数audio_probe();
另外,和函数audio_aic33_init()在同一个文件中的一般还有一个名如xxx_aic33_probe()的函数,该函数又是在哪里被调用的呢? 该函数是在前面的drv->probe()[即:audio_probe()]中被调用的,详情,自己看代码!!!!!!
Good Luck!
路径1:
audio_aic33_init()->audio_register_codec()->driver_register()->driver_attach()->driver_probe_device()->drv->probe()
依据这条调用路径,最终调到了struct device_driver * drv的成员函数drv->probe();此probe函数是什么呢? 接着看:
路径2:
audio_aic33_init()->audio_register_codec()->driver_register()中,driver_register()的参数是一个struct device_driver结构类型!通常会在文件中定义一个以该结构为类型的全局变量,并对它的每个filed赋值,类似如下:
static struct device_driver xxx_audio_driver = {
.name = XXX_AUDIO_NAME,
.bus = &platform_bus_type,
.probe = audio_probe,
.remove = audio_remove,
.suspend = audio_suspend,
.resume = audio_resume,
.shutdown = audio_shutdown,
};
所以路径1中的drv->probe()其实就是这里赋给probe的函数audio_probe();
另外,和函数audio_aic33_init()在同一个文件中的一般还有一个名如xxx_aic33_probe()的函数,该函数又是在哪里被调用的呢? 该函数是在前面的drv->probe()[即:audio_probe()]中被调用的,详情,自己看代码!!!!!!
Good Luck!
|
先要去注册,然后系统发现新设备就会去调用了
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。